python - 迭代 Torchtext.data.BucketIterator 对象抛出 AttributeError 'Field' 对象没有属性 'vocab'

标签 python iterator pytorch torchtext

当我尝试查看批处理时,通过打印 BucketIterator 对象的下一次迭代,抛出了 AttributeError

tv_datafields=[("Tweet",TEXT), ("Anger",LABEL), ("Fear",LABEL), ("Joy",LABEL), ("Sadness",LABEL)]
train, vld = data.TabularDataset.splits(path="./data/", train="train.csv",validation="test.csv",format="csv", fields=tv_datafields)

train_iter, val_iter = BucketIterator.splits(
(train, vld),
batch_sizes=(64, 64),
device=-1,
sort_key=lambda x: len(x.Tweet),
sort_within_batch=False,
repeat=False
)
print(next(iter(train_dl)))

最佳答案

我不确定您遇到的具体错误,但在这种情况下,您可以使用以下代码迭代批处理:

for i in train_iter:
    print i.Tweet
    print i.Anger
    print i.Fear
    print i.Joy
    print i.Sadness

i.Tweet(还有其他)是形状为 (input_data_length, batch_size) 的张量。

因此,要查看单个批处理数据(比如说批处理 0),您可以执行 print i.Tweet[:,0]

同样适用于 val_iter(和 test_iter,如果需要的话)。

关于python - 迭代 Torchtext.data.BucketIterator 对象抛出 AttributeError 'Field' 对象没有属性 'vocab',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51231852/

相关文章:

python - 想要使用 distutils 来安装带有 "one-click"启动器文件的 python 应用程序

python - 解释 Python 入口点?

python - 将 dict 写入 csv 文件,其中键不按字母顺序排列

c++ - 如何使用迭代器作为模板参数并返回其值?

C++ STL 列表迭代器

python-3.x - 何时不使用张量

python - 如何仅将某些值记录到 CSV 中?

python - pytorch 梯度/导数/沿轴的差异,如 numpy.diff

python - 批量加载巨大的数据集来训练 pytorch

C++ "Scrolling"通过 STL::map 中的项目