【发布时间】:2020-09-30 17:22:07
【问题描述】:
我想知道如何堆叠多层 RNN,但每一层都是相同的 RNN。我希望每一层都具有相同的权重。看过stack LSTM和RNN,但是发现每一层都不一样。
1层代码:
inputs = keras.Input(shape=(maxlen,), batch_size = batch_size)
Emb_layer = layers.Embedding(max_features,word_dim)
Emb_output = Emb_layer(inputs)
first_layer = layers.SimpleRNN(n_hidden,use_bias=True,return_sequences=False,stateful =False)
first_layer_output = first_layer(Emb_output)
dense_layer = layers.Dense(1, activation='sigmoid')
dense_output = dense_layer(first_layer_output )
model = keras.Model(inputs=inputs, outputs=dense_output)
model.summary()
enter image description here RNN 1层
inputs = keras.Input(shape=(maxlen,), batch_size = batch_size)
Emb_layer = layers.Embedding(max_features,word_dim)
Emb_output = Emb_layer(inputs)
first_layer = layers.SimpleRNN(n_hidden,use_bias=True,return_sequences=True,stateful =True)
first_layer_output = first_layer(Emb_output)
first_layer_state = first_layer.states
second_layer = layers.SimpleRNN(n_hidden,use_bias=True,return_sequences=False,stateful =False)
second_layer_set_state = second_layer(first_layer_output, initial_state=first_layer_state)
dense_layer = layers.Dense(1, activation='sigmoid')
dense_output = dense_layer(second_layer_set_state )
model = keras.Model(inputs=inputs, outputs=dense_output)
model.summary()
enter image description here 堆栈 RNN 2 层。
例如,我想构建两层 RNN,但第一层和第二层必须具有相同的权重,这样当我在第一层更新权重时,第二层必须更新并共享相同的值。据我所知,TF有RNN.state。它返回上一层的值。但是,当我使用它时,似乎每一层都是独立处理的。我想要的 2 层 RNN 应该具有等于 1 层的可训练参数,因为它们共享相同的权重,但这不起作用。
【问题讨论】:
-
你能说得更具体点吗?你到底尝试了什么?它到底是怎么不起作用的?
-
我想把很多RNN层堆叠在一起,但是每一层的权重都一样。例如,我想构建两层 RNN,但第一层和第二层必须具有相同的权重,这样当我在第一层更新权重时,第二层必须更新并共享相同的值。据我所知,TF有RNN.state。它返回上一层的值。但是,当我使用它时,似乎每一层都是独立处理的。
标签: keras lstm recurrent-neural-network