Keras conv nn只预测一个类?

2024-09-29 01:38:38 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我一直在构建一个卷积神经网络。我试图预测一个boardgame状态(10x10矩阵)是否会导致赢(二进制0或1)。你知道吗

我有六百万个例子,你会认为这是足够的,但显然不是,因为我的网络预测所有的一个类。。。你知道吗

我有什么明显的遗漏吗?我试着给它举了10个例子,但它仍然预测它们都是同一个类。你知道吗

输入矩阵是10×10的整数。你知道吗

输入整形:

x_train = x_train.reshape(len(x_train),10,10,1)

实际建模:

model = Sequential()
model.add(Conv2D(3, kernel_size=(1, 1), strides=(1, 1), activation='relu', input_shape=(10,10,1)))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(1, 1)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(500, activation='tanh'))
model.add(Dropout(0.5))
model.add(keras.layers.Dense(75, activation='relu'))
model.add(BatchNormalization())
model.add(keras.layers.Dense(10, activation='sigmoid'))
model.add(keras.layers.Dense(1,kernel_initializer='normal',activation='sigmoid'))
optimizerr = keras.optimizers.SGD(lr=0.001, momentum=0.9, decay=0.01, nesterov=True)
model.compile(optimizer=optimizerr, loss='binary_crossentropy', metrics=[metrics.binary_accuracy])

model.fit(x_train, y_train,epochs = 100, batch_size = 128, verbose=1)

我试过修改学习速率,动量,衰减,内核大小,层类型,大小。。。我检查了垂死的雷卢,这似乎不是问题所在。删除dropout/batchnormalization层(或各种随机层)也没有起到任何作用。你知道吗

这些数据大约有53/47%分布在标签上,所以也不是这样。你知道吗

我更困惑的是,即使我要求它预测火车组,它仍然坚持只标记一个类的东西,即使只有~20个样本或更少。你知道吗


Tags: addsizemodellayerstrain矩阵activationkernel