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

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

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

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

Q&A

解決済

1回答

1006閲覧

IndexError: list index out of range

taiyo2017

総合スコア170

Python

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

0グッド

0クリップ

投稿2018/11/19 12:26

編集2018/11/19 12:28

IndexError: list index out of range
とエラーが出ました。
Tracebackには、

Run id: P0W5X0 Log directory: /tmp/tflearn_logs/ Exception in thread Thread-2: 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 201, in fill_batch_ids_queue ids = self.next_batch_ids() File "/Users/xxx/anaconda/xxx/lib/python2.7/site-packages/tflearn/data_flow.py", line 215, in next_batch_ids batch_start, batch_end = self.batches[self.batch_index] IndexError: list index out of range

と出ました。

# coding: utf-8 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=[None,20000, 4, 42]) net = conv_2d(net, 4, 16, activation='relu') net = max_pool_2d(net, 1) net = tflearn.activations.relu(net) net = dropout(net, 0.5) net = tflearn.fully_connected(net, 2, activation='softmax') net = tflearn.regression(net, optimizer='adam', learning_rate=0.5, loss='categorical_crossentropy') model = tflearn.DNN(net) model.fit(np.array(trainDataSet).reshape(1,20000, 4, 42), np.array(trainLabel), n_epoch=400, batch_size=32, validation_set=0.1, show_metric=True) pred = np.array(model.predict(np.array(testDataSet).reshape(1,20000, 4, 42)).argmax(axis=1)) label = np.array(testLabel).argmax(axis=0) accuracy = np.mean(pred == label, axis=0) print(accuracy)

とコードを書きました。なぜエラーが出るのでしょうか?どのようにコードを修正したら良いのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

np.array(trainDataSet).shapeがどのような値になるか教えてもらえませんか.

投稿2018/11/22 00:45

Hiroki013

総合スコア99

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

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

taiyo2017

2018/11/22 11:47

(20000, 4, 42) です
Hiroki013

2018/11/25 11:52

回答ありがとうございます。データの性質が詳しくわからないのですが、trainDataSetは(データ数、時間の長さ、特徴量)の内訳で格納されているデータの認識であっているでしょうか。それであれば、`input_data(shape=[None, 4, 42])`で良いと思います。ただ、`input_data`の入力を受けるレイヤーがconv2d、maxpool2dなので、conv1d、maxpool1dに変更したほうが良いと思います。
taiyo2017

2018/11/25 12:47

ありがとうございます。そのようにコードを実行すると、 ValueError: Cannot feed value of shape (40,) for Tensor u'TargetsData/Y:0', which has shape '(?, 2)' とエラーが出てしまいました。。。どうしたらいいですか?
Hiroki013

2018/11/26 00:45

このエラーは出力に関するものだと思います.np.array(trainLabel)のshapeと,出力はどのようなものでしょうか.
taiyo2017

2018/11/26 01:39

np.array(trainLabel)のshapeは(20000,) で、その中身は[0 0 1 ... 1 1 0] のような0か1が入っている配列です。
Hiroki013

2018/11/26 01:58

ありがとうございます.フレームワークの使い方次第の部分がありますが,学習させるためのデータはone-hot表現になっている必要があります.具体的には,([1, 0], [1, 0], [0, 1], .....)といった(20000, 2)の配列である必要があります.説明が上手くないので詳細は検索してほしいいのですが,作業としては難しくないとおもいます.trainLabelがfor文で各データを取得できるようであれば,以下のコードで変形してみると良いかもしれません. oh = [] vec = np.zeros((2)) for v in trainLabel: vec[v] = 1 oh.append(vec.copy()) vec[v] = 0 oh = np.array(oh) このohをnp.array(trainLabel)を入れている部分と差し替えると如何でしょうか.
taiyo2017

2018/11/26 02:38

ありがとうございます、できました!なぜ`input_data(shape=[None, 4, 42])` に変更すべきだったのでしょうか?
Hiroki013

2018/11/26 03:41

この書き方ですと(input_data(shape=[None,20000, 4, 42])),特徴が(20000, 4, 42)であり,そのデータが並んでいるということを意味しています.つまり,None以降は特徴量のshapeを用意する必要があります.今回は,(20000=データ数, 時間長, 特徴量)というデータを扱っていたので,shape=[None, 4, 42]が正しい書き方になった,というわけです.ご参考になれば.
taiyo2017

2018/11/26 04:37

なるほど、本当にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問