pytorch输入张量大小错误的尺寸Conv1D

帕特里克·梅纳德
 def train(epoch):
      model.train()
      train_loss = 0

  for batch_idx, (data, _) in enumerate(train_loader):
    data = data[None, :, :]
    print(data.size())    # something seems to change between here

    data = data.to(device)
    optimizer.zero_grad()
    recon_batch, mu, logvar = model(data) # and here???

    loss = loss_function(recon_batch, data, mu, logvar)
    loss.backward()
    train_loss += loss.item()

    optimizer.step()

    if batch_idx % 1000 == 0:
            print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
                epoch, batch_idx * len(data), len(train_loader.dataset),
                100. * batch_idx / len(train_loader),
                loss.item() / len(data)))


  print('====> Epoch: {} Average loss: {:.4f}'.format(epoch, train_loss / len(train_loader.dataset)))

for epoch in range(1, 4):
        train(epoch)

这是很奇怪的训练循环,它确实知道大小是[1,1,1998]多少,但是发送到设备后又发生了变化?

    torch.Size([1, 1, 1998])
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-138-70cca679f91a> in <module>()
     27 
     28 for epoch in range(1, 4):
---> 29         train(epoch)

5 frames
/usr/local/lib/python3.6/dist-packages/torch/nn/modules/conv.py in forward(self, input)
    255                             _single(0), self.dilation, self.groups)
    256         return F.conv1d(input, self.weight, self.bias, self.stride,
--> 257                         self.padding, self.dilation, self.groups)
    258 
    259 

RuntimeError: Expected 3-dimensional input for 3-dimensional weight [12, 1, 1], but got 2-dimensional input of size [1, 1998] instead

这也是我的模型(我认识到这里可能还有其他一些问题,但我在询问张量大小未注册)

class VAE(nn.Module):
  def __init__(self):
    super(VAE, self).__init__()

    self.conv1 = nn.Conv1d( 1,12, kernel_size=1,stride=5,padding=0)
    self.conv1_drop = nn.Dropout2d()
    self.pool1 = nn.MaxPool1d(kernel_size=3, stride=2)

    self.fc21 = nn.Linear(198, 1)
    self.fc22 = nn.Linear(198, 1)

    self.fc3 = nn.Linear(1, 198)
    self.fc4 = nn.Linear(198, 1998)

  def encode(self, x):
    h1 = self.conv1(x)
    h1 = self.conv1_drop(h1)
    h1 = self.pool1(h1)
    h1 = F.relu(h1)
    h1 = h1.view(1, -1) # 1 is the batch size
    return self.fc21(h1), self.fc22(h1)
  
  def reparameterize(self, mu, logvar):
    std = torch.exp(0.5*logvar)
    eps = torch.rand_like(std)
    return mu + eps*std 
  
  def decode(self, z):
    h3 = F.relu(self.fc3(z))
    return torch.sigmoid(self.fc4(h3))
  
  def forward(self, x):
    mu, logvar = self.encode(x.view(-1, 1998))
    z = self.reparameterize(mu, logvar)
    return self.decode(z), mu, logvar

那么为什么Pytorch在重塑后不保留尺寸,如果可以,那将是正确的张量吗?

帕特里克·梅纳德

我刚刚发现我的错误,当我叫forward()我做的self.encode(x.view(-1,1998))这是重塑张量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

蜡烛 Conv1D 上的负尺寸大小

来自分类Dev

conv2d 函数后输出大小错误

来自分类Dev

了解PyTorch conv1D的输入形状吗?

来自分类Dev

NSImage大小错误?

来自分类Dev

如何使用自定义损失函数处理批量大小错误?

来自分类Dev

ValueError:Layer conv1d的输入不是符号张量,层的所有输入都应为张量

来自分类Dev

使用conv1D时输入数据和训练数据之间的尺寸不匹配

来自分类Dev

python中kera LSTM网络的模型拟合和尺寸大小错误

来自分类Dev

使用NSAttributedString的usedRectForTextContainer大小错误?

来自分类Dev

UIImagePickerController的视图大小错误

来自分类Dev

WCF服务消息大小错误

来自分类Dev

JTable:无行,高度大小错误

来自分类Dev

Teradata行大小错误

来自分类Dev

WKWebView + contentInset使内容大小错误

来自分类Dev

Kmeans:群集大小错误

来自分类Dev

为什么JPanel大小错误?

来自分类Dev

画布drawImage大小错误

来自分类Dev

JTable:无行,高度大小错误

来自分类Dev

隐藏div的CSS大小错误

来自分类Dev

Pandoc有堆栈大小错误?

来自分类Dev

全高调整大小错误

来自分类Dev

用NSAttributedString的usedRectForTextContainer大小错误?

来自分类Dev

PHP中的文件大小错误

来自分类Dev

chartjs-画布大小错误

来自分类Dev

IE中的按钮大小错误

来自分类Dev

NVMe中的扇区大小错误

来自分类Dev

USB显示大小错误

来自分类Dev

RTMP 中的块大小错误?

来自分类Dev

设备上的图像大小错误