成功解决ValueError: expected sequence of length 24 at dim 1 (got 30)

问题描述

ValueError: expected sequence of length 24 at dim 1 (got 30)

X_train = torch.tensor([data[0] for data in train_data], dtype=torch.long)

原因分析:

这个错误通常是由于数据集中的某些序列长度不一致,而模型期望所有序列具有相同的长度。在这个特定的情况下,模型期望序列长度为24,但是某些序列的长度为30。


解决方案:

(1)检查数据集中的所有序列的长度,确保它们都小于或等于所需的最大序列长度max_len。如果发现任何长度超过了max_len的序列,则需要将这些序列剪切或截断至max_len。

(2)添加填充标记以使所有序列的长度相同。在数据处理部分(如pad_sequence函数)添加填充标记,并将所有序列填充到所需的长度,以便进行批处理。在这种情况下,最好将所有序列填充到max_len的长度,而不是使用太短的长度。
例如:

def pad_sequence(seq):
    seq = seq[:max_len]
    padded_seq = seq + ["<PAD>"] * (max_len - len(seq)) 
    processed_seq = [word2idx[word] for word in padded_seq if word in word2idx]
    return processed_seq

以上的pad_sequence函数将把填充标记添加到序列的末尾,以使其具有期望的长度。如果序列长度超过max_len,则会将其截断至max_len。

猜你喜欢

转载自blog.csdn.net/weixin_56242678/article/details/130899838
今日推荐