📜  TensorFlow – 如何将 rank-R 张量列表并行堆叠成一个 rank-(R+1) 张量(1)

📅  最后修改于: 2023-12-03 14:47:54.242000             🧑  作者: Mango

TensorFlow – 如何将 rank-R 张量列表并行堆叠成一个 rank-(R+1) 张量

在 TensorFlow 中,如果你有一组相同形状的张量,你可能想把它们合并成一个更高维度排列的张量。 比如,你有一个维度为 (3,4) 的张量列表,你想将它们合并成一个维度为 (2,3,4) 的张量。 这可以通过 TensorFlow 的 tf.stack() 函数完成。

代码示例

下面是一个将两个维度相同的张量进行堆叠的代码示例。

import tensorflow as tf

# 创建张量
tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]])
tensor2 = tf.constant([[7, 8, 9], [10, 11, 12]])

# 堆叠张量
stacked_tensor = tf.stack([tensor1, tensor2])

# 查看结果
print(stacked_tensor)

输出:

Tensor("stack:0", shape=(2, 2, 3), dtype=int32)

这个代码示例首先创建了两个大小相同的张量并存储在 tensor1 和 tensor2 变量中。 然后它通过 tf.stack() 函数将这两个张量堆叠成一个新的张量 stacked_tensor。 这个新张量的形状为 (2,2,3),其中前面两个维度对应于原始张量的数量,而最后一个维度等于原始张量的形状。

Note: 请注意,第一个维度被用作堆叠维度,并且堆叠的张量数量必须相同。因此,如果您想堆叠一个大小为 (3,) 的张量和一个大小为 (3,1) 的张量,您将无法使用 tf.stack()。

其他用法

你还可以通过给 tf.stack() 函数传递 axis 参数来指定堆叠的维度。 例如,如果你有一个维度为 (2,3) 的张量列表,你可以将它们沿第三个维度合并成一个维度为 (2,3,2) 的张量。

import tensorflow as tf

# 创建张量
tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]])
tensor2 = tf.constant([[7, 8, 9], [10, 11, 12]])

# 沿第三个维度堆叠张量
stacked_tensor = tf.stack([tensor1, tensor2], axis=2)

# 查看结果
print(stacked_tensor)

输出:

Tensor("stack:0", shape=(2, 3, 2), dtype=int32)
结论

在 TensorFlow 中,你可以使用 tf.stack() 函数将张量列表合并成一个更高维度的张量。 张量必须具有相同的形状,并且它们将根据堆叠轴的选择在不同的维度上合并。 这个函数在创建深度神经网络和其他机器学习应用程序中是非常有用的。