回答編集履歴
2
d
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
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 してみてそのようになっているか確認してみてください。
|