pytorch编写的用于自然语言处理分类或顺序任务的深层神经网络。
dnnnlp的Python项目详细描述
pytorch-深层神经网络-自然语言处理
KZXuan的1.0版
包含cnn、rnn和transformer层,以及pytorch为nlp中的分类任务实现的模型。
- 新设计的模块。
- 使用
mask
作为序列长度标识符。 - 多GPU并行网格搜索。
即将推出:新的序列标签支持。
依赖性
python 3.5+&pytorch 1.2.0+
API Document
超参数
Name | Type | Default | Description |
---|---|---|---|
n_gpu | int | 1 | The number of GPUs (0 means no GPU acceleration). |
space_turbo | bool | True | Accelerate with more GPU memories. |
data_shuffle | bool | Ture | Disrupt data for training. |
emb_type | str | None | Embedding modes contain None, 'const' or 'variable'. |
emb_dim | int | 300 | Embedding dimension (or feature dimension). |
n_class | int | 2 | Number of target classes. |
n_hidden | int | 50 | Number of hidden nodes, or output channels of CNN. |
learning_rate | float | 0.01 | Learning rate. |
l2_reg | float | 1e-6 | L2 regular. |
batch_size | int | 128 | Number of samples for one batch. |
iter_times | int | 30 | Number of iterations. |
display_step | int | 2 | The number of iterations between each output of the result. |
drop_prob | float | 0.1 | Dropout ratio. |
eval_metric | str | 'accuracy' | Evaluation metrics contain 'accuracy', 'macro', 'class1', etc. |
使用量
# import our modulesfromdnnnlp.modelimportRNNModelfromdnnnlp.execimportdefault_args,Classify# load the embedding matrixemb_mat=np.array((-1,300))# load the train datatrain_x=np.array((800,50))train_y=np.array((800,))train_mask=np.array((800,50))# load the test datatest_x=np.array((200,50))test_y=np.array((200,))test_mask=np.array((200,50))# get the default argumentsargs=default_args()# modify part of the argumentsargs.space_turbo=Falseargs.n_hidden=100args.batch_size=32
- 分类
# initilize a modelmodel=RNNModel(args,emb_mat,bi_direction=False,rnn_type='GRU',use_attention=True)# initilize a classifiernn=Classify(model,args,train_x,train_y,train_mask,test_x,test_y,test_mask)# do training and testingevals=nn.train_test(device_id=0)
- 跑几次,得到平均分。
# initilize a modelmodel=CNNModel(args,emb_mat,kernel_widths=[2,3,4])# initilize a classifiernn=Classify(model,args,train_x,train_y,train_mask)# run the model several timesavg_evals=average_several_run(nn.cross_validation,args,n_times=8,n_paral=4,fold=5)
- 参数的网格搜索。
# initilize a modelmodel=TransformerModel(args,n_layer=12,n_head=8)# initilize a classifiernn=Classify(model,args,train_x,train_y,train_mask,test_x,test_y,test_mask)# set searching paramsparams_search={'learning_rate':[0.1,0.01],'n_hidden':[50,100]}# run grid searchmax_evals=grid_search(nn,nn.train_test,args,params_search)
历史
1.0版
- 将项目
dnn
重命名为dnnnlp
。 - 删除文件
base
,添加文件utils
。 - 优化并重命名
SoftmaxLayer
和SoftAttentionLayer
。 - 重写并重命名
EmbeddingLayer
、CNNLayer
和RNNLayer
。 - 重写
MultiheadAttentionLayer
:基于nn.MultiheadAttention
的打包注意层。 - 重写
TransformerLayer
:支持新的MultiheadAttentionLayer
。 - 优化并重命名
CNNModel
、RNNModel
和TransformerModel
。 - 优化并重命名
Classify
:一个高度适用的分类执行模块。 - 重写
average_several_run
和grid_search
:支持多GPU并行。 - 支持Pythorch 1.2.0。
0.12版
- 更新
RNN_layer
:完全支持tanh、lstm和gru。 - 修复某些掩码操作中的错误。
- 支持Pythorch 1.1.0。
旧版本0.12.3。
0.11版
- 提供一种使用更多GPU存储器的加速方法。
- 解决数据读取异常导致的内存消耗问题。
- 添加
multi_head_attention_layer
:包装变压器的多头注意事项。 - 添加
Transformer_layer
和Transformer_model
:封装我们自己编写的变压器层和模型。 - 支持培训数据中断。
0.10版
- 把代码分成四个文件:
base
,layer
,model
,exec
。 - 添加
CNN_layer
和CNN_model
:包装cnn层和模型。 - 支持每种型号多个GPU并行。
0.9版
- 解决输出格式问题。
- 修正
LSTM_classify
交叉验证部分的统计错误。 - 重命名:
LSTM_model
为RNN_layer
,self_attention
为self_attention_layer
。 - 添加
softmax_layer
:一个完全连接的封装层。
0.8版
- 调整
LSTM_classify
中函数的适用性,以避免在LSTM_sequence
中重写。 - 优化参数传递方式。
- 更完善的评估机制。
0.7版
- 添加
LSTM_sequence
:用于LSTM_model
的序列标记模块。 - 解决了层次分类中的NaN值问题。
- 支持Pythorch 1.0.0。
0.6版
- 更新
LSTM_classify
:支持分级分类。 GRU_model
合并到LSTM_model
中。- 适应CPU操作。
0.5版
- 拆分
LSTM_classify
的运行部分以减少自定义模型的重写。 - 为可视化输出添加控件。
- 创建函数
average_several_run
:支持经过多次训练和测试获得平均分。 - 创建函数
grid_search
:支持参数的网格搜索。
0.4版
- add
GRU_model
:基于nn.GRU
的包装gru模型。 - 支持L2常规。
0.3版
- add
self_attention
:提供注意机制支持。 - update
LSTM_classify
:适应复杂的自定义模型。
0.2版
- 支持嵌入模式选择。
nn.Dropout
的默认用法。- 创建函数
default_args
以提供默认超参数。
0.1版
- 项目初始化
dnn
:基于pytorch 0.4.1。 - 添加
LSTM_model
:基于nn.LSTM
的包装lstm模型。 - add
LSTM_classify
:lstm模型的一个分类模块,支持列车测试和corss验证。