TypeError: ‘<‘ not supported between instances of ‘Example‘ and ‘Example‘解决办法

最近在用torchtext时碰到一些问题,在博文参考这篇博文中给出了方案,但没有完全解决问题,依然报错。
在对BucketIterator.splits了解后发现其中的参数sort_with_batch要设置为True,并指定排序的key为文本长度,方便后面pytorch RNN进行pack和pad。

train_data = TabularDataset.splits(
                                    path = './',
                                    train = 'train.csv',
                                    format = 'csv',
                                    fields = fields,
                                    skip_header = False)[0] # 是否跳过文件的第一行 

# 然后再生成itrerator时需要指定sort_within_batch,sort_key两个参数
train_iterator, valid_iterator, test_iterator = BucketIterator.splits(
    (train_data, valid_data, test_data), 
    batch_size=BATCH_SIZE,
    sort_within_batch=True, # 每个batch内的数据按照sork_key降序排列,为pack_padded_sequence做准备
    sort_key = lambda x:len(x.eContent), # 注意 lambda 的参数 x 是train_data的 Example 对象
    device=device)

参考资料:
1)TypeError: ‘<‘ not supported between instances of ‘Example‘ and ‘Example‘解决办法
2)torchtext预处理数据

你可能感兴趣的:(python,pytorch,python,深度学习,pytorch)