前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习算法(第20期)----创意RNN和深度RNN的简单实现

深度学习算法(第20期)----创意RNN和深度RNN的简单实现

作者头像
智能算法
发布2019-06-20 17:21:16
5020
发布2019-06-20 17:21:16
举报
文章被收录于专栏:智能算法

上期我们一起学习了如何训练RNN并预测时序信号, 深度学习算法(第19期)----RNN如何训练并预测时序信号? 今天我们一起简单学习下创意RNN和深度RNN的实现。

1. 创意RNN

经过上期的学习,我们有了一个可以预测未来时序信号的模型。那么我们也可以用它来产生一些有创意的句子。我们所需要做的就是提供一个包含n_steps个值的种子句子(比如全是0),用这个模型来预测下一个值。然后将这个预测值添加到句子中,依次产生一个新的句子。具体实现如下:

代码语言:javascript
复制
sequence = [0.] * n_steps
for iteration in range(300):
    X_batch = np.array(sequence[-n_steps:]).reshape(1, n_steps, 1)
    y_pred = sess.run(outputs, feed_dict={X: X_batch})
    sequence.append(y_pred[0, -1, 0])

现在我们可以把周杰伦的专辑输入到RNN网络中,看看能产生什么样子的歌曲出来。然而,有时候我们需要一个拥有更多神经元的更深的更加强大的RNN,那接下来,我们看下深度RNN。

2. 深度RNN

深度RNN其实跟深度CNN差不多,叠加更多层的神经元而已,如下图:

那么在tensorflow中该如何实现呢?我们可以穿件几个神经元,并且把他们堆叠到MultiRNNCell中。下面的代码中,我们堆叠了三个相同的神经元(我们也可以堆叠多种不同类型不同个数的神经元):

代码语言:javascript
复制
n_neurons = 100
n_layers = 3
basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)
multi_layer_cell = tf.contrib.rnn.MultiRNNCell([basic_cell] * n_layers)
outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)

这就是一个简单的深度RNN的例子,状态变量是一个包含每层一个tensor的元组。每一个代表那个层的神经元的最终状态(shape为[batch_size, n_neurons])。 好了,至此,今天我们简单学习了创意RNN和深度RNN的简单实现,希望有些收获,欢迎留言或进社区共同交流,喜欢的话,就点个“在看”吧,您也可以置顶公众号,第一时间接收最新内容。


智能算法,与您携手,沉淀自己,引领AI!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智能算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 创意RNN
  • 2. 深度RNN
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档