Victor Sim
Victor Sim

Reputation: 368

Encountering errors when stacking convolutional network using keras

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

Answers (1)

Marco Cerliani
Marco Cerliani

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

Related Questions