演示 zip
, list
和 torch.stack
的使用过程。
首先,我们先导入必要的库:
import torch
现在,假设我们的模拟数据是这样的:
# 这是我们的模拟数据,其中每个内部列表的第一个元素是输入,第二个元素是目标
data = [
[torch.tensor([1, 2, 3]), torch.tensor([4, 5, 6])],
[torch.tensor([7, 8, 9]), torch.tensor([10, 11, 12])],
[torch.tensor([13, 14, 15]), torch.tensor([16, 17, 18])]
]
接下来,我们使用 zip
函数来转置这个数据:
transposed_data = list(zip(*data))
print(transposed_data)
输出:
[(tensor([1, 2, 3]), tensor([7, 8, 9]), tensor([13, 14, 15])), (tensor([4, 5, 6]), tensor([10, 11, 12]), tensor([16, 17, 18]))]
你可以看到,zip
函数已经把我们的数据转置了。现在,我们的数据是元组的列表,其中每个元组的第一个元素是所有输入数据的第一个元素,第二个元素是所有输入数据的第二个元素,以此类推。
接下来,我们使用 torch.stack
函数来把这些数据堆叠成张量:
inputs = torch.stack(transposed_data[0], 0)
targets = torch.stack(transposed_data[1], 0)
现在我们来看看得到的张量:
print(inputs)
print(targets)
输出:
tensor([[ 1, 2, 3],
[ 7, 8, 9],
[13, 14, 15]])
tensor([[ 4, 5, 6],
[10, 11, 12],
[16, 17, 18]])
这就是 zip
, list
和 torch.stack
的基本使用过程。
以上内容创作通过AI