首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在测试时替换输入管道(不带占位符的tf.contrib.data)

在测试时替换输入管道(不带占位符的tf.contrib.data)
EN

Stack Overflow用户
提问于 2017-07-26 05:12:33
回答 1查看 347关注 0票数 2

在训练期间,我将tf.contrib.data函数用于输入管道(没有占位符)。我的问题是,如何重用经过训练的模型,并在测试时输入新数据?这个问题类似于this one,除了我也不想在测试中使用占位符-我的测试数据集可能非常大,并且应该避免占位符的速度变慢。

有没有办法在测试时用新的管道替换输入管道?

EN

回答 1

Stack Overflow用户

发布于 2017-07-26 05:46:12

我不确定是否有解决这个问题的最佳方法,但我是这样解决的:

在我的模型中,我使用了一个简单的MLP,所以我的model()函数中有如下几行:

代码语言:javascript
复制
train_layer = tf.add(tf.matmul(x_train, weights['w1']), biases['b1'])
train_layer = tf.nn.relu(train_layer)
test_layer = tf.add(tf.matmul(x_test, weights['w1']), biases['b1'])
test_layer = tf.nn.relu(test_layer)

如您所见,我有两个输入:x_trainx_test。以下是从tf.contrib.data数据集迭代器获取批数据的句柄:

代码语言:javascript
复制
x_train, x_train_labels = train_iter.get_next()
x_test, x_test_labels = test_iter.get_next()

因此,我基本上在同一个图中有两个数据流,它们执行的是完全相同的操作。我还有两个模型的输出,mlp_trainmlp_test,这取决于模型是使用x_train还是x_test输入进行评估的。

现在:如果您使用mlp_train输出创建优化器,并使用mlp_test输出创建测试指标,则只需运行:sess.run(optimiser)在训练数据集上训练您的系统,sess.run(test_metrics)在测试数据集上测试您的系统,并且您永远不需要使用feed_dict。

编辑:我读到了你关于使用“模型训练时不可用的数据”的评论,我不认为这个答案能满足你的要求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45313555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档