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

来源:互联网 发布:淘宝营销案例 编辑:程序博客网 时间:2024/05/21 18:35

假如我想使用一个空的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
原创粉丝点击