gpt4 book ai didi

python - Pytorch:将 FloatTensor 转换为 DoubleTensor

转载 作者:太空狗 更新时间:2023-10-29 17:43:46 24 4
gpt4 key购买 nike

我有 2 个 numpy 数组,我将它们转换为张量以使用 TensorDataset 对象。

import torch.utils.data as data_utils

X = np.zeros((100,30))
Y = np.zeros((100,30))

train = data_utils.TensorDataset(torch.from_numpy(X).double(), torch.from_numpy(Y))
train_loader = data_utils.DataLoader(train, batch_size=50, shuffle=True)

当我这样做时:

for batch_idx, (data, target) in enumerate(train_loader):
data, target = Variable(data), Variable(target)
optimizer.zero_grad()
output = model(data) # error occurs here

我得到了休闲错误:

TypeError: addmm_ received an invalid combination of arguments - got (int, int, torch.DoubleTensor, torch.FloatTensor), but expected one of: [...]
* (float beta, float alpha, torch.DoubleTensor mat1, torch.DoubleTensor mat2) didn't match because some of the arguments have invalid types: (int, int, torch.DoubleTensor, torch.FloatTensor)
* (float beta, float alpha, torch.SparseDoubleTensor mat1, torch.DoubleTensor mat2) didn't match because some of the arguments have invalid types: (int, int, torch.DoubleTensor, torch.FloatTensor)

最后一个错误来自:

output.addmm_(0, 1, input, weight.t())

如您在我的代码中所见,我尝试使用 .double() 转换张量 - 但这没有用。为什么他要将一个数组转换为 FloatTensor 对象,而将另一个数组转换为 DoubleTensor?有什么想法吗?

最佳答案

您的 numpy 数组是 64 位 float ,将被标准地转换为 torch.DoubleTensor。现在,如果您将它们与您的模型一起使用,则需要确保您的模型参数也是 Double。或者您需要确保您的 numpy 数组被转换为 Float,因为模型参数被标准地转换为 float

因此,执行以下任一操作:

data_utils.TensorDataset(torch.from_numpy(X).float(), torch.from_numpy(Y).float())

或者做:

model.double()

Depeding,如果您想将模型参数、输入和目标转换为 FloatDouble

关于python - Pytorch:将 FloatTensor 转换为 DoubleTensor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44717100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com