質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

1回答

273閲覧

IndexError: too many indices for array

taiyo2017

総合スコア170

1グッド

1クリップ

投稿2018/11/09 21:43

TensorFlowとtflearnを使い、ネットワークを構築しています。
IndexError: too many indices for array とエラーがでました。
Tracebackには、

--------------------------------- Run id: 3OTXAP Log directory: /tmp/tflearn_logs/ Exception in thread Thread-3: Traceback (most recent call last): File "/usr/local/Cellar/python@2/2.7.15/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 801, in __bootstrap_inner self.run() File "/usr/local/Cellar/python@2/2.7.15/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 754, in run self.__target(*self.__args, **self.__kwargs) File "/Users/xxx/anaconda/xxx/lib/python2.7/site-packages/tflearn/data_flow.py", line 187, in fill_feed_dict_queue data = self.retrieve_data(batch_ids) File "/Users/xxx/anaconda/xxx/lib/python2.7/site-packages/tflearn/data_flow.py", line 222, in retrieve_data utils.slice_array(self.feed_dict[key], batch_ids) File "/Users/xxx/anaconda/xxx/lib/python2.7/site-packages/tflearn/utils.py", line 187, in slice_array return X[start] IndexError: too many indices for array --------------------------------- Training samples: 3 Validation samples: 1 --

と出ました。
コードには、

import tensorflow as tf import tflearn from tflearn.layers.core import input_data,dropout,fully_connected from tflearn.layers.conv import conv_2d, max_pool_2d from tflearn.layers.normalization import local_response_normalization from tflearn.layers.estimator import regression tf.reset_default_graph() net = input_data(shape=[32, 4, 104, 1]) net = conv_3d(net, 4, 16, activation='relu') net = max_pool_3d(net, 1) net = tflearn.activations.relu(net) net = dropout(net, 0.5) net = tflearn.fully_connected(net, 10, activation='softmax') net = tflearn.regression(net, optimizer='adam', learning_rate=0.5, loss='categorical_crossentropy') model = tflearn.DNN(net) model.fit(trainDataSet, trainLabel, n_epoch=100, batch_size=32, validation_set=0.1, show_metric=True) pred = np.array(model.predict(testDataSet).argmax(axis=1)) label = testLabel.argmax(axis=1) accuracy = np.mean(pred == label, axis=0) print(accuracy)

と書きました。

model = tflearn.DNN(net)

の行まではうまくいっています。

trainDataSet.shape

とすると(4, 104)が、

trainLabel.shape

とすると()が、取れます。trainLabelには0か1の値が入っています。
何が問題なのかさっぱりわかりません。どう修正したらいいでしょうか?

DrqYuto👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

"Deep Neural Network Model"のfitメソッドは、第1引数に訓練(train)モデルに与えるデータ(配列、配列のリスト、辞書(dict)のいずれか)、第2引数に訓練(train)モデルに与えるターゲット(配列、配列のリスト、辞書(dict)のいずれか)を与えます。

["Deep Neural Network Model"のメソッドなどについては、Deep Neural Network Modelに記述があります。]

model.fit(trainDataSet, trainLabel, n_epoch=100, batch_size=32, validation_set=0.1, show_metric=True)

ところが、質問のプログラムの上記fitメソッドの第2引数 trainLabelは、配列ではなく単なる変数です。それは、

trainLabelには0か1の値が入っています。

との説明から判ります。

====
「IndexError: too many indices for array とエラー」が出たのは、配列か辞書でなくてはならない第2引数に単純変数(次元0)であるtrainLabelを与えたため、fitメソッドの中でtrainLabelの要素にアクセスしようとして(traninLabel[n]のようなコードが使われたところで発生したと考えられます。

このエラーは、fitメソッドの第2引数を、配列、配列のリスト、辞書(dict)のいずれかにすれば出なくなるはずです。

投稿2018/11/10 04:49

coco_bauer

総合スコア6915

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問