理解情感 :从 Keras 移植到 pyTorch

更新于 2017年10月17日 机器学习
我来说两句
wx:钱曙光   网页版 2017-10-17 07:01
深度学习 算法 自然语言处理 GPU Python 代码 分类 行业动态 神经网络
「理解情感 :从 Keras 移植到 pyTorch」导语:情感情绪检测是自然语言理解的关键要素。最近,我们将原来的项目迁移到了新的集成系统上,该系统基于麻省理工学院媒体实验室推出的NLP模型搭建而成。情感情绪检测是自然语言理解的关键要素。最近,我们将原来的项目迁移到了新的集成系统上,该系统基于麻省理工学院媒体实验室推出的NLP模型搭建而成。代码已经开源了!(详见GitHub:https://github.com/huggingface/torchMoji )该模型最初的设计使用了TensorFlow、Theano和Keras,接着我们将其移植到了pyTorch上。与Keras相比,pyTorch能让我们更自由地开发和测试各种定制化的神经网络模块,并使用易于阅读的numpy风格来编写代码。在这篇文章中,我将详细说明在移植过程中出现的几个有趣的问题:如何使用自定义激活功能定制pyTorch LSTMPackedSequence对象的工作原理及其构建如何将关注层从Keras转换成pyTorch如何在pyTorch中加载数据:DataSet和Smart Batching如何在pyTorch中实现Keras的权重初始化首先,我们来看看torchMoji/DeepMoji的模型。它是一个相当标准而强大的人工语言处理神经网络,具有两个双LSTM层,其后是关注层和分类器:torchMoji/DeepMoji模型DeepMoji有一个很不错的特点:Bjarke Felbo及其协作者能够在一个拥有16亿条记录的海量数据集上训练该模型。因此,预先训练的模型在此训练集中具有非常丰富的情感和情绪表征,我们可以很方便地使用这个训练过的模型。该模型是使用针对LSTM的回归内核的Theano/Keras默认激活函数hard sigmoid训练的,而pyTorch是基于NVIDIA的cuDNN库建模的,这样,可获得原生支持LSTM的GPU加速与标准的sigmoid回归激活函数:Keras默认的LSTM和pyTorch默认的LSTM因此,我写了一个具有hard sigmoid回归激活函数的自定义LSTM层:这个LSTM单元必须集成在一个完整的模块中,这样才可以使用pyTorch所有的功能。这个集成相关的代码很长,建议直接引用到Github中的相关源代码。模型的关注层是一个有趣的模块,我们可以分别在Keras和pyTorch的代码中进行比较:如你所见,主要的算法大致相同,但PyTorch代码中的大部分都是注释,而Keras则需要编写几个附加函数并进行调用。在编写和调试自定义模块和层时,pyTorch是一个更快的选择;而对于快速训练和测试由标准层构建的模型时,Keras显然更加合适。Keras有一个不错的掩码功能可以用来处理可变长度序列。那么在pyTorch中又该如何处理这个呢?可以使用PackedSequences! pyTorch文档中有关PackedSequence的介绍并不是很详细,所以这里会详细描述它的细节。转自:腾讯云完整内容请点击“阅读原文” via: http://mp.weixin.qq.com/s?__biz=MzA4NDEyMzc2Mw==&mid=2649678240&idx=3&sn=b5ffc0ee4934dfbc535f007e95dcc671&scene=0#wechat_redirect

 

回复