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

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

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

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

Python

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

Q&A

解決済

2回答

5135閲覧

kerasニューラルネットワークの学習の際のエラー

taro_yamada

総合スコア55

Keras

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

Python

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

0グッド

0クリップ

投稿2020/10/03 15:30

現在、21列のinput.csvファイル(20列が説明変数、最後の1列が教師信号)を使って、教師信号1か-1か判定させるニューラルネットワークのプログラムを作成したいと思っています。

 FITを実行の際に、EPOCHが1と表示された直後に下記のエラーメッセージにより中断してしまいます。

 おそらくノードの数などの設定がおかしいと思うのですが、勉強不足で申し訳ありませんが、ご意見をいただける方がいらっしゃいましたらご教示ください。

tensorflow.python.framework.errors_impl.InvalidArgumentError: logits and labels must have the same first dimension, got logits shape [32,3] and labels shape [640]
[[node sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits (defined at /PycharmProjects/test/analysedata/datamining.py:43) ]] [Op:__inference_train_function_603]

python

1 def nn01(self, args): 2 3 X_SIZE = 20 4 HIDDEN_UNIT_SIZE = 20 5 TRAIN_DATA_SIZE = 900 6 7 filename ="./tmp/inputdata.csv" 8 9 raw_input = np.loadtxt(open(filename), delimiter= ',', dtype='float64', skiprows=1) 10 [x, y] = np.hsplit(raw_input, [1]) 11 12 13 [x_train, x_test] = np.vsplit(x, [TRAIN_DATA_SIZE]) 14 [y_train, y_test] = np.vsplit(y, [TRAIN_DATA_SIZE]) 15 16 model = keras.models.Sequential([ 17 keras.layers.Flatten(), 18 keras.layers.Dense(512, activation='relu'), 19 keras.layers.Dropout(0.2), 20 keras.layers.Dense(3, activation='softmax') 21 ]) 22 23 model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) 24 25 model.fit(x_train, y_train, epochs=5) 26 27 model.evaluate(x_test, y_test) 28 29 print('save the architecture of a model') 30 json_string = model.to_json() 31 open(os.path.join(f_model, './tmp/' + str(datetime.datetime.now()) + 'cnn_model.json'), 'w').write(json_string) 32 yaml_string = model.to_yaml() 33 open(os.path.join(f_model, './tmp/' + str(datetime.datetime.now()) + 'cnn_model.yaml'), 'w').write(yaml_string) 34 print('save weights') 35 model.save_weights(os.path.join(f_model, './tmp/' + str(datetime.datetime.now()) + 'cnn_model_weights.hdf5')) 36

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

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

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

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

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

guest

回答2

0

ベストアンサー

再現実行させていないので推測ですが、
[x, y] = np.hsplit(raw_input, [1])
の部分が間違っています。これだと説明変数であるxが1列になってしまいます。
正しくは
[x, y] = np.hsplit(raw_input, [-1])
ですね。

ここが間違っているため、model.fit(x_train, y_train, epochs=5)において、y_trainが強制的に1列にされて行数が伸ばされ、logits and labels must have the same first dimension, got logits shape [32,3] and labels shape [640]というように「説明変数と教師ラベルのサイズが違う」と怒られたものと思います。

投稿2020/10/04 00:37

toast-uz

総合スコア3266

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

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

taro_yamada

2020/10/04 00:46

初歩的なミスでした。 プログラムは無事に作動し、早速、次のエラーに当たりました笑 プログラムの作成を続けていきたいと思います。 どうもありがとうございました。
yasutakatou

2020/10/04 00:48

あまりお役に立てなくてすみませんが、解決して良かったですね!
guest

0

モデルとラベルの次元が違うのでエラーになってるように見受けられます。
データの中身がイメージし辛いのでなんともなところありますが、
エラーを解消する目的で回答すると
https://stackoverflow.com/questions/49161174/tensorflow-logits-and-labels-must-have-the-same-first-dimension
にあるようにreshapeなどで次元をあわせてあげれば解消できます。

投稿2020/10/04 00:34

yasutakatou

総合スコア446

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

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

taro_yamada

2020/10/04 00:47

回答ありがとうございました。 無事に解決することができました。リンク先のHPも参考にコーディングを続けていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問