如何合并LSTM图层? (图层,而不是sequencial()变量)

问题描述 投票:-1回答:1

我有这个代码:

    lstm1=LSTM(40,
        input_shape=(5,5),
        dropout=0.2, recurrent_dropout=0.2,return_sequences=False)


    lstm2=LSTM(40,
        input_shape=(5, 5),
        dropout=0.2, recurrent_dropout=0.2,return_sequences=False)

    merged = merge([lstm1, lstm2], mode='concat',concat_axis=1)

但我得到这个错误:

merged = merge([lstm1, lstm2], mode='concat',concat_axis=1)
File "/home/rjpg/anaconda3/lib/python3.6/site-
packages/keras/legacy/layers.py", line 470, in merge
return merge_layer(inputs)
File "/home/rjpg/anaconda3/lib/python3.6/site-
packages/keras/engine/topology.py", line 549, in __call__
input_shapes.append(K.int_shape(x_elem))
File "/home/rjpg/anaconda3/lib/python3.6/site-
packages/keras/backend/tensorflow_backend.py", line 451, in int_shape
shape = x.get_shape()
AttributeError: 'LSTM' object has no attribute 'get_shape'

我怎么能不使用Sequential()(使用merge而不是Merge)?

目标是使用具有输出维度的maxpool图层的输出来提供此合并图层,如:

    max_pooling2d (MaxPooling) (None, 2, 5, 5)      

谢谢

tensorflow merge keras layer lstm
1个回答
0
投票

你的代码lstm1和lstm2是层而不是输出

所以合并不起作用给''LSTM'对象没有属性'get_shape'“错误

像这样的第一个设计代码

inp = Input(...)
lstm1 = LSTM(...)(inp)
lstm2 = LSTM(...)(inp)
merged = merge([lstm1, lstm2], ...)
© www.soinside.com 2019 - 2024. All rights reserved.