![](/img/trans.png)
[英]TypeError at '' __init__() got an unexpected keyword argument ''
[英]TorchText Vocab TypeError: Vocab.__init__() got an unexpected keyword argument 'min_freq'
我正在研究 CNN 情感分析機器學習 model,它使用 Torchtext 庫提供的 IMDb 數據集。 在我的一行代碼中
vocab = Vocab(counter, min_freq = 1, specials=('\<unk\>', '\<BOS\>', '\<EOS\>', '\<PAD\>'))
即使我確定它是 function 接受的 arguments 之一,我也收到 min_freq 參數的 TypeError。我也收到 UserWarning Lambda function 不支持 pickle,請改用常規 88276540434904886580 48634 完整代碼
from torchtext.datasets import IMDB
from collections import Counter
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import Vocab
tokenizer = get_tokenizer('basic_english')
train_iter = IMDB(split='train')
test_iter = IMDB(split='test')
counter = Counter()
for (label, line) in train_iter:
counter.update(tokenizer(line))
vocab = Vocab(counter, min_freq = 1, specials=('\<unk\>', '\<BOS\>', '\<EOS\>', '\<PAD\>'))
源鏈接towardsdatascience github Legacy to new
我嘗試刪除 min_freq 參數並使用默認函數如下
vocab = Vocab(counter, specials=('\<unk\>', '\<BOS\>', '\<EOS\>', '\<PAD\>'))
但是我最終得到了相同類型的錯誤,但針對的是 specials 參數而不是 min_freq。
任何幫助都感激不盡
謝謝你。
如https://github.com/pytorch/text/issues/1445所述,您應該將“Vocab”更改為“vocab”。 我認為他們錯過了舊筆記本到新筆記本的類型。
正確代碼:
from torchtext.datasets import IMDB
from collections import Counter
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import vocab
tokenizer = get_tokenizer('basic_english')
train_iter = IMDB(split='train')
test_iter = IMDB(split='test')
counter = Counter()
for (label, line) in train_iter:
counter.update(tokenizer(line))
vocab = vocab(counter, min_freq = 1, specials=('\<unk\>', '\<BOS\>', '\<EOS\>', '\<PAD\>'))
我的環境:
您可以嘗試使用 torchtext.legacy.vocab 而不是 torchtext.vocab,這可能會解決問題。 這對我有用:
from torchtext.datasets import IMDB
from collections import Counter
from torchtext.data.utils import get_tokenizer
from torchtext.legacy.vocab import vocab
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.