TensorFlow的 数据和参数的输入 及变量存储

假如我想使用一个空的tensor呢?这就需要用到tf.placeholder() 和 feed_dict 。

tf.placeholder() 

在TensorFlow(后文简称TF)中,数据并不会保存为 integer, float, 或 string. 这些值都封装在 tensor 对象中,因此不能直接定义并使用一个变量例如x,因为你设计的模型可能需要受不同的数据集与不同的参数。所以TF使用placeholder()来传递一个tensor到session.run()中。

Session’s feed_dict

x = tf.placeholder(tf.string)

with tf.Session() as sess:
    output = sess.run(x, feed_dict={x: 'Hello World'})

如上面这段代码所示,在tf.Session.run()中使用feed_dict来传入tensor.上面这个例子传入的是一个字符串"Hello, world",feed_dict也可以同时传入多个tensor,如下所示。

x = tf.placeholder(tf.string)
y = tf.placeholder(tf.int32)
z = tf.placeholder(tf.float32)

with tf.Session() as sess:
    output = sess.run(x, feed_dict={x: 'Test String', y: 123, z: 45.67})

注意:你应该已经注意到所有tensor都已经被预先定义类型,如果在feed_dict中传入的类型与预先定义的不符合,则TF会报“ValueError: invalid literal for...”错误。

一个思考:

那么,什么时候该用tf.placeholder,什么时候该使用tf.Variable之类直接定义参数呢?

答案是,tf.Variable适合一些需要初始化或被训练而变化的权重或参数,而tf.placeholder适合通常不会改变的被训练的数据集。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值