改变这个
t_x1=x1.view(10,30,1)
如
t_x1=x1.view(150,150,1)
并尝试一下
鉴于你使用 batch_first=True 并假设批量大小为10, (10, 30, 1) 由于输入的形状是正确的 (batch_size, seq_len, input_size) 。
batch_first=True
(10, 30, 1)
(batch_size, seq_len, input_size)
问题是在哪里 150 来自。什么是形状 x1 在尝试申请之前 .view(...) ?你能检查以下内容:
150
x1
.view(...)
for i,(x1,y1) in enumerate(trainloader): print(x1.shape) ...
直观地说,应该是这样的 (10, ???) 因为您将10设置为批量大小。现在我假设你训练和测试数据的某些东西是关闭的。
(10, ???)
从view()方法的文档中, '返回的张量共享相同的数据和 的 必须具有相同数量的元素 强> ,但可能有不同的大小。
x1 = torch.randn((150,)) t_x1 = x1.view(10,30,1)
RuntimeError:shape'[10,30,1]'对于大小为150的输入无效
这是因为150!= 10 * 30.如果你想使用30个时间步长,那么你的样本量应该是150/30 = 5.所以,正确的方法是
t_x1 = x1.view(5,30,1)