gpt4 book ai didi

python - PyTorch LSTM : RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. 在维度 1 中得到 1219 和 440

转载 作者:行者123 更新时间:2023-12-01 21:47:29 25 4
gpt4 key购买 nike

我有一个基本的 PyTorch 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)

我的 CorruptedAudioDataset 有:

    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_size=1。但是,它可能会延迟您的代码。

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

关于python - PyTorch LSTM : RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. 在维度 1 中得到 1219 和 440,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60154328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com