博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
循环神经网络(3)
阅读量:5094 次
发布时间:2019-06-13

本文共 1153 字,大约阅读时间需要 3 分钟。

深层循环神经网络是循环神经网络的另一种变种,为了增强模型的表达能力,可以将每一个时刻上的循环体重复多次。和卷积神经网络类似,每一层的循环体中参数是一致的,而不同层中的参数可以不同。为了更好的支持深层循环神经网络,tensorflow中提供了MultiRNNCell类来实现深层循环神经网络的前向传播过程。以下代码展示如何使用这个类:

lstm=tf.contrib.rnn.BasicLSTMCell(lstm_size)stacked_lstm=tf.contrib.rnn.MultiRNNCell([lstm]*number_of_layers)state=stacked_lstm.zero_state(batch_size,tf.float32)for i in range(len(num_steps)):    if i >0:        tf.get_variable_scope().reuse_variables()    stacked_lstm_output,state=stacked_lstm(current_input,state)    final_output=fully_connected(stacked_lstm_output)    loss+=calc_loss(final_output,expected_output)

可以看到,相比于之前的LSTM,深层LSTM就是在BasicLSTMCell的基础上封装一层tf.contrib.rnn.MultiRNNCell()就可以实现。

循环神经网络的dropout:

循环神经网络中的dropout具有和CNN类似的功能,CNN只在最后的全连接层中使用dropout,循环神经网络一般只在不同层循环体结构之间使用dropout,而不在同一层的循环体结构之间使用。也就是说从时刻t-1传递到时刻t时,循环神经网络不会进行状态的dropout,而在同一时刻t中,不同层循环体之间会使用dropout。在tensorflow中,使用tf.contrib.rnn.DropoutWrapper()类可以很容易实现dropout功能,代码实现如下所示:

lstm=tf.contrib.rnn.BasicLSTMCell(lstm_size)dropout=tf.contrib.rnn.DropoutWrapper(lstm,output_keep_prob=0.7)stacked_lstm=tf.contrib.rnn.MultiRNNCell([dropout_lstm]*num_of_layers)

 

转载于:https://www.cnblogs.com/xiaochouk/p/8781447.html

你可能感兴趣的文章
创建sprite 组
查看>>
bzoj 1024 SCOI2009 生日快乐
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第7节 Arrays工具类_17_Arrays练习:字符串倒序...
查看>>
WPF自定义动画控件 风机
查看>>
C#.NET 消息机制
查看>>
项目设计与范围管理(笔记)
查看>>
Microsoft Office Mobile 2010 Beta 于 4 月 5 日过期
查看>>
杭电3635————并查集的应用(路径压缩)
查看>>
(通用版)salesforce中soql及sosl的伪‘Like’模糊检索
查看>>
CSS3
查看>>
java 学习笔记之AtomicInteger类的使用
查看>>
Leetcode Read N Characters Given Read4
查看>>
Leetcode Unique Word Abbreviation
查看>>
支持向量机原理(三)线性不可分支持向量机与核函数
查看>>
每周进度条(第10周)
查看>>
ubuntu下成功配置LAMP 并安装PHPMyadmin
查看>>
阿里云的背后故事(希望别被关了)
查看>>
XML(1):基于流的XML处理
查看>>
本博已停用,现在的博客是www.mutousay.com
查看>>
multiset 多重集合容器
查看>>