1.创建tensor
# 2.2.1 创建tensor 三类方法:
# 1.常量 # 1.1 tf.constant(value, dtype=None, shape=None),tf.convert_to_tensor(value, dtype=None),tf.fill(dims, value)。 # value:可以是range(3),可以是list [[1,2,3],[2,3,5]],也可以是numpy实例np.ones(shape)。 # shape:一维格式shape=[2]或(2),二维格式shape=[2,3]或(2,3),三维格式shape=[2,3,4]或(2,3,4)。 # dims:一维格式[2]或(2),二维格式[2,3]或(2,3),三维格式[2,3,4]或(2,3,4)。 print(tf.constant([[0, 1, 2], [3, 4, 5]])) # 默认shape不变 print(tf.constant([[0, 1, 2], [3, 4, 5]], shape=[1, 6])) # shape可以重塑 # print(tf.constant([[0, 1, 2], [3, 4, 5]], shape=[1, -1])) # shape中行、列不能用-1来省略,报错! print(tf.convert_to_tensor([[0, 1, 2], [3, 4, 5]])) # 没有shape参数 print(tf.fill([2, 3, 2], 8)) # 创建元素相同的tensor,dims不能省略参数 # 1.2 tf.zeros(shape, dtype=dtypes.float32),tf.ones(shape, dtype=dtypes.float32)。 # shape:一维格式[2]或(2),二维格式[2,3]或(2,3),三维格式[2,3,4]或(2,3,4)。 print(tf.zeros([2, 3, 2])) print(tf.ones([2, 3, 2]), tf.int32)
# 2.随机量 # 正态分布: # tf.random.normal(shape,mean=0.0,stddev=1.0,dtype=dtypes.float32,seed=None) # 截断正态分布:去掉梯度消失部分的正态分布。生成的值遵循一个正态分布,但不会大于平均值2个标准差。
# 例如,当均值为0,标准差为1时,使用tf.random.truncated_normal()不可能出现区间[-2,2]以外的点。使用tf.random.normal()可能出现区间[-2,2]以外的点。
# tf.random.truncated_normal(shape,mean=0.0,stddev=1.0,dtype=dtypes.float32,seed=None) # shape:默认是一个数。格式[3,4],shape=[1,2]和shape=[2]结果不相同,后者是前者的一行。 # mean:均值,默认0。数据类型为dtype的张量值或Python值。 # stddev:标准差,默认1。数据类型为dtype的张量值或Python值。 # dtype:类型,常省略,默认dtype=tf.float32。格式dtype=tf.xx,不能是int类型,会报错。 # seed:一个Python整数。是随机种子。
# 均匀分布:
# tf.random.uniform(shape, minval=0, maxval=None, dtype=tf.dtypes.float32, seed=None) # minval, maxval:生成值的范围,[minval, maxval),左闭右开。 # float型,默认范围为[0, 1),int型,至少maxval必须明确指定。 # dtype:默认dtype=tf.float32。 print(tf.random.normal([3, 4])) print(tf.random.truncated_normal([2, 3])) print(tf.random.uniform([2, 3])) print(tf.random.uniform([2, 3], dtype=tf.float64)) # 32位和64位精度不同,值看不出区别 # x = tf.random.uniform([2, 3]) # y = tf.random.uniform([2, 3], dtype=tf.float64) # print(x + y) # 32位和64位tensor不能相加,需要统一类型 print(tf.random.uniform([2, 3], minval=2, maxval=10, dtype=tf.float32)) print(tf.random.uniform([2, 3], maxval=10, dtype=tf.int32)) print(tf.random.uniform([2, 3], minval=2, maxval=10, dtype=tf.int64)) # 3.序列 # tf.range(start, limit=None, delta=1, dtype=None), # 创建元素取值为整数序列的tensor,没有shape参数,默认是一维shape=(4,) # start:起始数字,默认0。 # limit:结束数字。如果只有一个参数,默认是limit。 # delta:步长,默认1。 # dtype:默认dtype=tf.int32。 print(tf.range(4)) print(tf.range(4, dtype=tf.float32))
# 4.补充 # 如需为tensor指定shape,可以调用tf.reshape(tensor, shape)方法。 # tensor:可以是tf.constant(),tf.Variable(),tf.range()的返回值。 # shape:格式[2,3]或(2,3),行、列可以省略一个(写成-1) print(tf.reshape(tf.range(4), (2, 2))) print(tf.reshape(tf.range(4), (-1, 2)))
参考:
https://trickygo.github.io/Dive-into-DL-TensorFlow2.0
作者:西伯尔
出处:http://www.cnblogs.com/sybil-hxl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。