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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

269閲覧

list index out of range

reiya_123

総合スコア57

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/04/11 09:30

編集2022/04/12 11:15

前提・実現したいこと

ubuntu20.04
python3.8
tensorflow2.4を使用しています

現在、画像からキャプションを生成するデータセットを作成しています。
DATASET_DIRに8枚の画像があり、TOKEN_FILEに8×5の文が格納されています。ですが、下記のようなimage_idとimage_textがあってないようなエラーがでてしまっています。これはどこを直せばいいのでしょうか。
申し訳ございませんが、ご教示いただけないでしょうか。
よろしくお願い致します。

発生している問題・エラーメッセージ

80%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 36/45 [00:04<00:01, 8.43it/s]['7.jpg#1', 'A', 'A', 'A.'] 82%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 37/45 [00:04<00:00, 8.38it/s]['7.jpg#2', 'A', 'A', 'A.'] 84%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 38/45 [00:04<00:00, 8.39it/s]['7.jpg#3', 'A', 'A', 'A.'] 87%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 39/45 [00:04<00:00, 8.41it/s]['7.jpg#4', 'A', 'A', 'A.'] 89%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 40/45 [00:04<00:00, 8.21it/s][] 89%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 40/45 [00:04<00:00, 8.46it/s] Traceback (most recent call last): File "/home/limlab/deep_learning/keras_imagecaption/japa_p.py", line 406, in <module> image_texts_dict = tp.MakeTextsDict() File "/home/limlab/deep_learning/keras_imagecaption/japa_p.py", line 198, in MakeTextsDict image_id, image_text = self.GetIDAndText(token) File "/home/limlab/deep_learning/keras_imagecaption/japa_p.py", line 184, in GetIDAndText image_id, image_text = token[0], token[1:] IndexError: list index out of range

該当のソースコード

DATASET_DIR = "/deep_learning/keras_imagecaption/dataset/image" TOKEN_FILE = "/deep_learning/keras_imagecaption/dataset/Flickr8k.token.txt" def GetIDAndText(self, token): """ ・空白で分割する。 ・最初のトークンをID、残りをテキストとして取得する。 ・画像IDからファイル名だけ取り出す。 ・テキスト内の単語が分割されているので、1つのテキストに結合する。 """ token = token.split() image_id, image_text = token[0], token[1:] image_id = image_id.split('.')[0] image_text = ' '.join(image_text) return image_id, image_text

TOKEN_FILE

0.jpg#0 A A A.
0.jpg#1 A A A.
0.jpg#2 A A A.
0.jpg#3 A A A.
0.jpg#4 A A A.
1.jpg#0 A A A.
1.jpg#1 A A A.
1.jpg#2 A A A.
1.jpg#3 A A A.
1.jpg#4 A A A.
2.jpg#0 A A A.
2.jpg#1 A A A.
2.jpg#2 A A A.
2.jpg#3 A A A.
2.jpg#4 A A A.
3.jpg#0 A A A.
3.jpg#1 A A A.
3.jpg#2 A A A.
3.jpg#3 A A A.
3.jpg#4 A A A.
4.jpg#0 A A A.
4.jpg#1 A A A.
4.jpg#2 A A A.
4.jpg#3 A A A.
4.jpg#4 A A A.
5.jpg#0 A A A.
5.jpg#1 A A A.
5.jpg#2 A A A.
5.jpg#3 A A A.
5.jpg#4 A A A.
6.jpg#0 A A A.
6.jpg#1 A A A.
6.jpg#2 A A A.
6.jpg#3 A A A.
6.jpg#4 A A A.
7.jpg#0 A A A.
7.jpg#1 A A A.
7.jpg#2 A A A.
7.jpg#3 A A A.
7.jpg#4 A A A.

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

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

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

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

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

hoshi-takanori

2022/04/11 18:23

GetIDAndText の引数 token が "" (空文字列) のとき、token = token.split() は [] (空リスト) になり、次の token[0] で IndexError: list index out of range になります。 GetIDAndText を呼び出す方のコードに問題がありそうですね。(または TOKEN_FILE に空行があるとか。)
reiya_123

2022/04/11 23:51 編集

ご返信ありがとうございます。 確かに空行がありました。 そこで、空行をなくしたところ、40/41となってしまいます。 申し訳ございませんがご教示いただけないでしょうか。 よろしくお願いしたします。 (https://qiita.com/yutaoba/items/6eb0e12ba0d169a480df)こちらのサイトを参考にしています 1 Physical GPUs, 1 Logical GPUs 98%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 40/41 [00:00<00:00, 147039.58it/s] Traceback (most recent call last): File "/home/limlab/deep_learning/keras_imagecaption/japa_p3.py", line 186, in GetIDAndText image_id, image_text = token[0], token[1:]
reiya_123

2022/04/12 02:15 編集

解決できました ありがとうございました。 ただ、別件で申し訳ございませんが前回も下記のエラーがでて質問させていただいたのですが この対処法をご教示いただけないでしょうか。よろしくお願い致します。 ValueError: Layer model expects 2 input(s), but it received 3 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, None) dtype=float32>, <tf.Tensor 'IteratorGetNext:1' shape=(None, None) dtype=int32>, <tf.Tensor 'IteratorGetNext:2' shape=(None, None) dtype=float32>] ーーーーーーーー import tensorflow as tf from tensorflow.python.keras.applications.vgg16 import VGG16, preprocess_input from tensorflow.python.keras.models import Model, load_model from tensorflow.python.keras.preprocessing.image import load_img, img_to_array from tensorflow.python.keras.preprocessing.text import Tokenizer from tensorflow.python.keras.preprocessing.sequence import pad_sequences #from tensorflow.python.keras.utils import to_categorical from tensorflow.python.keras.layers import Input, Dense, LSTM, Embedding, Dropout from tensorflow.python.keras.layers.merge import add tf.compat.v2.keras.utils.to_categoricalimport tensorflow as tf from tensorflow.python.keras.applications.vgg16 import VGG16, preprocess_input from tensorflow.python.keras.models import Model, load_model from tensorflow.python.keras.preprocessing.image import load_img, img_to_array from tensorflow.python.keras.preprocessing.text import Tokenizer from tensorflow.python.keras.preprocessing.sequence import pad_sequences #from tensorflow.python.keras.utils import to_categorical from tensorflow.python.keras.layers import Input, Dense, LSTM, Embedding, Dropout from tensorflow.python.keras.layers.merge import add tf.compat.v2.keras.utils.to_categorical
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問