2.LSTM单元结构图 图4,5是现在比较常用的LSTM单元结构示意图:
其主要结构成分包含如下: (1)输入节点input node:接受上一时刻隐层单元的输出及当前时刻是样本输入; (2)输入门input gate:可以看到输入门会和输入节点的值相乘,组成LSTM中internal state单元值的一部分,当门的输出为1时,输入节点的激活值全部流向internal state,当门的输出为0时,输入节点的值对internal state没有影响。 (3)内部状态internal state。 (4)遗忘门forget gate:用于刷新internal state的状态,控制internal state的上一状态对当前状态的影响。 各节点及门与隐藏单元输出的关系参见图4,图5所示。
代码地址:
在公众号 datadw 里 回复 音乐 即可获取。
运行环境:windows下的spyder 语言:python 2.7,以及Keras深度学习库。
由于看这个赛题前,没有一点Python基础,所以也是边想思路边学Python,对Python中的数据结构不怎么了解,所以代码写得有点烂。但整个代码是可以运行无误的。这也是初赛时代码的最终版本。
样例:
样例:
官方要求“输出”:预测随后2个月(20150901-20151030)每个歌手每天的播放量。输出格式:
2.初赛所用模型思路 由于是对歌手的播放量进行预测,所以直接对每个歌手的“播放量”这一对象进行统计,查看在20150301-20151030这8个月内歌手的播放量变化趋势,并以每天的播放量,连续3天的播放均值,连续3天的播放方差,作为一个时间点的样本,“滑动”构建神经网络的训练集。网络的构成如下: (1)输入层:3个神经元,分别代表播放量,播放均值,播放方差; (2)第一隐层:LSTM结构单元,带有35个LSTM单元; (3)第二隐层:LSTM结构单元,带有10个LSTM单元; (4)输出层:3个神经元,代表和输入层相同的含义。 目标函数:重构误差。 下图是某些歌手的播放统计曲线:
2.预测结果 蓝色代表歌手真实的播放曲线,绿色代表预测曲线:
1.LSTM入门介绍比较好的文章:A Critical review of rnn for sequence learning 2.LSTM学习思路,参见知乎的一个介绍,很详细:https://www.zhihu.com/question/29411132 。 3.Python入门视频教程—可看南京大学张莉老师在coursera上的公开课《用Python玩转数据》,有例子介绍,很实用。https://www.coursera.org/learn/hipython/home/welcome。 4.Keras介绍—参看官方文档http://keras.io/
via:http://blog.csdn.net/u012609509/article/details/51910405