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

https://www.cnblogs.com/cxhzy/p/13385166.html

https://tensorflow.google.cn/api_docs/python/tf

posted on 2020-08-03 13:21  西伯尔  阅读(669)  评论(0编辑  收藏  举报