import tensorflow as tf
x = tf.range(12)
print("\n")
print("x是:0开始的前12个整数")
print(x)
print("\n")
print("x的形状")
print(x.shape)
print("\n")
print("x的大小")
print(tf.size(x))
print("\n")
X = tf.reshape(x, (3, 4))
print("转换为形状为(3,4)的矩阵:")
print(X)
print("\n")
print("所有元素都设置为0:")
print(tf.zeros((2, 3, 4)))
print("\n")
print("所有元素都设置为1")
print(tf.ones((2, 3, 4)))
print("\n")
print("从均值为0,标准差为1的正态分布中随机采样:")
print(tf.random.normal(shape=[3, 4]))
print("\n")
print("每个元素赋予确定值")
print(tf.constant([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]))
print("\n")
print("标准算术运算符(+、-、*、/和**)**是求幂")
x = tf.constant([1.0, 2, 4, 8])
y = tf.constant([2.0, 2, 2, 2])
print( x + y, x - y, x * y, x / y, x ** y )
print("\n")
print("一元运算符求幂")
print(tf.exp(x))
print("\n")
print("张量连结(concatenate)")
X = tf.reshape(tf.range(12, dtype=tf.float32), (3, 4))
Y = tf.constant([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
print(tf.concat([X, Y], axis=0))
print(tf.concat([X, Y], axis=1))
print("\n")
print("逻辑语句X == Y")
print(X == Y)
print("\n")
print("所有元素进行求和")
print(tf.reduce_sum(X))
print("\n")
print("沿着数组中长度为1的轴进行广播")
a = tf.reshape(tf.range(3), (3, 1))
b = tf.reshape(tf.range(2), (1, 2))
print(a)
print(b)
print("\n")
print("形状不匹配。 我们将两个矩阵广播为一个更大的3*2矩阵")
print(a + b)
print("\n")
print("索引和切片:用[-1]选择最后一个元素,可以用[1:3]选择第二个和第三个元素")
print(X[-1])
print(X[1:3])
print("\n")
print("Variable分配一个值之外,还可以通过索引来写入Variable的元素。")
X_var = tf.Variable(X)
print(X_var)
X_var[1, 2].assign(9)
print(X_var)
print("\n")
print("多个元素赋值相同的值。")
X_var = tf.Variable(X)
X_var[0:2, :].assign(tf.ones(X_var[0:2, :].shape, dtype=tf.float32) * 12)
print(X_var)
print("\n")
print("指向新分配的内存处的张量")
before = id(Y)
Y = Y + X
print(id(Y) == before)
print("assign将一个操作的结果分配给一个Variable。")
Z = tf.Variable(tf.zeros_like(Y))
print('id(Z) befor:', id(Z))
Z.assign(X + Y)
print('id(Z) after:', id(Z))
print("\n")
@tf.function # 通过tf.function装饰器来构建图
def computation(X, Y):
Z = tf.zeros_like(Y) # 这个未使用的值将被删除
print("Z的id:", id(Z))
A = X + Y # 当不再需要时,分配将被复用
B = A + Y
C = B + Y
return C + Y
print(computation(X, Y))
print("\n")
print("张量转换为NumPy张量,转换后的结果不共享内存。")
A = X.numpy()
B = tf.constant(A)
print(type(A), type(B))
print("\n")
print("转换后可以使用 内置函数")
a = tf.constant([3.5]).numpy()
print(a, a.item(), float(a), int(a))
print("\n")
print("作业1:将本节中的条件语句X == Y更改为X < Y或X > Y,然后看看你可以得到什么样的张量。")
print(X, Y)
print(X < Y)
print(X > Y)
print("\n")
print("作业2:用其他形状(例如三维张量)替换广播机制中按元素操作的两个张量。结果是否与预期相同?")
A = tf.reshape(tf.range(24, dtype=tf.float32), (2, 3, 4))
B = tf.reshape(tf.range(12, dtype=tf.float32), (3, 4))
print(A, B)
[深度学习] 张量 麻辣烫
最新推荐文章于 2024-06-13 08:10:28 发布