【问题标题】:Convolutional Neural Network using TensorFlow使用 TensorFlow 的卷积神经网络
【发布时间】:2023-03-14 07:12:01
【问题描述】:

我正在使用 Tensorflow 构建一个 CNN 模型,而没有使用任何前端 API,例如 Keras。我正在创建一个 VGG-16 模型并使用预训练的权重,并希望微调最后一层以满足我的目的。

按照这里的教程,http://cv-tricks.com/tensorflow-tutorial/training-convolutional-neural-network-for-image-classification/ 我重新创建了培训脚本并根据我的要求进行了修改。但是,我的训练没有发生,训练准确率停留在 50.00%,验证准确率正在形成重复数字的模式。 附件是相同的屏幕截图。

我已经坚持了好几天了,似乎找不到错误。任何帮助表示赞赏。

代码很长,因此这里是相同的gist file

【问题讨论】:

    标签: python tensorflow deep-learning conv-neural-network


    【解决方案1】:

    您的交叉熵是错误的,您正在将您的 logits 与您的 logits 的 softmax 进行比较。

    这个:

    cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=layer_fc2,
                                                        labels=y_pred)
    

    应该是:

    cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=layer_fc2,
                                                        labels=y_true)
    

    一些注意事项。我不会在某个数据点上进行训练,然后在同一个数据点上进行评估。这样做可能会影响您的训练准确性。还有一点需要注意的是tf.argmax(tf.softmax(logits))tf.argmax(logits)是一样的。

    【讨论】:

    • 感谢您的回复。我做了您在cross_entropy 中建议的更改。训练准确率仍然停留在 50.00%,并且验证 acc 形成了一个重复自身的模式。我的代码中还有其他错误?
    • 请看一下。 @thomas-pinetz
    • 在这种情况下,我要做的是查看模型的输入和输出。如果这些测试的输出与训练的准确性相匹配,我将查看梯度。它们是 0 还是一些令人毛骨悚然的东西,我会看看损失函数。我很难在这么长的代码中发现错误而无法运行它。
    • 我也看过 TensorBoard 图表。这些层似乎没有连接。代码中,1的输出层是other的输入层。但是,尚未建立联系。可以对此有所了解吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2021-03-30
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多