Tensorflow: 使用变量填充占位符

我正在使用输入队列和tf.train.batch函数向tensorflow的计算(训练)图提供数据,该函数准备了一个包含大量数据的张量。我还有另一个测试数据队列,我想每隔50步向图中输入这些数据。

问题

考虑到输入的形式(张量),我是否需要为测试数据计算定义一个单独的测试图,还是可以以某种方式重用训练图?

# 准备数据
batch = tf.train.batch([train_image, train_label], batch_size=200)
batchT = tf.train.batch([test_image, test_label], batch_size=200)
x = tf.reshape(batch[0], [-1, IMG_SIZE, IMG_SIZE, 3])
y_ = batch[1]
xT = tf.reshape(batchT[0], [-1, IMG_SIZE, IMG_SIZE, 3])
y_T = batchT[1]
# 图定义
train_step = ... # train_step = g(x)
# 会话
sess = tf.Session()
sess.run(tf.initialize_all_variables())
for i in range(1000):
  if i%50 == 0:
    # 在这里我想重用训练图,但用x_t替换张量x
    # train_accuracy = ?
    # print("第%d步,训练准确率%g"%(i, train_accuracy))
  train_step.run(session=sess)

我想使用占位符,但我无法用tf.Tensors填充tf.placeholder,这是我从队列中获取的东西。这应该如何操作呢?

我真的只是刚开始学习。


回答:

请查看MNIST示例中是如何做的:您需要使用一个占位符,其初始化器是您数据的非张量形式(如文件名或CSV),然后在图内,使用slice_input_producer -> decode_jpeg(或其他…)-> tf.train.batch()来创建批次,并将这些批次输入到计算图中。

所以您的图看起来像这样:

  • 用大文件名列表/CSV/范围初始化的占位符
  • tf.slice_input_producer
  • tf.image.decode_jpegtf.py_func – 加载实际数据
  • tf.train.batch – 创建用于训练的迷你批次
  • 输入到您的模型中

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注