🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1629閲覧

pythonのエラー(配列について)

kasappi

総合スコア3

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/12/18 06:03

以下のようなcsvファイルをもちいてRNNの作成を行っています。データは1セットあたり99の時系列データと1つのラベルのセットで10セットあります。(学習用データとテスト用データで10個ずつ計20個)
イメージ説明

実現したいこと

99の時系列データの答えを1つのラベルとしてone-hot型で推定したいです。
### 実行したコード

# coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function import random import numpy as np import tensorflow as tf import csv from tensorflow.contrib import rnn # パラメーター N_CLASSES = 500 # クラス数 N_INPUTS = 1 # 1ステップに入力されるデータ数 N_STEPS = 10 # 学習ステップ数 LEN_SEQ = 99 # 系列長 N_NODES = 64 # ノード数 N_DATA = 10 # 各クラスの学習用データ数 N_TEST = 10 # テスト用データ数 BATCH_SIZE = 2 # バッチサイズ #データの準備 def get_mist1_data(): with open("ファイル名") as fp: reader1 = csv.reader(fp) data1 = [ e for e in reader1 ] data1 = np.array(data1).reshape(-1) data1 = data1.reshape(-1,100) x1 = data1[:,:99] t1 = data1[:,99].reshape(-1) return x1 , t1 def get_mist2_data(): with open("ファイル名") as fp: reader2 = csv.reader(fp) data2 = [ e for e in reader2 ] data2 = np.array(data2).reshape(-1) data2 = data2.reshape(-1,100) x2 = data2[:,:99] t2 = data2[:,99].reshape(-1) return x2 , t2 x_train, t_train = get_mist1_data() #学習用データセット x_test, t_test = get_mist2_data() #テスト用データセット # モデルの構築 x = tf.placeholder(tf.float32, [None, LEN_SEQ, N_INPUTS]) # 入力データ t = tf.placeholder(tf.int32, [None]) # 教師データ t_on_hot = tf.one_hot(t, depth=N_CLASSES, dtype=tf.float32) # 1-of-Kベクトル cell = rnn.BasicRNNCell(num_units=N_NODES, activation=tf.nn.tanh) # 中間層のセル # RNNに入力およびセル設定する outputs, states = tf.nn.dynamic_rnn(cell=cell, inputs=x, dtype=tf.float32, time_major=False) # [ミニバッチサイズ,系列長,出力数]→[系列長,ミニバッチサイズ,出力数] outputs = tf.transpose(outputs, perm=[1, 0, 2]) w = tf.Variable(tf.random_normal([N_NODES, N_CLASSES], stddev=0.01)) b = tf.Variable(tf.zeros([N_CLASSES])) logits = tf.matmul(outputs[-1], w) + b # 出力層 pred = tf.nn.softmax(logits) # ソフトマックス cross_entropy = tf.nn.softmax_cross_entropy_with_logits(labels=t_on_hot, logits=logits) loss = tf.reduce_mean(cross_entropy) # 誤差関数 train_step = tf.train.AdamOptimizer().minimize(loss) # 学習アルゴリズム correct_prediction = tf.equal(tf.argmax(pred,1), tf.argmax(t_on_hot,1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) # 精度 # 学習の実行 sess = tf.Session() sess.run(tf.global_variables_initializer()) i = 0 for _ in range(N_STEPS): cycle = int(N_DATA / BATCH_SIZE) begin = int(BATCH_SIZE * (i % cycle)) end = begin + BATCH_SIZE x_batch, t_batch = x_train[begin:end], t_train[begin:end] sess.run(train_step, feed_dict={x:x_batch, t:t_batch}) i += 1 if i % 2 == 0: loss_, acc_ = sess.run([loss, accuracy], feed_dict={x:x_batch,t:t_batch}) loss_test_, acc_test_ = sess.run([loss, accuracy], feed_dict={x:x_test,t:t_test}) print("[TRAIN] loss : %f, accuracy : %f" %(loss_, acc_)) print("[TEST loss : %f, accuracy : %f" %(loss_test_, acc_test_)) sess.close()

発生したエラー

以下のようなエラーが発生して困っています。
次元数が合っていないということだと思いますが、解決法がわからないので教えていただけますでしょうか。
cannot feed value of shape (2,99) for tensor 'placeholder:0', which has shape '(?, 99, 1)'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーが出ずに動く
RNNによるクラス分類
のコードを実行してから、下記を実行してみて、次元を確認してください

python

1print(x_train.shape) 2print(x_test.shape)

次に、質問にお書きになった自分のコードでも同様にして、次元を確認してください
違いますよね
サンプル数とか違うのだから、数値自体は違って当然ですが、次元は合わないといけません

下記も参考に
numpy.newaxisで配列に次元(ndim)を追加する方法

投稿2020/12/18 09:47

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問