def get_loader(data, data_normal, seq_length, u_num, batch_size):
x = []
for i in range(len(data_normal) - seq_length - 1):
_x = data_normal[i : i + seq_length]
print(_x)
print('*' * 50)
# print(_u)
x.append(_x)
x = np.array(x)
x_data = Variable(torch.Tensor(np.array(x)))
dataset = Data.TensorDataset(x_data)
loader = torch.utils.data.DataLoader(dataset=dataset, batch_size=batch_size, shuffle=False, drop_last=True)
return loader
seq_length = 10
batch_size = 16
u_num = 2
n = 100
data_normal = torch.randn((n, 1, 4))
train_loader = get_loader(data1, data_normal, seq_length, u_num, batch_size)
报错:
1. VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
2. TypeError: can't convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool.
错误原因:
1.
读入的numpy数组里的元素是object类型,无法将这种类型转换成tensor。
解决方法:将numpy数组进行强制类型转换成float类型(或者任何pytorch支持的类型:float64, float32, float16, int64, int32, int16, int8, uint8, and bool)即可。