本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

wzatv:【j2开奖】干货|《超智能体》作者会津博士YJango:循环神经网络—scan实现LSTM

时间:2017-03-19 00:26来源:668论坛 作者:www.wzatv.cc 点击:
github原文阅读地址 :《 循环神经网络——代码LV1 》( https://yjango.gitbooks.io/superorganism/content/%E4%BB%A3%E7%A0%81%E6%BC%94%E7%A4%BA.html ) 注:从《人工神经网络》 ( https://yjango.gitbooks.io/super

  

  

wzatv:【j2开奖】干货|《超智能体》作者会津博士YJango:循环神经网络—scan实现LSTM

  github原文阅读地址:《循环神经网络——代LV1 》(https://yjango.gitbooks.io/superorganism/content/%E4%BB%A3%E7%A0%81%E6%BC%94%E7%A4%BA.html

  注:从《人工神经网络》https://yjango.gitbooks.io/superorganism/content/ren_gong_shen_jing_wang_luo.html)后的内容就需要逐步阅读,没有相关知识而跳跃阅读是难以理解的。

  上一节在《循环神经网络——实现LSTM》(https://yjango.gitbooks.io/superorganism/content/lstmgru.html)中介绍了循环神经网络目前最流行的实现方法LSTM和GRU,这一节就演示如何利用Tensorflow来搭建LSTM网络。

  代LV1是指本次的演示是最核心的code,并没有多余的功能。

  为了更深刻的理解LSTM的结构,这次所用的并非是tensorflow自带的rnn_cell类,而是从新编写,并且用scan来实现graph里的loop (动态RNN)。

  任务描述

  这次所要学习的模型依然是代码演示LV3 (https://yjango.gitbooks.io/superorganism/content/%E4%BB%A3%E7%A0%81%E6%BC%94%E7%A4%BAlv3.html)中的用声音来预测口腔移动,没有阅读的朋友请先阅读链接中的章节对于任务的描述。同时拿链接中的前馈神经网络与循环神经网络进行比较。

  处理训练数据

目的:减掉每句数据的平均值,除以每句数据的标准差,降低模型拟合难度。

代码:

wzatv:【j2开奖】干货|《超智能体》作者会津博士YJango:循环神经网络—scan实现LSTM

示意图:1,2,3,4,5表示list中的每个元素,而每个元素又是一个长度为2的list。

wzatv:【j2开奖】干货|《超智能体》作者会津博士YJango:循环神经网络—scan实现LSTM

解释:比如全部数据有100个序列,如果设定每个input的形状就是[1, n_steps, D_input],那么处理后的list的长度就是100,这样的数据使用的是SGD的更新方式。而如果想要使用mini-batch GD,将batch size(也就是n_samples)的个数为2,那么处理后的list的长度就会是50,每次网络训练时就会同时计算2个样本的梯度并用均值来更新权重。 因为每句语音数据的时间长短都不相同,如果使用3维tensor,需要大量的zero padding,所以将n_samples设成1。但是这样处理的缺点是:只能使用SGD,无法使用mini-batch GD。如果想使用mini-batch GD,需要几个n_steps长度相同的样本并在一起形成3维tensor(不等长时需要zero padding,如下图)。

演示图:v表示一个维度为39的向量,序列1的n_steps的长度为3,atv直播,序列2的为7,如果想把这三个序列并成3维tensor,就需要选择最大的长度作为n_steps的长度,将不足该长度的序列补零(都是0的39维的向量)。最后会形成shape为[3,7,39]的一个3维tensor。

wzatv:【j2开奖】干货|《超智能体》作者会津博士YJango:循环神经网络—scan实现LSTM

  权重初始化方法

目的:合理的初始化权重,可以降低网络在学习时卡在鞍点或极小值的损害,增加学习速度和效果。

代码:

wzatv:【j2开奖】干货|《超智能体》作者会津博士YJango:循环神经网络—scan实现LSTM

wzatv:【j2开奖】干货|《超智能体》作者会津博士YJango:循环神经网络—scan实现LSTM

解释:其中shufflelists是用于洗牌重新排序list的。正交矩阵初始化是有利于gated_rnn的学习的方法。

定义LSTM类

属性:使用class类来定义是因为LSTM中有大量的参数,定义成属性方便管理。

代码:在init中就将所有需要学习的权重全部定义成属性

wzatv:【j2开奖】干货|《超智能体》作者会津博士YJango:循环神经网络—scan实现LSTM

wzatv:【j2开奖】干货|《超智能体》作者会津博士YJango:循环神经网络—scan实现LSTM

解释:将hidden state和memory并在一起,以及将输入的形状变成[n_steps, n_samples, D_cell]是为了满足tensorflow中的scan的特点,后面会提到。

每步计算方法:定义一个function,用于制定每一个step的计算。

代码:

wzatv:【j2开奖】干货|《超智能体》作者会津博士YJango:循环神经网络—scan实现LSTM

(责任编辑:本港台直播)

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容