【问题标题】:Getting error when trying to torch stack a list of tensors尝试通过火炬堆叠张量列表时出错
【发布时间】:2020-04-16 14:02:56
【问题描述】:

我正在尝试让 cuda 工作,但我需要将我的训练输入更改为张量。当我尝试这样做时,当我尝试将张量列表堆叠到一个张量中时出现错误。

代码

for epoch in:
        alst = []
        for x, y in loader:
            x = torch.stack(x)
            #x = torch.Tensor(x)
            #x = torch.stack(x).to(device,dtype=float)

x 的形状:张量列表

[tensor([[[0.325],
     [ 0.1257],
     [ 0.1149],
     ...,
     [-1.572],
     [-1.265],
     [-3.574]],
]), tensor([1,2,3,4,5]), tensor(6,5,4,3,2])]

我遇到的错误

     22             alst = []
     23             for x, y in loader:
---> 24                 x_list = torch.stack(x)
     25 #                 x = torch.Tensor(x)
     26 #                 x = torch.stack(x).to(device,dtype=float)

RuntimeError: Expected object of scalar type Float but got scalar type Long for sequence element 1 in sequence argument at position #1 'tensors'

不知道我做错了什么。我也试过x = torch.stack(x).to(device,dtype=float),但还是不行。

【问题讨论】:

    标签: pytorch tensor


    【解决方案1】:

    输出中的第一个张量是浮点类型,其值用于输入网络,第二个看起来像标签(long 类型)。

    此外,第一个元素是tensor,而第二个和第三个元素是vectors(分别带有69 元素)。

    您不能堆叠不同形状的tensors,因此无论类型如何,这都不起作用。

    通过

    解压你的x
    matrix, vector1, vector2 = x
    

    删除type 警告将vector1vector2 转换为float 通过

    vector1 = vector1.float()
    

    通过.shape 属性检查它们的形状并采取相应措施。 可能您在使用 train_loader 时已经拥有批量数据。请参阅:DataLoader documentation 了解更多信息并检查您是否正在使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 2021-08-25
      • 2022-08-04
      • 1970-01-01
      相关资源
      最近更新 更多