Tensorflow神经网络的数据存储中都使用张量(Tensor),张量具体是什么?
一、属性
实例
python=2.7.18
tensorflow=1.14.0
-
标量 (0D张量)
tf.constant(1)
<tf.Tensor 'Const_4:0' shape=() dtype=int32>
-
向量(1D张量)
tf.constant([1],name="const_1d")
<tf.Tensor 'const_1d_4:0' shape=(1,) dtype=int32>
-
矩阵(2D张量)
tf.constant([[1,2],[3,4]],name="const_2d")
<tf.Tensor 'const_2d:0' shape=(2, 2) dtype=int32>
-
图片(3D张量)
tf.constant([[[1,2],[3,4]],[[1,2],[3,4]]],name="const_3d")
<tf.Tensor 'const_3d:0' shape=(2, 2, 2) dtype=int32>
-
视频(4~nD张量)
二、数据节点
cons = tf.constant(value=[1,2],dtype=tf.float32,shape=(1,2),name='testConstant',verify_shape=False)1
value:初始值,必填,必须是一个张量(1或[1,2,3]或[[1,2,3],[2,2,3]]或……)。
dtype:数据类型,选填,默认为value的数据类型,传入参数为tensotflow下的枚举值(float32,float64….)。
shape:数据形状,选填,默认为value的shape,设置时不得比value小,可以比value阶数,纬度更高,超过部分按value提供最后一个数字填充。
name:常量,选填,默认值不重复,根据创建顺序为(Const,Const_1,Const_2…….)。
verify_shape:是否验证value的shape和指定shape相符,若设为True则进行验证,不相符时会抛出异常。
cons = tf.constant(1)
print(cons)
with tf.Session() as sess:
print(sess.run(cons))
output:
Tensor("Const:0", shape=(), dtype=int32)
1
x = tf.placeholder(dtype=tf.float32,shape=[144,10],name = 'x')
dtype:数据类型,必填,默认为value的数据类型,传入参数为tensorflow下的枚举值(float32,float64…..)。
shape:数据类型,选填,不填则随传入数据的形状自行变动,可以在多次调用中传入不同形状的数据。
name:常量名,选填,默认值不重复,根据创建顺序为(Placeholder,Placeholder_1,Placeholder_2…….).
placeholder1 = tf.placeholder(tf.float32)
print(placeholder1)
#:Tensor("Placeholder_1:0", dtype=float32)
with tf.Session() as sess:
print(session.run(placeholder1))
#:ERROR
可以发现,sess.run直接调用placeholder1会报错
with tf.Session() as sess:
print(sess.run(placeholder1,feed_dict={placeholder1: 6.6}))
#6.6
init__(
initial_value=None, # Tensor或可转换为Tensor的Python对象,它是Variable的初始值。除非validate_shape设置为False,否则初始值必须具有指定的形状。也可以不指定初始值,在调用时返回初始值。在这种情况下,必须指定dtype。
trainable=True, # 如果为True,则默认值也会将变量添加到图形集合GraphKeys.TRAINABLE_VARIABLES中。此集合用作Optimizer类使用的默认变量列表。
collections=None, # 图表集合键列表。新变量将添加到这些集合中。默认为[GraphKeys.GLOBAL_VARIABLES]。
validate_shape=True, # 如果为False,则允许使用未知形状的值初始化变量。如果为True,则默认为initial_value的形状必须已知。
caching_device=None, # 可选设备字符串,描述缓存变量供读取的位置。默认为Variable的设备。如果不是None,则在其他台设备上缓存。典型用法是在使用变量驻留的Ops的设备上进行缓存,以通过Switch和其他条件语句进行重复数据删除。
name=None, # 变量的可选名称。默认为“Variable”并获取自动去重(Variable_1,Variable_2....)
variable_def=None, # VariableDef协议缓冲区。如果不是None,引用图中已存在的变量节点容重新创建Variable对象。图表未更改。 variable_def和其他参数是互斥的。
dtype=None, # 如果设置,则initial_value将转换为给定类型。如果为None,则保留数据类型(如果initial_value为Tensor),或者由convert_to_tensor决定。
expected_shape=None, # TensorShape。如果设置,则initial_value应具有此形状。
import_scope=None, # 可选字符串。要添加到变量的名称范围。仅在从协议缓冲区初始化时使用。
constraint=None, # 由优化器更新后应用于变量的可选投影函数(例如,用于实现层权重的范数约束或值约束)。该函数以未投影的Tensor作为输入,并返回Tensor的投影值(必须具有相同的形状)。在进行异步分布式培训时,使用约束是不安全的。
use_resource=None, # 是否使用资源变量。
synchronization=tf.VariableSynchronization.AUTO, # 未使用
aggregation=tf.VariableAggregation.NONE # 未使用
)
var1 = tf.Variable(10)
print(var1)
#:<tf.Variable 'Variable_5:0' shape=() dtype=int32_ref>
with tf.Session() as sess:
print(sess.run(var1,{var1:123}))
#:123
tf.Variable:表示变量,运行时可以改变。主要用于一些可训练变量(trainable variables),比如模型的权重(weights,W)或者偏置值(bias);
声明时,必须提供初始值。
运行时,必须初始化。 可以用sess.run(tf.global_variables_initializer())初始化所有变量。
tf.placeholder:表示张量(最少有一维,即最少含有一组中括号),运行时不可改变。用于得到传递进来的真实的训练样本:
声明时,不指定初始值
运行时,需要赋值。 通过 Session.run 的函数的 feed_dict 参数指定
tf.constan:表示常量,运行时不可改变。
原文始发于微信公众号(山石网科安全技术研究院):Tensorflow基础-张量(tensors)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论