Python Pyrotch LSTM:运行时错误:参数0无效:除维度0外,张量的大小必须匹配。尺寸1中有1219和440

Python Pyrotch LSTM:运行时错误:参数0无效:除维度0外,张量的大小必须匹配。尺寸1中有1219和440,python,pytorch,lstm,Python,Pytorch,Lstm,我有一个基本的Pytork LSTM: import torch.nn as nn import torch.nn.functional as F class BaselineLSTM(nn.Module): def __init__(self): super(BaselineLSTM, self).__init__() self.lstm = nn.LSTM(input_size=13, hidden_size=13) def forwar

我有一个基本的Pytork LSTM:

import torch.nn as nn
import torch.nn.functional as F

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

        self.lstm = nn.LSTM(input_size=13, hidden_size=13)

    def forward(self, x):
        x = self.lstm(x)

        return x
对于我的数据,我有:

train_set = CorruptedAudioDataset(corrupted_path, train_set=True)
train_loader = torch.utils.data.DataLoader(train_set, batch_size=128, shuffle=True, **kwargs)
我的
损坏的AudioDataSet
具有:

    def __getitem__(self, index):
        corrupted_sound_file = SoundFile(self.file_paths[index])
        corrupted_samplerate = corrupted_sound_file.samplerate
        corrupted_signal_audio_array = corrupted_sound_file.read()

        clean_path = self.file_paths[index].split('/')
        # print(self.file_paths[index], clean_path)
        clean_sound_file = SoundFile(self.file_paths[index])
        clean_samplerate = clean_sound_file.samplerate
        clean_signal_audio_array = clean_sound_file.read()


        corrupted_mfcc = mfcc(corrupted_signal_audio_array, samplerate=corrupted_samplerate)
        clean_mfcc = mfcc(clean_signal_audio_array, samplerate=clean_samplerate)


        print('return', corrupted_mfcc.shape, clean_mfcc.shape)
        return corrupted_mfcc, clean_mfcc
我的训练循环如下所示:

    model = BaselineLSTM()
    for epoch in range(300):
        for inputs, outputs in train_loader:
            print('inputs', inputs)
这就是我得到错误的那一行:

  File "train_lstm_baseline.py", line 47, in train
    for inputs, outputs in train_loader:
...
RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 1219 and 440 in dimension 1 at ../aten/src/TH/generic/THTensor.cpp:612

不知道我做错了什么。任何帮助都将不胜感激。谢谢

引发此异常基本上是因为您正在加载具有不同形状的批处理。因为它们存储在同一张量中,所以所有样本必须具有相同的形状。在本例中,您在维度0中有一个输入1219和440,这是不可能的。例如,您有如下内容:

torch.Size([1, 1219])
torch.Size([1, 440])
torch.Size([1, 550])
...
你必须具备:

torch.Size([1, n])
torch.Size([1, n])
torch.Size([1, n])
...
解决此问题的最简单方法是设置
batch\u size=1
。但是,它可能会延迟您的代码

最好的方法是将数据设置为相同的形状。在这种情况下,您需要评估您的问题,以检查是否可能

我希望有帮助