Python 张量流量损失;在CNN模型中Acc保持不变

Python 张量流量损失;在CNN模型中Acc保持不变,python,tensorflow,loss,cnn,Python,Tensorflow,Loss,Cnn,我刚刚开始在Tensorflow上学习CNN。然而,当我训练模型时,损失和精度不会改变 我使用的是大小为128x128x3的图像,这些图像是标准化的(在[0,1]中)。这是我正在使用的编译器 compile(optimizer=tf.keras.optimizers.Adam(lr=0.000001),loss='binary\u crossentropy',metrics=['accurity']) 这是我的模型的总结 我尝试了以下几点,但我总是有相同的价值观: 将学习速率从0.0000

我刚刚开始在Tensorflow上学习CNN。然而,当我训练模型时,损失和精度不会改变

我使用的是大小为128x128x3的图像,这些图像是标准化的(在[0,1]中)。这是我正在使用的编译器

compile(optimizer=tf.keras.optimizers.Adam(lr=0.000001),loss='binary\u crossentropy',metrics=['accurity'])

这是我的模型的总结

我尝试了以下几点,但我总是有相同的价值观:

  • 将学习速率从0.00000001更改为10
  • 更改卷积内核我尝试了5x5和3x3
  • 我添加了另一个完全连接的层和Conv层
更新

拟合模型后,层的权重没有变化。我有相同的初始权重

你可以试试这个

 model.compile(optimizer='adam',
          loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
          metrics=['accuracy'])
此外,从最后一层移除softmax激活,二进制分类问题不需要softmax。因此,softmax在这种情况下所做的是将值始终剪裁为1,因为只有一种概率,因此网络不训练。这可能有助于您理解softmax。
此外,您可以尝试在最后一个节点使用sigmoid激活。这将输出剪裁为0到1范围内的值,并且网络权重不会因为非常高的损耗而膨胀

您的模型是否在每个历元后更新权重?我建议在每个历元后检查层权重。我不知道如何在每个历元中检查权重。但是是的,在训练之前和五个阶段之后,我的体重是一样的。问题是什么?您在输出节点使用的激活是什么?我可以上传你的代码,这样我就可以知道出了什么问题。因为这似乎很奇怪为什么模型不能训练。我正在使用“softmax”,这里有一个链接指向我的项目:@wassimboutay尝试删除最后一层中的激活。二进制分类问题不需要softmax函数。这应该可以解决问题。在第一个纪元中,精度变为0.7091(即1-0.2909),但即使在10个纪元之后,它仍然停留在相同的值上。在输出节点上激活Sigmoid应该会有所帮助。我认为问题在于
train\u gen=ImageDataGenerator(旋转范围=20,水平翻转=True)
当前tf版本的图像生成器。此[链接]()包含其他人面临的类似问题的详细信息。