我对深度学习非常陌生,并试图从Kaggle内核中汲取灵感来构建CNN模型以解决数独问题。作为参考,可以找到here的内核。
这是我建立的顺序模型-
model = Sequential([
Conv2D(filters = 64, kernel_size = (3,3), activation = 'relu', padding = 'same',
input_shape = (9,9,1)),
BatchNormalization(),
Conv2D(filters = 64, kernel_size = (3,3), activation = 'relu', padding = 'same'),
BatchNormalization(),
Conv2D(filters = 128, kernel_size = (1,1), activation = 'relu', padding = 'same'),
Flatten(),
Dense(81*9),
Reshape((-1,9)),
Activation('softmax')
])
model.compile(optimizer = Adam(lr = 0.0001), loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])
X = np.array(unsolved).reshape(2000,9,9,1) # features
y = np.array(solved) # labels
y是形状的数组(2000,81)。培训示例的数量是2000。
model.fit(x = X, y = y, validation_split = 0.2, verbose = 1, batch_size = 1000, epochs = 20)
在训练模型时,出现无效参数错误。
InvalidArgumentError: Received a label value of 9 which is outside the valid range of [0, 9).
我发现标签9超出范围,如果我将解决方案数独中的所有数字都重新标记为(1,9)到(0,8),则该模型可能会起作用。
但我认为这不是有效的解决方案。请让我知道如何通过此方法工作。谢谢!