问题
我试图预测猫与非猫的两类问题。我的标签是二进制的(1和0)。我面临的问题是,无论真实标签是什么,Keras总是将所有面孔预测为猫。我在该论坛上浏览了几篇类似的帖子,以找出问题所在。.他们似乎都没有说服我的问题。我的训练数据集和测试数据集经过适当的预处理(转换为0到1的范围)。我也意识到训练的准确性是我输入标签(值为0和1的标签)的平均值。
我已经尝试了什么?
我正在复制以下代码的关键部分,以获取更多见解:
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(200, input_shape=(12288,),
kernel_initializer='random_uniform',
bias_initializer='zeros'))
model.add(tf.keras.layers.Dense(1, input_shape=(200,), activation='relu',
kernel_initializer='random_uniform',
bias_initializer='zeros'))
model.add(tf.keras.layers.Dense(1, activation='tanh',
kernel_initializer='random_uniform',
bias_initializer='zeros'))
# Compile the model
sgd = tf.keras.optimizers.SGD(lr=0.004, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error',
optimizer=sgd,
metrics=['accuracy'])
model.fit(train_x, train_labels,
batch_size=batch_size,
shuffle=True,
epochs=epochs,
validation_data=(test_x, test_labels))
# Evaluate the model
scores = model.evaluate(test_x, test_labels)
print('Loss: %.3f' % scores[0])
print('Accuracy: %.3f' % scores[1])
我的输出始终是这样的:
Epoch 14/15
209/209 [==============================] - 0s 1ms/sample - loss: 0.2259 - acc: 0.6555 - val_loss: 0.3237 - val_acc: 0.3400
Epoch 15/15
209/209 [==============================] - 0s 1ms/sample - loss: 0.2261 - acc: 0.6555 - val_loss: 0.3229 - val_acc: 0.3400
50/50 [==============================] - 0s 333us/sample - loss: 0.3229 - acc: 0.3400
Loss: 0.323
Accuracy: 0.340
以上准确性只是我的二进制训练目标中所有目标的平均值。