首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python int太大,无法转换为C long torchtext.datasets.text_classification.DATASETS['AG_NEWS']()

Python int太大,无法转换为C long torchtext.datasets.text_classification.DATASETS['AG_NEWS']()
EN

Stack Overflow用户
提问于 2019-09-18 17:00:02
回答 1查看 2.9K关注 0票数 8

我有64位的Windows10操作系统,我已经安装了python 3.6.8,我已经安装了torch和torchtext使用pip。torch版本为1.2.0

我正在尝试使用以下代码加载AG_NEWS数据集:

代码语言:javascript
复制
import torch
import torchtext
from torchtext.datasets import text_classification
NGRAMS = 2
import os
if not os.path.isdir('./.data'):
    os.mkdir('./.data')
train_dataset, test_dataset = text_classification.DATASETS['AG_NEWS'](root='./.data', ngrams=NGRAMS, vocab=None)

在上面代码的最后一条语句中,我得到了下面的错误:

代码语言:javascript
复制
---------------------------------------------------------------------------
OverflowError                             Traceback (most recent call last)
<ipython-input-1-7e8544fdaaf6> in <module>
      6 if not os.path.isdir('./.data'):
      7     os.mkdir('./.data')
----> 8 train_dataset, test_dataset = text_classification.DATASETS['AG_NEWS'](root='./.data', ngrams=NGRAMS, vocab=None)
      9 # BATCH_SIZE = 16
     10 # device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

c:\users\pramodp\appdata\local\programs\python\python36\lib\site-packages\torchtext\datasets\text_classification.py in AG_NEWS(*args, **kwargs)
    168     """
    169 
--> 170     return _setup_datasets(*(("AG_NEWS",) + args), **kwargs)
    171 
    172 

c:\users\pramodp\appdata\local\programs\python\python36\lib\site-packages\torchtext\datasets\text_classification.py in _setup_datasets(dataset_name, root, ngrams, vocab, include_unk)
    126     if vocab is None:
    127         logging.info('Building Vocab based on {}'.format(train_csv_path))
--> 128         vocab = build_vocab_from_iterator(_csv_iterator(train_csv_path, ngrams))
    129     else:
    130         if not isinstance(vocab, Vocab):

c:\users\pramodp\appdata\local\programs\python\python36\lib\site-packages\torchtext\vocab.py in build_vocab_from_iterator(iterator)
    555     counter = Counter()
    556     with tqdm(unit_scale=0, unit='lines') as t:
--> 557         for tokens in iterator:
    558             counter.update(tokens)
    559             t.update(1)

c:\users\pramodp\appdata\local\programs\python\python36\lib\site-packages\torchtext\datasets\text_classification.py in _csv_iterator(data_path, ngrams, yield_cls)
     33     with io.open(data_path, encoding="utf8") as f:
     34         reader = unicode_csv_reader(f)
---> 35         for row in reader:
     36             tokens = ' '.join(row[1:])
     37             tokens = tokenizer(tokens)

c:\users\pramodp\appdata\local\programs\python\python36\lib\site-packages\torchtext\utils.py in unicode_csv_reader(unicode_csv_data, **kwargs)
    128             maxInt = int(maxInt / 10)
    129 
--> 130     csv.field_size_limit(sys.maxsize)
    131 
    132     if six.PY2:

OverflowError: Python int too large to convert to C long

我认为问题出在windows os或torchtext上,因为我在下面的代码中也遇到了同样的错误。

代码语言:javascript
复制
pos = data.TabularDataset( path='data/pos/pos_wsj_train.tsv', format='tsv', fields=[('text', data.Field()),
        ('labels', data.Field())])

有人能帮帮忙吗?主要的是,我在文件中没有任何大的数值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-24 07:04:07

我也遇到了类似的问题。我更改了torchtext\utils.py文件中的一行代码,错误就消失了。

更改了此设置:

代码语言:javascript
复制
csv.field_size_limit(sys.maxsize)

要这样做:

代码语言:javascript
复制
csv.field_size_limit(maxInt)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57988897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档