teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

d

2019/05/28 02:16

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -38,4 +38,30 @@
38
38
  そのエラーはモデル作成時または fit() 関数による学習時のどちらのタイミングででましたか?
39
39
  後者の場合、モデルは `(None, 64, 64, 3)` の入力を期待しているので、
40
40
  fit 関数に与えるデータ x_train の形状は (サンプル数, 64, 64, 3) の numpy 配列、y_train は (サンプル数, クラス数) の numpy 配列の必要があります。
41
- x_train.shape, y_train.shape を print してみてそのようになっているか確認してみてください。
41
+ x_train.shape, y_train.shape を print してみてそのようになっているか確認してみてください。
42
+
43
+ ## 追記
44
+
45
+ よく見たら、Conv2D -> Dense の間に Flatten する層が抜けていますね。
46
+ エラーはそれが原因です。
47
+
48
+ 動作確認したコード
49
+
50
+ ```python
51
+ from tensorflow.keras.layers import Input, Conv2D, Dense, Flatten
52
+ from tensorflow.keras.models import Model
53
+
54
+ inputs = Input(shape=(64, 64, 3))
55
+ x1 = Conv2D(64, 3, padding="same", activation="relu")(inputs)
56
+ x2 = Flatten()(x1)
57
+ x3 = Dense(64, activation="relu")(x2)
58
+ outputs = Dense(8, activation="softmax")(x3)
59
+ model = Model(inputs=inputs, outputs=outputs)
60
+ model.compile(loss="categorical_crossentropy", optimizer="Adam", metrics=["accuracy"])
61
+ model.summary()
62
+
63
+ x_train = np.random.randn(1000, 64, 64, 3)
64
+ y_train = np.random.randn(1000, 8)
65
+
66
+ model.fit(x_train, y_train, batch_size=8, epochs=100, validation_split=0.2)
67
+ ```

1

d

2019/05/28 02:16

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -29,4 +29,13 @@
29
29
  GPU を使用する場合、一度に計算できたほうが計算効率がよい。
30
30
  あまり大きい値にしすぎると、GPU のメモリに乗り切らない場合もある。
31
31
 
32
- どのくらいの値がよいかというのはハイパーパラメータなので、ケースバイケースです。
32
+ どのくらいの値がよいかというのはハイパーパラメータなので、ケースバイケースです。
33
+
34
+ ## エラーについて
35
+
36
+ > Incompatible shapes: [8] vs. [8,64,64]
37
+
38
+ そのエラーはモデル作成時または fit() 関数による学習時のどちらのタイミングででましたか?
39
+ 後者の場合、モデルは `(None, 64, 64, 3)` の入力を期待しているので、
40
+ fit 関数に与えるデータ x_train の形状は (サンプル数, 64, 64, 3) の numpy 配列、y_train は (サンプル数, クラス数) の numpy 配列の必要があります。
41
+ x_train.shape, y_train.shape を print してみてそのようになっているか確認してみてください。