5个简单的步骤掌握Tensorflow的Tensor( 二 )


tensor_dtype = rank_3_tensor.dtypeprint("The data type selected for this Tensor object is", tensor_dtype)Output:The data type selected for this Tensor object is 张量运算索引索引是项目在序列中位置的数字表示 。 这个序列可以引用很多东西:一个列表、一个字符串或任意的值序列 。
TensorFlow还遵循标准的Python索引规则 , 这类似于列表索引或NumPy数组索引 。
关于索引的一些规则:

  1. 索引从零(0)开始 。
  2. 负索引(“-n”)值表示从末尾向后计数 。
  3. 冒号(“:”)用于切片:开始:停止:步骤 。
  4. 逗号(“ , ”)用于达到更深层次 。
让我们用以下几行创建rank_1_tensor:
single_level_nested_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]rank_1_tensor = tf.constant(single_level_nested_list)print(rank_1_tensor)Output: tf.Tensor([ 0123456789 10 11],shape=(12,), dtype=int32)测试一下我们的规则1 , 2 , 3:
# 规则1 , 索引从0开始print("First element is:",rank_1_tensor[0].numpy())# 规则2 , 负索引print("Last element is:",rank_1_tensor[-1].numpy())# 规则3 , 切片print("Elements in between the 1st and the last are:",rank_1_tensor[1:-1].numpy())Output: First element is: 0 Last element is: 11 Elements in between the 1st and the last are: [ 123456789 10]现在 , 让我们用以下代码创建rank_2_tensor:
two_level_nested_list = [ [0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11] ]rank_2_tensor = tf.constant(two_level_nested_list)print(rank_2_tensor)Output:tf.Tensor( [[ 012345][ 6789 10 11]], shape=(2, 6), dtype=int32)并用几个例子来测试第4条规则:
print("The 1st element of the first level is:",rank_2_tensor[0].numpy())print("The 2nd element of the first level is:",rank_2_tensor[1].numpy())# 规则4, 逗号代表进入更深层print("The 1st element of the second level is:",rank_2_tensor[0, 0].numpy())print("The 3rd element of the second level is:",rank_2_tensor[0, 2].numpy())Output: The first element of the first level is: [0 1 2 3 4 5] The second element of the first level is: [ 6789 10 11] The first element of the second level is: 0 The third element of the second level is: 2现在 , 我们已经介绍了索引的基本知识 , 让我们看看我们可以对张量进行的基本操作 。
张量基本运算你可以轻松地对张量进行基本的数学运算 , 例如:
  1. 加法
  2. 元素乘法
  3. 矩阵乘法
  4. 求最大值或最小值
  5. 找到Max元素的索引
  6. 计算Softmax值
让我们看看这些运算 。 我们将创建两个张量对象并应用这些操作 。
a = tf.constant([[2, 4],[6, 8]], dtype=tf.float32)b = tf.constant([[1, 3],[5, 7]], dtype=tf.float32)我们可以从加法开始 。
# 我们可以使用' tf.add() '函数并将张量作为参数传递 。 add_tensors = tf.add(a,b)print(add_tensors)Output:tf.Tensor( [[ 3.7.][11. 15.]], shape=(2, 2), dtype=float32)乘法
# 我们可以使用' tf.multiply() '函数并将张量作为参数传递 。 multiply_tensors = tf.multiply(a,b)print(multiply_tensors)Output:tf.Tensor( [[ 2. 12.][30. 56.]], shape=(2, 2), dtype=float32)矩阵乘法:
# 我们可以使用' tf.matmul() '函数并将张量作为参数传递 。 matmul_tensors = tf.matmul(a,b)print(matmul_tensors)Output:tf.Tensor( [[ 2. 12.][30. 56.]], shape=(2, 2), dtype=float32)注意:Matmul操作是深度学习算法的核心 。 因此 , 尽管你不会直接使用matmul , 但了解这些操作是至关重要的 。
我们上面列出的其他操作示例:
# 使用' tf.reduce_max() '和' tf.reduce_min() '函数可以找到最大值或最小值print("The Max value of the tensor object b is:",tf.reduce_max(b).numpy())# 使用' tf.argmax() '函数可以找到最大元素的索引print("The index position of the max element of the tensor object b is:",tf.argmax(b).numpy())# 使用 tf.nn.softmax'函数计算softmaxprint("The softmax computation result of the tensor object b is:",tf.nn.softmax(b).numpy())Output:The Max value of the tensor object b is: 1.0 The index position of the Max of the tensor object b is: [1 1] The softmax computation result of the tensor object b is: [[0.11920291 0.880797][0.11920291 0.880797]]操纵形状就像在NumPy数组和pandas数据帧中一样 , 你也可以重塑张量对象 。
这个变形操作非常快 , 因为底层数据不需要复制 。 对于重塑操作 , 我们可以使用tf.reshape函数
# 我们的初始张量a = tf.constant([[1, 2, 3, 4, 5, 6]])print('The shape of the initial Tensor object is:', a.shape)b = tf.reshape(a, [6, 1])print('The shape of the first reshaped Tensor object is:', b.shape)c = tf.reshape(a, [3, 2])print('The shape of the second reshaped Tensor object is:', c.shape)# 如果我们以shape参数传递-1 , 那么张量就变平坦化 。 print('The shape of the flattened Tensor object is:', tf.reshape(a, [-1]))