从方便但速度较慢的占位符切换后,我有通过队列运行器进入图表的数据。
在每个培训时期之后,我希望运行一个验证通行证。除训练通行证外,验证通行证使用不同的数据,没有扩充,也没有改组。
问题很简单:如何切换这些内容?
一些观察:
shuffle选项。string_input_producertf.placeholderplaceholder来将训练与验证数据分开。这些依次不使用高级队列运行器。tf.cond()我将测试通过的is_training tf.placeholder布尔值feed_dict。这种解决方案是最佳的吗?这种tf.conf()方法多少钱?对我来说效果很好的方法是使用tf.placeholder_with_default:
Run Code Online (Sandbox Code Playgroud)images_train, labels_train = train_data_pipeline(fnlist_train, ref_grid) images_val, labels_val = val_data_pipeline(fnlist_val, ref_grid) images = tf.placeholder_with_default(images_train, shape=[None, FLAGS.nx_image, FLAGS.ny_image, FLAGS.nz_image]) labels = tf.placeholder_with_default(labels_train, shape=[None, label_length])
训练期间,images直接labels来自训练队列。对于间歇性验证步骤,我通过调用中的 feed_dict 提供images并通过. 唯一的小问题是验证数据也是来自队列的张量,而 feed_dict 不接受张量,因此我首先调用以获取 numpy 值,然后在 feed_dict 中使用它们。似乎工作得很好,并且张量 ==>numpy==> 张量转换的延迟最小,无论如何,这只发生在验证期间。labelssess.run()sess.run([images_val, labels_val])
对于验证数据有单独处理要求的情况,可以在设置单独的验证队列和处理流程时处理。
| 归档时间: |
|
| 查看次数: |
1543 次 |
| 最近记录: |