版本: tensorflow 1.10
TensorFlow学习笔记——节点(constant、placeholder、Variable)
1. constant(常量)
cons = tf.constant(
value=[1,2],
dtype=tf.float32,
shape=(1,2),
name='testconst',
verify_shape=False
)
参数说明:
value:初始值,必填,必须是一个张量(1或[1,2,3]或[[1,2,3],[2,2,3]]或......)
dtype:数据类型,选填,默认为value的数据类型,传入参数为tensorflow下的枚举值(float32,float64.......)
shape:数据形状,选填,默认为value的shape,设置时不得比value小,可以比value阶数、维度更高,超过部分按value提供最后一个数字填充,示例代码如下
import tensorflow as tf
sess = tf.InteractiveSession()
cons1 = tf.constant([1, 2, 3], shape=[2, 3])
print(sess.run(cons1))
# [[1 2 3]
# [3 3 3]]
name:常量名,选填,默认值不重复,根据创建顺序为(Const,Const_1,Const_2.......)
verify_shape:是否验证value的shape和指定shape相符,若设为True则进行验证,不相符时会抛出异常
2. placeholder(占位符)
placeholder是TensorFlow的占位符节点,其是一种常量,在用户调用run方法时传递值。
可以将placeholder理解为一种形参,即不像constant那样可以直接使用,需要用户后期向其传递常数值。
X = tf.placeholder(dtype=tf.float32, shape=[144, 10], name='X')
参数说明:
dtype:数据类型,必填,默认为value的数据类型,传入参数为tensorflow下的枚举值(float32,float64.......)
shape:数据形状,选填,不填则随传入数据的形状自行变动,可以在多次调用中传入不同形状的数据
name:常量名,选填,默认值不重复,根据创建顺序为(Placeholder,Placeholder_1,Placeholder_2.......)
import tensorflow as tf
import numpy.random as random
#占位符shape不设时会按传入参数自行匹配
node1 = tf.placeholder(tf.float32) # , shape=[4, 5])
node2 = tf.placeholder(tf.float32) # , shape=[4, 5])
op = tf.multiply(node1, node2)
session = tf.Session()
const1 = tf.constant(random.rand(4, 5))
const2 = tf.constant(random.rand(4, 5))
#可以传入初始化后的常量
print(session.run(op, {node1: session.run(const1), node2: session.run(const2)}))
#也可以直接传入张量,其实同初始化后的常量一致
print(session.run(op, {node1: random.rand(2, 3), node2: random.rand(2, 3)}))
3. Variable(变量)
Vatiable是tensorflow的变量节点,需要传递初始值。在使用前通过 tf.Variable() 进行初始化。
#常用参数 initial_value,dtype,name,创建代码如下
W = tf.Variable(tf.zeros([3, 10]), dtype=tf.float64, name='W')
参数说明:
__init__(
initial_value=None,
trainable=True,
collections=None,
validate_shape=True,
caching_device=None,
name=None,
variable_def=None,
dtype=None,
expected_shape=None,
import_scope=None,
constraint=None,
use_resource=None,
synchronization=tf.VariableSynchronization.AUTO,
aggregation=tf.VariableAggregation.NONE
)
initial_value:Tensor或可转换为Tensor的Python对象,它是Variable的初始值。除非validate_shape设置为False,否则初始值必须具有指定的形状。也可以不指定初始值,在调用时返回初始值。在这种情况下,必须指定dtype。 (请注意,init_ops.py中的初始化函数必须首先绑定到形状才能在此处使用。)
trainable:如果为True,则默认值也会将变量添加到图形集合GraphKeys.TRAINABLE_VARIABLES中。此集合用作Optimizer类使用的默认变量列表。
collections:图表集合键列表。新变量将添加到这些集合中。默认为[GraphKeys.GLOBAL_VARIABLES]。
validate_shape:如果为False,则允许使用未知形状的值初始化变量。如果为True,则默认为initial_value的形状必须已知。
caching_device:可选设备字符串,描述缓存变量供读取的位置。默认为Variable的设备。如果不是None,则在其他台设备上缓存。典型用法是在使用变量驻留的Ops的设备上进行缓存,以通过Switch和其他条件语句进行重复数据删除。
name:变量的可选名称。默认为“Variable”并获取自动去重(Variable_1,Variable_2....)
variable_def:VariableDef协议缓冲区。如果不是None,引用图中已存在的变量节点容重新创建Variable对象。图表未更改。 variable_def和其他参数是互斥的。
dtype:如果设置,则initial_value将转换为给定类型。如果为None,则保留数据类型(如果initial_value为Tensor),或者由convert_to_tensor决定。
expected_shape:TensorShape。如果设置,则initial_value应具有此形状。
import_scope:可选字符串。要添加到变量的名称范围。仅在从协议缓冲区初始化时使用。
约束:由优化器更新后应用于变量的可选投影函数(例如,用于实现层权重的范数约束或值约束)。该函数以未投影的Tensor作为输入,并返回Tensor的投影值(必须具有相同的形状)。在进行异步分布式培训时,使用约束是不安全的。
use_resource:是否使用资源变量。
synchronization: 未使用
aggr
egation: 未使用
参考:
http://www.cnblogs.com/Vulpers/p/7809276.html
https://tensorflow.google.cn/api_docs/python/tf/Variable