Основной проблемой здесь является тип вашего y
.Вы не предоставили никакой информации об этом, поэтому здесь это будет более общим:
Но, очевидно, ваш ndarray
не содержит числовых типов данных.Вы должны использовать один из них, упомянутых в сообщении об ошибке:
Поддерживаются только следующие типы: double, float, float16, int64, int32 и uint8.
Вот краткий пример, демонстрирующий проблему:
Если вы используете один из ранее упомянутых типов данных, он прекрасно работает:
import torch
import numpy as np
a = np.ndarray(shape=(2,2), dtype=np.float) # data type np.float
print(a)
print(torch.autograd.Variable(torch.from_numpy(a).float()))
Вывод:
[[2.16641777e-314 2.16641777e-314]
[2.16641777e-314 2.16641777e-314]]
Variable containing:
0 0
0 0
[torch.FloatTensor of size 2x2]
Но если вы используете какой-либо другой тип данных numpy (например,
np.object
), вы получите это сообщение об ошибке:
import torch
import numpy as np
a = np.ndarray(shape=(2,2), dtype=np.object) # data type np.object
print(a)
print(torch.autograd.Variable(torch.from_numpy(a).float()))
В результате:
[[None None]
[None None]]
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-27-01e1e4bec020> in <module>()
3 a = np.ndarray(shape=(2,2), dtype=np.object)
4 print(a)
----> 5 print(torch.autograd.Variable(torch.from_numpy(a).float()))
RuntimeError: can't convert a given np.ndarray to a tensor - it has an invalid type. The only supported types are: double, float, int64, int32, and uint8.
YouВозможно, вы не указали тип данных np.object
напрямую.Я думаю, что это может быть результатом некоторых вложенных массивов или около того.
Но вам нужно привести свой числовой массив y
в правильную форму с числовым типом данных, тогда он должен работать для вас.