如何将火炬 int64 转换为火炬 LongTensor?

Dav*_*ord 5 python pytorch

我会通过使用PyTorch的汰换版本不会改变课程torch.int64,以torch.LongTensor根据需要。抛出错误的当前代码部分是:

loss = loss_fn(Ypred, Ytrain_) # calc loss on the prediction

我相信 dtype 应该在本节中更改:

Ytrain_ = torch.from_numpy(y_train.values).view(1, -1)[0].

使用Ytrain_.dtype它测试数据类型时,返回torch.int64. 我试图通过应用long()函数来转换它:Ytrain_ = Ytrain_.long()无济于事。

我也试过在文档中寻找它,但它似乎说torch.int64ORtorch.long我认为这意味着torch.int64应该工作。

RuntimeError                              Traceback (most recent call last)
----> 9     loss = loss_fn(Ypred, Ytrain_) # calc loss on the prediction
RuntimeError: Expected object of scalar type Long but got scalar type Int for argument #2 'target'
Run Code Online (Sandbox Code Playgroud)

Dav*_*ord 8

user8426627您所说,您要更改张量类型,而不是数据类型。因此,解决方案是添加.type(torch.LongTensor)以将其转换为LongTensor.

最终代码:

Ytrain_ = torch.from_numpy(Y_train.values).view(1, -1)[0].type(torch.LongTensor)

测试张量类型:

Ytrain_.type()

'torch.LongTensor'