2、tensor的创建
1、从numpy 和list 创建
创建一个np矩阵,再通过转换,变成tensor a = np.ones([2,3]) print(a) b = tf.convert_to_tensor(a) print(b) #直接将列表转换为tensor a = tf.convert_to_tensor([1,2,3,4]) print(a)
输出:
[[1. 1. 1.] [1. 1. 1.]] tf.Tensor( [[1. 1. 1.] [1. 1. 1.]], shape=(2, 3), dtype=float64) tf.Tensor([1 2 3 4], shape=(4,), dtype=int32)
2、tf.zeros和tf.ones
1 a = tf.zeros([]) 2 print(a) 3 #0维:tf.Tensor(0.0, shape=(), dtype=float32) 4 5 a = tf.zeros([1]) 6 print(a) 7 #1维: tf.Tensor([0.], shape=(1,), dtype=float32) 8 9 a = tf.zeros([2,2]) 10 print(a) 11 #2维: 12 """ 13 tf.Tensor( 14 [[0. 0.] 15 [0. 0.]], shape=(2, 2), dtype=float32) 16 """ 17 a = tf.zeros([2,3,3]) 18 print(a) 19 #3维 20 """ 21 tf.Tensor( 22 [[[0. 0. 0.] 23 [0. 0. 0.] 24 [0. 0. 0.]] 25 26 [[0. 0. 0.] 27 [0. 0. 0.] 28 [0. 0. 0.]]], shape=(2, 3, 3), dtype=float32) 29 """
1 #tf.zeros_like() 2 a = tf.zeros([2,3,3]) 3 print(a) 4 5 b = tf.zeros_like(a) 6 print(b)
输出:
#二者等价
tf.Tensor( [[[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]] [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]], shape=(2, 3, 3), dtype=float32) tf.Tensor( [[[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]] [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]], shape=(2, 3, 3), dtype=float32)
3、tf.fill
如果既不想初始化为1,也不想初始化为0,可用fill初始化为全部相同的指定的元素值
1 #tf.fill() 2 a = tf.fill([3,4],8) 3 print(a)
输出:
tf.Tensor( [[8 8 8 8] [8 8 8 8] [8 8 8 8]], shape=(3, 4), dtype=int32)
4、random,随机化
1 #tf.random.normal() 2 a = tf.random.normal([2,3],mean=1,stddev=1) #指定均值和标准差,如果没有指定,那么就是标准的0-1分布 3 print(a) 4 5 #tf.random.truncated_normal() 截断的正态分布,即在原来的正态分布的基础上截去一部分,在sigmod函数中,两边的梯度变化缓慢, 6 # 梯度接近0(又称为梯度消失),截断有利于优化性能的提升 7 b = tf.random.truncated_normal([2,3],mean=1,stddev=1) 8 print(b)
输出:
tf.Tensor( [[2.2344325 0.06017858 0.9663375 ] [1.175567 0.25047666 0.32527965]], shape=(2, 3), dtype=float32) tf.Tensor( [[0.4306631 2.3536594 1.5341916 ] [0.42222583 0.58707756 0.24850649]], shape=(2, 3), dtype=float32)
5、constant
1 #########tf.constant() 2 a = tf.constant(1) #数值为1的标量 3 print(a) 4 #tf.Tensor(1, shape=(), dtype=int32) 5 6 a = tf.constant([1]) #数值为1的向量 7 print(a) 8 #tf.Tensor([1], shape=(1,), dtype=int32) 9 10 a = tf.constant([1,2.]) #数值为1,2的标量,当里面有一个是浮点型时,全部转化为浮点型 11 print(a) 12 #tf.Tensor([1. 2.], shape=(2,), dtype=float32) 13 14 a = tf.constant([[1,2],[3]]) #数值元素的维数要统一,第一行两个元素,第二行也要有两个元素 15 print(a) 16 # Can't convert non-rectangular Python sequence to Tensor
6、tensor的应用
(1)[ ],Scalar标量
loss = mse(out,y),accuracy 准确度
(2)[ d ],Vector
(3)[ h,w],Matrix矩阵
(4)[ b,len,vec],自然语言处理中使用广泛,[ b,seq_len,word_dim] 即[句子,单词的数量,单词编码的长度]
(5)[ b,h,w,c],图像处理,[张数,长,宽,通道数]
(6)[ t,b,h,w,c],图像批处理,[task任务数,张数,长,宽,通道数]
浙公网安备 33010602011771号