My input tensor is torch.DoubleTensor type. But I got the RuntimeError below:
RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #2 'weight'
I didn't specify the type of the weight explicitly(i.e. I did not init my weight by myself. The weight is created by pytorch). What will influence the type of weight in the forward process?
Thanks a lot!!
The default type for weights
and biases
are torch.FloatTensor
. So, you'll need to cast either your model to torch.DoubleTensor
or cast your inputs to torch.FloatTensor
. For casting your inputs you can do
X = X.float()
or cast your complete model to DoubleTensor
as
model = model.double()
You can also set the default type for all tensors using
pytorch.set_default_tensor_type('torch.DoubleTensor')
It is better to convert your inputs to float
rather than converting your model to double
, because mathematical computations on double
datatype is considerably slower on GPU.
I was also receiving exact same error. The root cause turned out to be this statement in my data loading code:
t = t.astype(np.float)
Here np.float translates to 64-bit float which maps to DoubleTensor. So changing this to,
t = t.astype(np.float32)
solved the issue.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With