回答編集履歴

2

d

2019/05/28 02:16

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -79,3 +79,55 @@
79
79
  fit 関数に与えるデータ x_train の形状は (サンプル数, 64, 64, 3) の numpy 配列、y_train は (サンプル数, クラス数) の numpy 配列の必要があります。
80
80
 
81
81
  x_train.shape, y_train.shape を print してみてそのようになっているか確認してみてください。
82
+
83
+
84
+
85
+ ## 追記
86
+
87
+
88
+
89
+ よく見たら、Conv2D -> Dense の間に Flatten する層が抜けていますね。
90
+
91
+ エラーはそれが原因です。
92
+
93
+
94
+
95
+ 動作確認したコード
96
+
97
+
98
+
99
+ ```python
100
+
101
+ from tensorflow.keras.layers import Input, Conv2D, Dense, Flatten
102
+
103
+ from tensorflow.keras.models import Model
104
+
105
+
106
+
107
+ inputs = Input(shape=(64, 64, 3))
108
+
109
+ x1 = Conv2D(64, 3, padding="same", activation="relu")(inputs)
110
+
111
+ x2 = Flatten()(x1)
112
+
113
+ x3 = Dense(64, activation="relu")(x2)
114
+
115
+ outputs = Dense(8, activation="softmax")(x3)
116
+
117
+ model = Model(inputs=inputs, outputs=outputs)
118
+
119
+ model.compile(loss="categorical_crossentropy", optimizer="Adam", metrics=["accuracy"])
120
+
121
+ model.summary()
122
+
123
+
124
+
125
+ x_train = np.random.randn(1000, 64, 64, 3)
126
+
127
+ y_train = np.random.randn(1000, 8)
128
+
129
+
130
+
131
+ model.fit(x_train, y_train, batch_size=8, epochs=100, validation_split=0.2)
132
+
133
+ ```

1

d

2019/05/28 02:16

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -61,3 +61,21 @@
61
61
 
62
62
 
63
63
  どのくらいの値がよいかというのはハイパーパラメータなので、ケースバイケースです。
64
+
65
+
66
+
67
+ ## エラーについて
68
+
69
+
70
+
71
+ > Incompatible shapes: [8] vs. [8,64,64]
72
+
73
+
74
+
75
+ そのエラーはモデル作成時または fit() 関数による学習時のどちらのタイミングででましたか?
76
+
77
+ 後者の場合、モデルは `(None, 64, 64, 3)` の入力を期待しているので、
78
+
79
+ fit 関数に与えるデータ x_train の形状は (サンプル数, 64, 64, 3) の numpy 配列、y_train は (サンプル数, クラス数) の numpy 配列の必要があります。
80
+
81
+ x_train.shape, y_train.shape を print してみてそのようになっているか確認してみてください。