tf.placeholder和tf.Variable之间有什么区别
在这篇文章中,我们将看到tf.placeholder和tf.Variable之间的区别。
tf.placeholder
顾名思义,它是一个空的地方。它是一个空的变量,后来训练数据被送入其中。tf.placeholder允许我们首先创建一个结构,即设置计算图,然后将数据输入其中。它允许我们在运行时放置数据。当会议开始时,我们把数据输入占位符。
语法: tf.compat.v1.placeholder(dtype, shape=None, name=None)
- dtype是输入的数据类型。
- shape是张量的形状。然而,它是一个可选的参数。
- name是操作名称
让我们借助于一个例子来阐述一下
# import packages
import tensorflow.compat.v1 as tf
# disable eager mode
tf.compat.v1.disable_eager_execution()
# create empty placeholder
a = tf.placeholder(tf.float32, name='a')
b = tf.placeholder(tf.float32, name='b')
# create third node and perform subtraction
c = tf.subtract(a, b, name='c')
sess = tf.Session()
# run session
sess.run(c, feed_dict={a: 1, b: 8})
输出:
-7.0
在上面的代码中,我们创建了两个占位符,并创建了第三个节点’c’来执行减法。最后,我们使用 session.run 来执行操作。
tf.Variable
tf.Variable是一个持有初始值的状态。这些值不过是张量。变量可以通过调用构造函数被添加到计算图中。每当一个变量被创建,它总是被初始化。在会话执行过程中,它们基本上持有权重和偏差。
语法:
tf.Variable(initial_value=None,
trainable=None,
validate_shape=True,
caching_device=None,
name=None,
variable_def=None,
dtype=None,
import_scope=None,
constraint=None,
synchronization=tf.VariableSynchronization.AUTO,
aggregation=tf.compat.v1.VariableAggregation.NONE,
shape=None)
让我们借助于一个例子来阐述一下
# import packages
import tensorflow as tf
# create variables
tensor1 = tf.Variable([3, 4])
tensor2 = tf.Variable([2, 3])
print(tensor1-tensor2)
输出:
Tensor("sub:0", shape=(2,), dtype=int32)
在上面的代码中,我们创建了两个张量变量,并用两个列表初始化它们。然后我们对两个张量进行减法并得到结果。
tf.placeholder和tf.Variable之间的区别
tf.placeholder | tf.Variable |
---|---|
它是一个空变量,数据在代码的后面部分被输入。 | 变量一旦声明,就必须在声明时用一个初始值进行初始化。 |
占位符被绑定在表达式内。 | 变量用于保存权重和偏差的值。 |
这些值是特定的,在程序执行过程中不会改变。 | 在程序执行过程中,数值会被改变。 |
它用于处理外部数据。 | 它用于存储整个程序中需要的数值。 |