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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

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

Python

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

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

1回答

1957閲覧

InvalidArgumentError: Graph execution error: が解決できません

退会済みユーザー

退会済みユーザー

総合スコア0

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

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

Python

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

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2023/07/26 13:57

実現したいこと

プログラミング初心者です。
Google Driveで自然言語処理でマルチラベル分類を試している最中なのですが、学習の際に「InvalidArgumentError: Graph execution error:」というエラーが出てきてしまい、改善できなくて困っております。

model.summaryまでは問題なく動くのですが、fit_generatorがどうしてもうまくいきません。
理解が浅く大変申し訳ないのですが、どうかご教授していただければ幸いです。
よろしくお願いいたします。

前提

model.fit_generator(generator('df_train.pickle', batch_size), steps_per_epoch=4932//batch_size, validation_data=generator('df_test.pickle', batch_size), validation_steps=1645//batch_size, callbacks=[hist], epochs=1)

上記のコードの部分のpickleには、
df_train.pickle→(4932,2)
df_test.pickle(1645,2)でデータフレームが格納されています。
また、データフレームの列の0番目は符号化した文章、1番目はマルチラベルが格納されています。

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

InvalidArgumentError Traceback (most recent call last) <ipython-input-38-2becdecf9c94> in <cell line: 134>() 133 134 if __name__ == "__main__": --> 135 train(True) 3 frames /usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name) 50 try: 51 ctx.ensure_initialized() ---> 52 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name, 53 inputs, attrs, num_outputs) 54 except core._NotOkStatusException as e: InvalidArgumentError: Graph execution error: Detected at node 'model_16/embedding_18/embedding_lookup' defined at (most recent call last): (省略) File "/usr/local/lib/python3.10/dist-packages/keras/utils/traceback_utils.py", line 96, in error_handler return fn(*args, **kwargs) File "/usr/local/lib/python3.10/dist-packages/keras/layers/core/embedding.py", line 272, in call out = tf.nn.embedding_lookup(self.embeddings, inputs) Node: 'model_16/embedding_18/embedding_lookup' indices[112,1] = 1723 is not in [0, 128) [[{{node model_16/embedding_18/embedding_lookup}}]] [Op:__inference_train_function_7121]

該当のソースコード

Python

1from keras.layers import Conv1D,Conv2D, BatchNormalization, Activation, Input,Flatten,MaxPooling1D 2from keras.layers import AveragePooling2D, GlobalAveragePooling2D, Dense, Embedding, Dropout 3from keras.models import Model 4from keras.callbacks import History 5from keras.optimizers import SGD 6import keras.backend as K 7 8import pandas as pd 9import numpy as np 10import pickle 11 12def create_network(): 13 max_length=128 14 embedding_size=128 15 filters=64 16 kernel_size = 3 17 18 input=Input(shape=(max_length)) 19 x=Embedding(max_length, embedding_size)(input) 20 21 x=Conv1D(filters,kernel_size, padding='same', activation='relu', strides=1)(x) 22 23 x=MaxPooling1D(pool_size=2)(x) 24 x=Flatten()(x) 25 26 x=Dense(50, activation="relu")(x) 27 x=Dropout(0.5)(x) 28 29 x=Dense(10, Activation('sigmoid'))(x) 30 31 return Model(input, x) 32 33 34# ジェネレーター 35def generator(df_path, batch_size): 36 with open(df_path, 'rb') as f: 37 df = pickle.load(f) 38 df = df.values 39 while True: 40 img_cahce, label_cache = [], [] 41 indices = np.arange(df.shape[0]) 42 np.random.shuffle(indices) 43 for i in indices: 44 img_cahce.append(df[i, 0]) #image 45 label_cache.append(df[i, 1]) #label 46 if len(img_cahce) == batch_size: 47 #X_batch = np.asarray(img_cahce, np.float32) / 255.0 48 #y_batch = np.asarray(label_cache, np.float32) 49 X_batch = np.asarray(img_cahce, np.float32) 50 y_batch = np.asarray(label_cache, np.float32) 51 img_cahce, label_cache = [], [] 52 yield X_batch, y_batch 53 54 55# 損失関数 56def categorical_loss(y_true, y_pred): 57 return K.categorical_crossentropy(y_true, y_pred) 58 59def binary_loss(y_true, y_pred): 60 bce = K.binary_crossentropy(y_true, y_pred) 61 return K.sum(bce, axis=-1) 62 63 64# 評価関数 65def total_acc(y_true, y_pred): 66 pred = K.cast(K.greater_equal(y_pred, 0.5), "float") 67 flag = K.cast(K.equal(y_true, pred), "float") 68 return K.prod(flag, axis=-1) 69 70def binary_acc(y_true, y_pred): 71 pred = K.cast(K.greater_equal(y_pred, 0.5), "float") 72 flag = K.cast(K.equal(y_true, pred), "float") 73 return K.mean(flag, axis=-1) 74 75 76 77def train(use_binary_loss): 78 model = create_network() 79 if use_binary_loss: 80 #モデルの設定 81 #SGD:ミニバッチ学習 82 model.compile(SGD(0.01, 0.9), loss=binary_loss, metrics=[total_acc, binary_acc]) 83 else: 84 model.compile(SGD(0.01, 0.9), loss=categorical_loss, metrics=[total_acc, binary_acc]) 85 86 hist = History() #学習経過 87 88 model.summary() #モデル確認 89 90 batch_size = 128 91 92 model.fit_generator(generator('df_train.pickle', batch_size), 93 steps_per_epoch=4932//batch_size, 94 validation_data=generator('df_test.pickle', batch_size), 95 validation_steps=1645//batch_size, 96 callbacks=[hist], epochs=1) 97 98 history = hist.history 99 100 #保存 101 with open(f"multiclass_binary_{use_binary_loss}.dat", "wb") as fp: 102 pickle.dump(history, fp) 103 104if __name__ == "__main__": 105 train(True)

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

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

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

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

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

guest

回答1

0

ベストアンサー

学習データの最大文字数が少ないのに無駄にpaddingしていたため、学習データをトークナイザにかける際にmax_lengthを64に修正したら動きました。
学習データの配列の0の数があまりにも多すぎるとこのエラーが出るのかもしれません。
実際のところはどうか分からないのですが、これが誰かのお役に立てますように……

投稿2023/07/26 14:45

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問