我最近开始使用Tensor Flow进入深度学习。我已经阅读了很多在线资源,并为初学者学习了Udacity课程。我获得了很多深度学习的基本原理。但我现在正在努力的一件事并不是任何这些资源的主题。我不知道如何将我自己的标记数据(CSV格式)放入我的Python程序中来训练我的网络。我已经遇到this posting并开始以帖子显示的方式实现输入管道,并且它到目前为止一直有效。当我尝试通过提供功能和标签来训练我的模型时
sess.run(optimizer, feed_dict={
x: features,
y: labels,
})
TF正在抛出错误
TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, numpy ndarrays, or TensorHandles.
X和Y被定义为占位符,会话正在调用 tf.global_variables_initializer()
x = tf.placeholder(tf.float32, shape=[10, batch_size])
y = tf.placeholder(tf.float32)
但 tf.train.shuffle_batch 返回的对象是Tensors对吗?应该/我可以将它们转换回有效的数据类型,如Numpy数组,还是有任何其他更有效的方式来读取我的数据。
答案 0 :(得分:0)
你可以用两种方式做到这一点。
使用feed_dict :
features_numpy,labels_numpy = sess.run([features,labels])
sess.run(optimizer, feed_dict={ x: features_numpy,y: labels_numpy})
运行会话,获取功能和标签的numpy值,并使用feed_dict将其提供给模型。但这是低效的,因为你将TF数据复制到Numpy并再次将其提供给TF。有效地遵循 2 。
避免使用feed_fict
不要使用feed_dict和占位符。直接连接要素和标签节点到模型。或者这样做
x = features
y = labels
执行 sess.run(model_output / loss / accuracy)以获取预测或训练模型。
我希望这会有所帮助。