我刚刚开始在Tensorflow上学习CNN。但是,当我训练模型时,损耗和准确性不会改变。
我正在使用尺寸为128x128x3的图像,并且图像已标准化(在[0,1]中)。这是我正在使用的编译器。
model.compile(optimizer = tf.keras.optimizers.Adam(lr = 0.000001),损失='binary_crossentropy',指标= ['准确性'])
这是我的模型摘要
我尝试了以下操作,但我始终具有相同的值:
更新
在拟合模型后,图层的权重没有改变。我的初始体重相同。
model.compile(optimizer='adam',
loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
metrics=['accuracy'])
此外,从最后一层删除softmax激活,二进制分类问题不需要softmax。因此,在这种情况下,softmax所做的就是将值始终裁剪为1,因为只有一种可能性,因此网络无法训练。此link可能有助于您了解softmax。此外,您可以尝试在最终节点上使用S型激活。这会将输出限制在0到1的范围内,并且由于非常高的损耗,网络权重不会增大。