当前位置:  开发笔记 > 编程语言 > 正文

tensorflow后端在keras中使用``learning_phase''?

如何解决《tensorflow后端在keras中使用``learning_phase''?》经验,为你挑选了0个好方法。

我正在尝试在张量流中使用keras后端训练一个Resnet网络。每个批次更新的供稿字典写为:

    feed_dict= {x:X_train[indices[start:end]], y:Y_train[indices[start:end]], keras.backend.learning_phase():1}

我使用的是keras后端(keras.backend.set_session(sess)),因为原始的resnet网络是用keras定义的。由于模型包含辍学层和batch_norm层,因此需要一个学习阶段来区分训练和测试。

我观察到,无论何时设置keras.backend.learning_phase():1,模型训练/测试的准确性几乎都不会提高到10%以上。相反,如果未设置学习阶段,则将提要字典定义为:

feed_dict= {x:X_train[indices[start:end]], y:Y_train[indices[start:end]]}

然后,正如预期的那样,模型精度以标准的方式不断提高。

如果有人澄清了学习阶段的使用是不必要的还是其他错误,我将不胜感激。Keras 2.0文档似乎建议将学习阶段与dropout和batch_norm层一起使用。

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有