Обнаружение ошибок при наложении сверточной сети с использованием keras - PullRequest
1 голос
/ 28 мая 2020

Я делаю шахматный AI, используя keras. Я сталкиваюсь с ошибками при наложении сверточных слоев, поскольку в нем указано, что форма несовместима с предыдущим слоем объединения. Ошибка имеет следующий вид:

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]

Воспроизводимый сегмент:

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)

1 Ответ

1 голос
/ 28 мая 2020

вам нужно создать еще один сверточный слой

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...