RNN中的Dropout怎么实现
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,本文小编为大家详细介绍"RNN中的Dropout怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"RNN中的Dropout怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习
千家信息网最后更新 2025年02月04日RNN中的Dropout怎么实现
本文小编为大家详细介绍"RNN中的Dropout怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"RNN中的Dropout怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
我们可以简单的在RNN之前或之后加一个DropOut层,但是如果我们想在RNN层中间加上DropOut的话,就得用DropoutWrapper了。下面代码在每个RNN层的输入都应用Dropout,对每个输入有50%的概率丢弃。
keep_prob = 0.5
cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)
cell_drop = tf.contrib.rnn.DropoutWrapper(cell, input_keep_prob=keep_prob)
multi_layer_cell = tf.contrib.rnn.MultiRNNCell([cell_drop] * n_layers)
rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)
当然,我们也可以通过设置output_keep_prob来对输出进行dropout。
其实,细心的童鞋可能已经发现,上面的代码是有问题的,因为我们在前面CNN中应用Dropout的时候是有一个is_training的placeholder来区分是在training还是testing应用的。但是上面代码并没有。确实,上面代码的最大问题就是在testing的时候,也会应用Dropout,当然,这并不是我们想要的。不幸的是,DropoutWrapper并不支持is_training的placeholder,因此,我们要么自己重写一个DropoutWapper类,要么我们有两个计算图,一个是用来training,另一个用来testing。这里我们看下两个计算图是怎么实现的,如下:
import sys
is_training = (sys.argv[-1] == "train")
X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])
y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])
cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)
if is_training:
cell = tf.contrib.rnn.DropoutWrapper(cell, input_keep_prob=keep_prob)
multi_layer_cell = tf.contrib.rnn.MultiRNNCell([cell] * n_layers)
rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)
[...] # build the rest of the graph
init = tf.global_variables_initializer()
saver = tf.train.Saver()
with tf.Session() as sess:
if is_training:
init.run()
for iteration in range(n_iterations):
[...] # train the model
save_path = saver.save(sess, "/tmp/my_model.ckpt")
else:
saver.restore(sess, "/tmp/my_model.ckpt")
[...] # use the model
读到这里,这篇"RNN中的Dropout怎么实现"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
代码
应用
文章
两个
内容
时候
要么
问题
输入
妥当
最大
细心
不幸
可以通过
就是
思路
新知
是在
更多
概率
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
西山区品牌软件开发市场价
软件开发重要文档
济南正规的服务器代理哪家好
服务器滑轨安装
东莞市长安志城软件开发
能提供图书全文的数据库
天津智能管理系统一站式软件开发
无法连接服务器超时是什么意思
提高供应商网络技术的重要性
河北软件开发解决方案推荐
安徽移动管控平台的服务器地址
网络安全项目申报ppt
电网网络安全整治专项重点工作
c 如何通动态创建数据库
广东三三互联网科技有限公司
内网服务器和云盘同步
中国工业软件开发现况
网络安全法犯罪案例
nec服务器
互联网科技发展的底线
软件开发意向金
用微信公众号做服务器
网络安全培训行业好做吗
数据库技术都考什么
云服务器共享文件夹
傻瓜式PC软件开发软件
vue 打包配置服务器地址
工资系统数据库连接失败
属网络安全几级违规
UG模具设计数据库是什么