Я играю с моделью, которая должна взять шахматную доску 8x8 в качестве входных данных, закодированную как серое изображение 224x224, а затем вывести логистическую регрессию с горячим кодированием 64x13 = вероятности фигур на квадратах.
Теперь, после Сверточных слоев, я не совсем знаю, как перейти к получению слоя 2D-Dense в качестве результата / цели.
Я попытался добавить Dense (64,13) в качестве слояк моей последовательной модели, но я получаю ошибку «Плотный» может принимать только 1 позиционные аргументы («единицы»,) »
Можно ли даже тренироваться для двумерных целей?
EDIT1: Вот соответствующая часть моего кода, упрощенно:
# X.shape = (10000, 224, 224, 1)
# Y.shape = (10000, 64, 13)
model = Sequential([
Conv2D(8, (3,3), activation='relu', input_shape=(224, 224, 1)),
Conv2D(8, (3,3), activation='relu'),
# some more repetitive Conv + Pooling Layers here
Flatten(),
Dense(64,13)
])
TypeError: Dense
может принимать только 1 позиционный аргумент ('units',), но вы передали следующие позиционные аргументы:[64, 13]
РЕДАКТИРОВАТЬ 2: Как предположил Ананд В. Сингх, я изменил Dense (64, 13) на Dense (832), что прекрасно работает.Loss = mse.
Не лучше ли использовать "sparse_categorical_crossentropy" в качестве потери и кодирование 64x1 (вместо 64x13)?