为了账号安全,请及时绑定邮箱和手机立即绑定

了解 TypeError:“示例”和“示例”的实例之间不支持“<”

了解 TypeError:“示例”和“示例”的实例之间不支持“<”

繁星点点滴滴 2022-06-14 10:17:54
我正在使用多头注意力转换器模型进行文本简化项目。同样,我使用 torchtext 进行标记化和数字化。数据集包含两个用于训练的对齐文件和两个用于测试的对齐文件。在训练文件中,一个文件包含复杂句子,而另一个文件包含相应的简化句子。我是这样阅读文件的:training_sentences = open(path + "train.en" , encoding = "utf-8").read().split("\n")target_sentences = open(path + "train.sen" , encoding = "utf-8").read().split("\n")接下来,我将它们标记为:complicated = spacy.load('en')simple = spacy.load('en')def tokenize_complicated(sentence):   return [tok.text for tok in complicated.tokenizer(sentence)]def tokenize_simple(sentence):    return [tok.text for tok in simple.tokenizer(sentence)]C_TEXT = Field(tokenize=tokenize_complicated, fix_length = 100)S_TEXT = Field(tokenize=tokenize_simple, fix_length = 100, init_token = "<sos>", eos_token = "<eos>")然后我转换成 torchtext 的 TabularDataset 对象。import pandas as pdraw_data = {'Complicated' : [line for line in training_sentences],         'Simple': [line for line in target_sentences]}df = pd.DataFrame(raw_data, columns=["Complicated", "Simple"])df.to_csv("df.csv", index=False)data_fields = [('Complicated', C_TEXT), ('Simple', S_TEXT)]train = torchtext.data.TabularDataset.splits(path='./', train = "df.csv", format='csv', fields=data_fields, skip_header = True)然后创建词汇C_TEXT.build_vocab(train)S_TEXT.build_vocab(train)但是,这样做我得到了这个错误:TypeError:“示例”和“示例”的实例之间不支持“<”在搜索时,我在这里遇到了这个解决方案,错误消失了。但是,我不明白这是否使模型只采用一个实例还是采用所有数据集?我想知道索引的重要性,[0]以便我可以为我的模型有效地操纵它。
查看完整描述

2 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

在声明中:

train = torchtext.data.TabularDataset.splits(path='./', train = "df.csv", format='csv', fields=data_fields, skip_header = True)

索引[0]用于解包以自定义类型的 TabularDataset(元组)返回的数据集。在上述语句的末尾添加索引,我们可以访问元组中的单个元素。

然而在声明中

train,val = torchtext.data.TabularDataset.splits(path='./', train = "df.csv", validation = “val.csv”, format='csv', fields=data_fields, skip_header = True)

解包是使用元组的第一个元素train和第二个元素自动完成的val


查看完整回答
反对 回复 2022-06-14
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

就我而言,我解决了将 asort_key和sort_within_batcharg传递给的问题True,如下所示:


BATCH_SIZE = 64

train_iterator, valid_iterator, test_iterator = data.BucketIterator.splits(

    (train_data, valid_data, test_data),

    device = device,

    batch_size = BATCH_SIZE,

    sort_key = lambda x: len(x.src),

    sort_within_batch=True

)

祝你好运


查看完整回答
反对 回复 2022-06-14
  • 2 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信