How to fix RuntimeError "Expected object of scalar type Float but got scalar type Double for argument"?
Reference is from this github issue.
When the error is RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1'
, you would need to use the .float()
function since it says Expected object of scalar type Float
.
Therefore, the solution is changing y_pred = model(X_trainTensor)
to y_pred = model(X_trainTensor.float())
.
Likewise, when you get another error for loss = loss_fn(y_pred, y_trainTensor)
, you need y_trainTensor.long()
since the error message says Expected object of scalar type Long
.
You could also do model.double()
, as suggested by @Paddy.
I had same issue
resolved
Before converting to Tensor, try this
X_train = X_train.astype(np.float32)
The issue can be fixed by setting the datatype of input to Double i.e torch.float32
I hope the issue came because your datatype is torch.float64
.
You can avoid such situations either while setting the data, as explained in one of other answers or make the model type also to the same as of your data. i.e use either float64 or float32.
For debug, print obj.dtype and check for consistency.