我是靠谱客的博主 直率书包,最近开发中收集的这篇文章主要介绍【keras】rnn中的LSTM1. LSTM,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

keras rnn中常见的rnn layer

1. LSTM

LSTM内部结构如下,
LSTM结构
公式为
i n p u t   g a t e : i t = σ ( W i x t + U i h ( t − 1 ) ) f o r g e t   g a t e : f t = σ ( W f x t + U f h ( t − 1 ) ) o u t p u t          : o t = σ ( W o x t + U o h ( t − 1 ) ) N e w   m e m o r y c e l l : c ~ t = t a n h ( W c x t + U c x t ) F i n a l   m e m o r y c e l l : c t = f t ⊙ c ( t − 1 ) + i t ⊙ c ~ t h i d d e n   s t a t e : h t = o t ⊙ t a n h ( c t ) input gate: i^t = sigma(W^i x^t +U^i h^{(t-1)}) newline forget gate:f^t = sigma(W^f x^t +U^f h^{(t-1)}) newline output : o^t = sigma(W^o x^t +U^o h^{(t-1)}) newline New memory cell:tilde c^t = tanh(W^c x^t + U^c x^t ) newline Final memory cell:c^t = f^todot c^{(t-1)} + i^t odot tilde c^t newline hidden state: h^t = o^t odot tanh(c^t) input gate:it=σ(Wixt+Uih(t1))forget gate:ft=σ(Wfxt+Ufh(t1))output        :ot=σ(Woxt+Uoh(t1))New memorycell:c~t=tanh(Wcxt+Ucxt)Final memorycell:ct=ftc(t1)+itc~thidden state:ht=ottanh(ct)

它的每一个time step都有三个输入与两个输出,
输入为上一个time step的h(t-1),c(t-1),x(t)
输出为h(t),c(t)


下面我们以一个例子来看一下keras lstm的使用

from keras.models import Model
from keras.layers import Input
from keras.layers import LSTM
import numpy as np

#               t1   t2   t3   t4
src = np.array([0.1, 0.2, 0.3, 0.4])

# define model
inputs1 = Input(shape=(4,1))
# 1: Positive integer, dimensionality of the output space
lstm1= LSTM(1)(inputs1) 
model = Model(inputs=inputs1, outputs=lstm1)  
# define input data
data = src.reshape((1,4,1))
print("====================")
print(model.predict(data))

结果如下,

====================
[[0.11041524]]  # h(4)

简单说明一下参数:

  • LSTM的参数1,是说明W,U向量的维数。根据上面的公式,一维的参数向量最终计算出来的结果就是一个标量。 它也是最后一个time step的输出h(t)

使用return_sequences和return_state参数

使用return_sequences=True

from keras.models import Model
from keras.layers import Input
from keras.layers import LSTM
from keras.layers import GRU
import numpy as np

#               t1   t2   t3   t4
src = np.array([0.1, 0.2, 0.3, 0.4])

# define model
inputs1 = Input(shape=(4,1))
lstm1= LSTM(1, return_sequences=True)(inputs1)
model = Model(inputs=inputs1, outputs=lstm1) 
data = src.reshape((1,4,1))
print("====================")
print(model.predict(data))

结果如下:

====================
[[[-0.02509235]  # the last h(4)
  [-0.06933878]  # h(3)
  [-0.12798117]  # h(2)
  [-0.19663112]]] # h(1)

它输出的是每个节点的output。下面是官方注释说明。

return_sequences: Boolean. Whether to return the last output
in the output sequence, or the full sequence.

使用return_state=True

from keras.models import Model
from keras.layers import Input
from keras.layers import LSTM
from keras.layers import GRU
import numpy as np

#               t1   t2   t3   t4
src = np.array([0.1, 0.2, 0.3, 0.4])

# define model
inputs1 = Input(shape=(4,1))
lstm1= LSTM(1, return_state=True)(inputs1)
model = Model(inputs=inputs1, outputs=lstm1) 
data = src.reshape((1,4,1))
print("====================")
print(model.predict(data))

结果

====================
[array([[-0.11774988]], dtype=float32),  # the last output h(4)
array([[-0.11774988]], dtype=float32),   # the additional information for the last state. h(4)
array([[-0.24601391]], dtype=float32)]   # the state for h(4): c(4)

return_state: Boolean. Whether to return the last state in addition to the output.

最后

以上就是直率书包为你收集整理的【keras】rnn中的LSTM1. LSTM的全部内容,希望文章能够帮你解决【keras】rnn中的LSTM1. LSTM所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部