基于PyTorch的LSTM模型的IMBD情感分类遇到的问题

今天想学LSTM的情感分类,结果碰到了一系列问题,耽误了很多时间。特此记录!

一.项目来源

lesson53-情感分类实战
B站视频

二.碰到的问题

1.报错AttributeError: module ‘torchtext.data‘ has no attribute ‘Field‘

解决方法1(在这个方法中没啥用,但是记录一下)

  • 在2021年3月5日TorchText 0.9.0更新,一些API调用也发生变化

之前我们调用Field,TabularDataset,Iterator,BucketIterator是通过torchtext.data

import torch
import torchtext
from torchtext.data import Field,TabularDataset,Iterator,BucketIterator

在torchtext0.9环境下,会报AttributeError: module ‘torchtext.data’ has no attribute ‘Field’

  • 新的API调用代码如下(示例):
import torch
import torchtext
from torchtext.legacy.data import Field,TabularDataset,Iterator,BucketIterator

解决方法2(有用的)

因为这个项目是2020年,所以我把torchtext的版本往后退了。

  1. 先卸载原来的torchtext。
pip uninstall torchtext
  1. 下载0.6.0版本的
pip install torchtext==0.6.0

2.Can’t find model ‘en’

需要下载en_core_web_sm-3.0.0.tar.gz
在指定虚拟环境下执行命令:

pip install 存放位置/en_core_web_sm-3.0.0.tar.gz

同时需要下载spacy

pip install spacy==3.0.0

注意:spacy的版本要与en_core_web_sm版本要相同!!!spacy的版本要与en_core_web_sm版本要相同!!!spacy的版本要与en_core_web_sm版本要相同!!!重要的抒情说三遍!!!

3.torchtext 下载 IMDB 数据集时出现错误

import torch
from torch import nn, optim
from torchtext import data, datasets



TEXT = data.Field(tokenize='spacy',tokenizer_language='en_core_web_sm')
LABEL = data.LabelField(dtype=torch.float)
train_data, test_data = datasets.IMDB.splits(TEXT, LABEL)


print('Number of training examples:', len(train_data))
print('Number of testing examples:', len(test_data))

虽然没报错了,但是数据集没下载下载,加载数据集为空,如下图:
在这里插入图片描述
这里的最后一行代码一般会自动下载imdb数据集,但是常常速度很慢很慢,而且如果没下载完成就退出的话,再运行就不会自动下载了。这里我发现下载的数据集会在project里面的.data\imdb\文件夹下。
解决方法是去
aclImdb_v1.tar.gz下载包,用浏览器下会稍微快点,主要是不会丢失连接。下载完成以后,把压缩包放到.data\imdb\文件夹下并且解压。之后再运行以上代码就不会报错了。
基于PyTorch的LSTM模型的IMBD情感分类遇到的问题_第1张图片

你可能感兴趣的:(python,pytorch,tensorflow)