torchtext
与ignite
是pytorch
官方提供的模块,前者负责数据的预处理、生成dataloader等,后者负责训练循环控制。本仓库是通过简单的情感分类任务来练习如何使用这个两个模块,其中模型为BiLSTM
,数据集为MR dataset
。本代码可自动检测NVIDIA
显卡(CUDA
),如果有CUDA
设备则使用GPU
加速训练,否则使用CPU
训练。
本demo
使用的是经典的MR(Movie Review)情感分析语料,共10662条句子。官网为http://www.cs.cornell.edu/people/pabo/movie-review-data , 需下载其中的sentence polarity dataset v1.0
。
本demo
默认使用的是Pre-Trained GloVe Word Embedding
, 版本为glove.6B.50d.txt
(171M),这是一个体积很小的词向量,方便快速加载,适合做demo
使用。若想要使用更大规模的GloVe
词向量,请到官网下载,官网中提到的glove.6B.zip
(862M)中就包含了glove.6B.{50d, 100d, 200d, 300d}.txt
四种规模。
为方便下载,我这里把glove.6B.50d.txt
也放到了本仓库,下载后请解压后使用。
- macOS 10.14.5(macbook不支持CUDA加速)
- Python 3.6.8
- Pytorch 1.1.0
- text 0.4.0 2019.05.22 master branch
- ignite 0.2.0 2019.05.22 master branch
注意
如果通过pip
安装torchtext
与ignite
:
pip install torchtext
pip install pytorch-ignite
(这里是pytorch-ignite
,不是ignite
!!!)
目录文件说明:
./
├── README.md
├── data // 语料,日志,缓存等路径; data/MR_10662.txt中的标签0是neg, 1是pos
├── data_loader.py // 使用torchtext预处理数据并加载
├── ignite // ignite的源代码作为本地模块使用,自己修改了ignite/handlers/early_stopping.py
├── ignite_0.2.0_origin.zip // ignite的源代码v0.2.0仅备份用, 未做任何修改
├── log.py // 全局logger,同时输出到文件和控制台
├── main.py // 训练使用
├── myutils.py // 常用函数
├── nnet // 存放具体的模型实现
├── predict_local.py // 本地(区别于WebService)预测(推理)使用
└── torchtext // torchtext的源代码作为本地模块使用,未作任何修改
本实验为情感分析demo
,仅使用CPU(Intel [email protected]
,四核八线程)训练,每个Epoch
约用时15s
左右,未仔细调参数的情况下最终acc
约为0.7745
.