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任务数,张数,长,宽,通道数]

 

 

posted on 2019-11-20 09:31  Luaser  阅读(961)  评论(0)    收藏  举报