2.2 数据操作
程序员文章站
2022-03-21 19:46:36
...
小白学深度学习
1. 创建tensor
x = tf.constant(range(12))
x.shape
len(x)
X = tf.reshape(x, (3, 4))
tf.zeros((2, 3, 4))
tf.ones((3, 4))
tf.random.normal(shape=[3, 4], mean=0, stddev=1, dtype=tf.float32)
注意:这里使用tf.random.normal()
函数时最后一定要加上dtype=tf.float32
,不然可能会报错
2. 运算
## 数据类型转换函数
Y = tf.constant([1, 2, 3], dtype = tf.int32)
tf.cast(Y, tf.float32)
## 矩阵乘法函数
tf.matmul(X, tf.transpose(Y))
## 联结函数
tf.concat([X, Y], axis = 0)
## 求和函数
tf.reduce_sum(X)
## 求范数函数(默认为欧式范数)
tf.norm(X, ord = 1)
3. 索引
X = tf.reshape(tf.constant(range(12)), (3, 4))
X = tf.Variable(X)
X[1].assign(tf.ones(X[1].shape, dtype = tf.float32)*12)
4. 运算的内存开销
注:若两个实例的ID一致,则他们所对应的内存地址也相同
# 节省内存开销
## 方法1
Z = tf.Variable(tf.zeros_like(Y))
before = id(Z)
Z[:].assign(X + Y)
id(Z) == before
## 方法2
before = id(X)
X.assign_add(Y)
id(X) == before
5. tensor和NumPy互换
## NumPy实例变为tensor实例
P = np.ones((2, 3))
D = tf.constant(P)
## tensor实例变为NumPy实例
P = np.array(D)