pytorch - AttributeError:“字段”对象没有属性“词汇”
问题描述
BucketIterator 的返回迭代器给出错误。
train_iterator = data.BucketIterator.splits(
train_data,
batch_size=BATCH_SIZE,
device=device
)
train_data 的值看起来也不错。
print(vars(train_data.examples[10]))
{'text': ['plus',
"you've",
'added',
'commercials',
'to',
'the',
'experience...',
'tacky.'],
'label': 'positive'}
堆栈跟踪:
print([x for x in train_iterator])
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-50-f14edc400c88> in <module>()
----> 1 [x for x in train_iter]
<ipython-input-50-f14edc400c88> in <listcomp>(.0)
----> 1 [x for x in train_iter]
~/anaconda3/envs/env/lib/python3.6/site-packages/torchtext/data/iterator.py in __iter__(self)
154 else:
155 minibatch.sort(key=self.sort_key, reverse=True)
--> 156 yield Batch(minibatch, self.dataset, self.device)
157 if not self.repeat:
158 return
~/anaconda3/envs/env/lib/python3.6/site-packages/torchtext/data/batch.py in __init__(self, data, dataset, device)
32 if field is not None:
33 batch = [getattr(x, name) for x in data]
---> 34 setattr(self, name, field.process(batch, device=device))
35
36 @classmethod
~/anaconda3/envs/env/lib/python3.6/site-packages/torchtext/data/field.py in process(self, batch, device)
235 """
236 padded = self.pad(batch)
--> 237 tensor = self.numericalize(padded, device=device)
238 return tensor
239
~/anaconda3/envs/env/lib/python3.6/site-packages/torchtext/data/field.py in numericalize(self, arr, device)
334 if self.use_vocab:
335 if self.sequential:
--> 336 arr = [[self.vocab.stoi[x] for x in ex] for ex in arr]
337 else:
338 arr = [self.vocab.stoi[x] for x in arr]
~/anaconda3/envs/env/lib/python3.6/site-packages/torchtext/data/field.py in <listcomp>(.0)
334 if self.use_vocab:
335 if self.sequential:
--> 336 arr = [[self.vocab.stoi[x] for x in ex] for ex in arr]
337 else:
338 arr = [self.vocab.stoi[x] for x in arr]
~/anaconda3/envs/env/lib/python3.6/site-packages/torchtext/data/field.py in <listcomp>(.0)
334 if self.use_vocab:
335 if self.sequential:
--> 336 arr = [[self.vocab.stoi[x] for x in ex] for ex in arr]
337 else:
338 arr = [self.vocab.stoi[x] for x in arr]
AttributeError: 'Field' object has no attribute 'vocab'
我可以知道我们在这里缺少什么吗?
解决方案
推荐阅读
- php - 如何将值从 WordPress functions.php 传递到任何其他 php 文件,例如页面模板
- bash - shell 在 for 或 while 循环中读取并传递多个变量
- php - Laravel 路由上的 PHPunit 测试总是返回 404
- html - 制作视图的最佳方式,角度 ts 中 routeroutlet 部分的只读
- c++ - 反转非负浮点数的符号:std::copysign(x) 会比 (-1)*x 有所不同吗?
- html - 小屏幕的响应问题
- reactjs - 当我在 package.json 中使用 cross-env 时,为什么 NODE_ENV 在我的 redux 存储中显示未定义?
- java - 反序列化 JSON 会在表中创建另一个属性并且不会正确返回数据
- javascript - 如何使 useEffect() 挂钩对对象的引用而不是对象本身的工作相同
- python - 如何逐字母解析并用 Python 列出一个列表?