前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TensorFlow 2.0 Tutorial: 3 - 几种 RNN 模型的实现

TensorFlow 2.0 Tutorial: 3 - 几种 RNN 模型的实现

作者头像
杨熹
发布2019-04-17 14:30:16
2.9K0
发布2019-04-17 14:30:16
举报
文章被收录于专栏:杨熹的专栏杨熹的专栏

1. simple RNN

下面创建一个简单的 2 层 RNN,每层有 100 个神经元,输出层是单个神经元的 dense 层:

代码语言:javascript
复制
model1 = keras.models.Sequential()
model1.add(keras.layers.SimpleRNN(100, return_sequences=True, input_shape=input_shape))
model1.add(keras.layers.SimpleRNN(100))
model1.add(keras.layers.Dense(1))

model1.compile(loss="mse", optimizer=keras.optimizers.SGD(lr=0.005), metrics=["mae"])

history1 = model1.fit(X_train_3D, y_train, epochs=200, batch_size=200,
                      validation_data=(X_valid_3D, y_valid))

2. Seq2Seq

建立一个 Seq2Seq 模型,和简单 RNN的区别是,第二个 RNN 层也用了 return sequences=True

代码语言:javascript
复制
model2 = keras.models.Sequential()
model2.add(keras.layers.SimpleRNN(100, return_sequences=True, input_shape=input_shape))
model2.add(keras.layers.SimpleRNN(100, return_sequences=True))
model2.add(keras.layers.Dense(1))

model2.compile(loss=huber_loss, optimizer=keras.optimizers.SGD(lr=0.01),
               metrics=[mae_last_step])

history2 = model2.fit(X_train_3D, Y_train_3D, epochs=200, batch_size=200,
                      validation_data=(X_valid_3D, Y_valid_3D))

3. Seq2Seq LSTM

将普通 rnn 层换成 lstm 层

代码语言:javascript
复制
model3 = keras.models.Sequential()
model3.add(keras.layers.LSTM(100, return_sequences=True, input_shape=input_shape))
model3.add(keras.layers.LSTM(100, return_sequences=True))
model3.add(keras.layers.Dense(1))

model3.compile(loss=huber_loss, optimizer=keras.optimizers.SGD(lr=0.01),
               metrics=[mae_last_step])

history3 = model3.fit(X_train_3D, Y_train_3D, epochs=200, batch_size=200,
                      validation_data=(X_valid_3D, Y_valid_3D),
                      callbacks=[keras.callbacks.ReduceLROnPlateau(verbose=1)])

4. 1D-ConvNets 预处理

在前面加上一个 1D-ConvNets 预处理

代码语言:javascript
复制
model4 = keras.models.Sequential()
model4.add(keras.layers.Conv1D(32, kernel_size=5, input_shape=input_shape))
model4.add(keras.layers.MaxPool1D(pool_size=5, strides=2))
model4.add(keras.layers.LSTM(32, return_sequences=True))
model4.add(keras.layers.LSTM(32))
model4.add(keras.layers.Dense(1))

model4.compile(loss=huber_loss, optimizer=keras.optimizers.SGD(lr=0.005))

history4 = model4.fit(X_train_3D, y_train, epochs=200, batch_size=100,
                      validation_data=(X_valid_3D, y_valid))
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.04.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. simple RNN
  • 2. Seq2Seq
  • 3. Seq2Seq LSTM
  • 4. 1D-ConvNets 预处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档