记录一下最近在学的Tensorflow
1)Tensor代表张量,阶代表张量的维数,张量可以表示从0阶到n阶的数组或列表。
比如:m=[1,2,3]代表1阶数组;
n=[[1,2,3],[4,5,6]]代表2阶数组;
所以:t=[[[ //有几个中括号就代表几阶数组
下面创建一个张量
import tensorflow as tf
a = tf.constant([[1,2,3],[4,5,6]],dtpye=tf.int32)
print("a.shape",a.shape)
print("a.dtype",a.dtype)
输出结果为:a.shape: (2,3) a.dtype: int32
shape:用逗号隔开了几个数字就指该张量是几维的,本例中隔开了两个数字,所以是二维的,并且是两行三列的。
假如输入的张量为[[[1,2,3,1],[4,5,6,1],[7,8,9,1]],[[1,2,3,1],[4,5,6,1],[7,8,9,1]]]
则其shape为(2, 3, 4)
2)
# 创建一个全为0的张量
a = tf.zeros(2)
# 创建一个全为1的张量
b = tf.ones([3,4])
# 创建一个全为指定值的张量
c = tf.fill([2,2,2],9)
打印结果输出如下:
a: [0. 0.]
b: [[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
c: [[[9 9]
[9 9]]
[[9 9]
[9 9]]]
小结:生成一维的张量则直接输入数字,二维张量则中括号内对应行数和列数,n维向量则中括号内对应每一维度的维数。
3)生成正态分布的随机数:
tf.random.normal(维度,mean=均值,stddev=标准差);//默认均值为0,标准差为1
若想要随机生成的张量取值在(μ-2σ,μ+2σ)之间,则应使用tf.random.truncated_normal(维度,mean=均值,stddev=标准差)
import tensorflow as tf
a = tf.random.normal([2,])
b = tf.random.truncated_normal([2,2],mean=0.5,stddev=1)
print("a:",a)
print("b:",b)
输出结果如下:
a: [0.44777444 0.18542671]
b: [[ 1.6830496 0.01254684]
[-0.5205568 -0.26113653]]
生成均匀分布的随机数:
tf.random.uniform(维数,minval=最小值,maxval=最大值)
import tensorflow as tf
a = tf.random.uniform([2,2],minval=0,maxval=1)
print("a:",a)
输出结果的两行两列二维数组的每个值均在[0,1)之间
f: [[0.60884523 0.1952107 ]
[0.11723614 0.2950511 ]]