将变量变成火炬张量。之后张量为空/没有元素

Turning variable into a torch Tensor. Afterwards tensor is empty / has no element

以下是我的代码。 “序列”是我的训练数据,格式为 [139 行 x 4 列],0),其中 139x4 是我的信号,0 是我的编码标签。

    def __getitem__(self, idx):
      sequence, label = self.sequences[idx]
  
      #converting sequence and label to tensors 
      sequence = torch.Tensor(sequence.to_numpy())
      
      print("label before tensor", label)
      label = torch.Tensor(label).long()
      print("numel() labels   :", label.numel())
      print("label shape    :", shape(label))
      return (sequence, label) 

代码输出为:

      >>label bevore tensor 0  (This is my encoded label)
      >>numel() labels   : 0
      >>label shape    : torch.Size([0])

为什么我的标签张量是空的?

因为 torch.Tensor 需要一个数组(在这种情况下,这个数组成为基础值)或几个 ints,这将是张量的大小。因此 torch.Tensor(0) 实例化了一个大小为 0 的张量。

您可以使用 torch.Tensor([0])torch.tensor(0)。我不知道为什么这两个对象的行为方式不同,但我建议使用 tensor(不大写),因为它有更好的记录(Tensor 似乎是 C 的一部分端口)

编辑:找到