ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

我为什么要在张量流中构建单独的图形进行训练和验证?

2019-10-09 10:58:38  阅读:180  来源: 互联网

标签:cross-validation python tensorflow machine-learning tensorflow-estimator


我已经使用了tensorflow一段时间了.一开始我有这样的东西:

def myModel(training):
    with tf.scope_variables('model', reuse=not training):
        do model
        return model

training_model = myModel(True)
validation_model = myModel(False)

主要是因为我从一些MOOC开始,使我很难做到这一点.但是他们也没有使用TFRecords或Queues.而且我不知道为什么要使用两个单独的模型.我尝试只构建一个,并使用feed_dict来提供数据:一切正常.

自从我通常只使用一种模型.我的输入始终是place_holders,而我只输入培训或验证数据.

最近,我注意到使用tf.layers.dropout和tf.layers.batch_normalization的模型上有些奇怪的行为.这两个函数都有一个与tf.bool占位符一起使用的“训练”参数.我已经看到tf.layers通常与tf.estimator.Estimator一起使用,但是我没有使用它.我已经阅读了Estimators代码,它似乎为培训和验证创建了两个不同的图形.这些问题可能是由于没有两个单独的模型而引起的,但我仍然持怀疑态度.

是否有明确的原因我没有看到这意味着必须使用两个单独的等效模型?

解决方法:

您不必使用两个神经网络进行训练和验证.毕竟,正如您所注意到的,tensorflow通过允许将某些层的训练参数用作占位符来帮助您拥有一个整体的训练验证网络.

但是,为什么不呢?通过使用单独的网络进行培训和验证,您可以踏上正确的道路,并确保代码永不过时.您的训练和验证网络今天可能是相同的,但是您稍后可能会发现拥有不同的网络会有所好处,例如具有不同的输入,不同的输出,去除中间层等.

而且,由于变量之间是共享的,因此拥有独特的训练和验证网络几乎不会受到任何损失.

因此,保持一个单一的网络就可以了;以我的经验来看,除了有趣的实验之外,任何项目都可能在某个时候实施独特的验证网络,而tensorflow使得以最小的代价轻松做到这一点.

标签:cross-validation,python,tensorflow,machine-learning,tensorflow-estimator
来源: https://codeday.me/bug/20191009/1878480.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有