Tensorflow RNN源代码解析笔记2:RNN的基本实现

本文详细解析Tensorflow中的RNN网络实现,从基本概念到核心代码,涵盖RNN网络的参数设置、输入检查、状态初始化及动态计算过程。通过对tf.nn.rnn的深入探讨,理解RNN在网络结构和运算流程上的运作方式。
摘要由CSDN通过智能技术生成

1 前言

话说上回说到了RNNCell的基本实现,本来按照道理来说,应该介绍LSTM GRU的,但是奈何这些于我而言也是不太熟悉(然后我又悲伤的想到了那个电话,哎),所以不如先说说RNN网络的实现吧,毕竟之前熟悉的是基本的RNNCell,现在再熟悉下RNN的具体实现,那不正好可以完整的学习一个基本版的RNN么?
Tensorflow RNN源代码解析笔记1:RNNCell的基本实现

2 基本说明

Tensorflow提供了一个最基本 的rnn网络实现,具体位置是tf.nn.rnn当中。对了,这里说到的RNN网络都需要设定具体的Cell类型(也就是之前那篇文章里的RNNCell),关于RNNCell具体如何工作这里就不说了,这里主要从网络结构上来看。
那么我们首先看下定义这个基本rnn网络的一些参数:


def rnn(cell, inputs, initial_state=None, dtype=None,
        sequence_length=None, scope=None):

这个RNN网络呢,是一个最基本的RNN网络,简单到什么地步呢,基本就是如下几行代码的高上大版,这个rnn所实现的核心功能就是下面这几行代码所实现的,仅仅是增加了一些更多的配置的支持而已:

  ```python
    state = cell.zero_state(...)
    outputs = []
    for input_ in inputs:
      output, state = cell(input_, state)
      outputs.append(output)
    return (outputs, state)
  ```

假设我们输入的序列的长度(时间)为T,那么以此使用Cell运算T次,每次的输出加入到outputs中,并且保留当前的最终state。

这里有两个必选参数和四个可选参数:

cell: 需要为RNN网络提供一个具体的Cell实例(不加修饰的RNNCell或LSTM或GRU或你自己实现的)

inputs:这个就是这个rnn网络的输入了,长度为T的一个ListList的位置表示时间(也就是时间从0到T-1),每个Tensor的形状是[batch_size,input_size],batch_size是你训练的时候,每一个batch的大小,而input_size则是输入元素的维度,这里的两个值要和上面cell里的参数对应。

上面两个参数是必选的,下面几个是可选的:

initial_state:我们知道RNN在运行之初,是需要提前设定一个隐层的状态的,设定就是在这里,一般来说他可以有默认全0的设置。特别注意的是,这里的形状要和cell的结构符合。

dtype:数据类型ÿ
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值