Reputation: 368
I am making a chess AI using keras. I encounter errors when stacking convolutional layers, as it states that the shape is inconsistent with the previous pooling layer. The error is as states below:
Input 0 of layer conv2d is incompatible with the layer: expected axis -1 of input shape to have value 12 but received input with shape [None, 3, 3, 2]
A reproducible segment:
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
board_inputs = keras.Input(shape=(8, 8, 12))
conv = layers.Conv2D(2, 3, activation='relu')
pooling = layers.MaxPooling2D(pool_size=(2, 2), strides=None, padding="valid", data_format=None,)
flatten = keras.layers.Flatten(data_format=None)
x = conv(board_inputs)
x = pooling(x)
x = conv(x)
# x = flatten(x)
# x = conv(x)
# x = pooling(x)
x = flatten(x)
output = layers.Dense(12)(x)
model = keras.Model(inputs=board_inputs, outputs=output, name="chess_ai_v3")
model.summary()
model.compile(
loss=keras.losses.mse,
optimizer=keras.optimizers.Adam(),
metrics=None,
)
history = model.fit(trans_data[:len(trans_data)], pieces[:len(trans_data)], batch_size=64, epochs=1000)
Upvotes: 1
Views: 44
Reputation: 22031
you have to create another conv layer
conv1 = Conv2D(2, 3, activation='relu')
conv2 = Conv2D(2, 3, activation='relu')
pooling = MaxPooling2D(pool_size=(2, 2), strides=None, padding="valid", data_format=None,)
flatten = Flatten(data_format=None)
board_inputs = Input(shape=(8, 8, 12))
x = conv1(board_inputs)
x = pooling(x)
x = conv2(x)
x = flatten(x)
output = Dense(12)(x)
model = Model(inputs=board_inputs, outputs=output, name="chess_ai_v3")
model.summary()
Upvotes: 1