📒
Notes
  • 个人笔记
  • Machine Learning
    • Tensorflow
      • Text
        • Keras构建RNN
        • 字词嵌入
        • 字词嵌入示例程序
      • Data processing
        • tf.data数据加载
      • Tensorflow Tricks
    • 循环神经网络概览
    • Pix2Pix
  • Assembly Language
    • DOS中的Debug模式
    • LOOP指令
    • 8086CPU
    • 标志位寄存器
    • 汇编指令
    • 汇编语言源程序格式
  • Linux System
    • Systemctl 服务脚本
    • Linux端口占用
    • Btrfs文件系统
    • C Socket网络编程细节问题
  • Hexo
    • Hexo下的Tag/Categories栏
    • Git备份博客
    • Hexo博客基本部署
  • Kernel
    • C语言中消息队列实现
    • Linux内核的进程调度函数
    • Linux内核模块的编译
    • Linux Kernel概述
  • Linux Software
    • Linux软件安装与配置
  • Docker
    • OVS+Docker网络构建
    • Docker分层垃圾清理
  • C
    • CMakeList语法
Powered by GitBook
On this page
  • Tensorflow中实现的模型
  • RNN层参数
  • 单次输出/多次输出
  • 状态返回
  • 自定义化
  • 参考

Was this helpful?

  1. Machine Learning
  2. Tensorflow
  3. Text

Keras构建RNN

Tensorflow中实现的模型

目前在Tensorflow中已经实现了3种内置的RNN模型:

  1. tf.keras.layers.SimpleRNN:使用全连接,并将上一层的输出(而非状态)作为下一层的输入。

  2. tf.keras.layers.GRU

  3. tf.keras.layers.LSTM

RNN层参数

单次输出/多次输出

默认情况下,RNN层只有一个输出,对应最后一个时间步,因而输出形状应该为(batch_size,units)。 当然对应另一种结构,亦可以实现每一个时间步一个输出,这样一来输出的形状就应该为(batch_size, timesteps, units)。只需要设置参数return_sequences=True。

状态返回

RNN也可以返回其最终的状态,这个状态可以用来继续执行,或者用来初始化另一个RNN层,只需要设置参数return_state=True。需要注意LSTM会返回两个张量,而GRU只会返回一个。

output, state_h, state_c = layers.LSTM(64, return_state=True, name='encoder')(encoder_embedded) # 获取状态
encoder_state = [state_h, state_c]
decoder_output = layers.LSTM(64, name='decoder')(decoder_embedded, initial_state=encoder_state) # 使用状态来创建新的层

自定义化

参考

PreviousTextNext字词嵌入

Last updated 5 years ago

Was this helpful?

对于RNN模型的自定义可以通过将自定义的单元(RNN cell)包装进tf.keras.layers.RNN来实现,cell中具体要实现那些方法见其。

API文档
Recurrent Neural Networks (RNN) with Keras - Tensorflow Core
tf.keras.layers.SimpleRNN | TensorFlow Core
tf.keras.layers.LSTM | TensorFlow Core
tf.keras.layers.GRU | TensorFlow Core
tf.keras.layers.RNN | TensorFlow Core