【问题标题】:how to merge LSTM layers ? (layers, not sequencial() vars )如何合并 LSTM 层? (层,不是 sequencial() vars )
【发布时间】:2017-12-23 02:47:29
【问题描述】:

我有这个代码:

    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'

不使用 Sequencial() 怎么办(使用合并而不是合并)?

我们的目标是为这个合并层提供一个 maxpool 层的输出,该层的输出维度如下:

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

谢谢

【问题讨论】:

    标签: tensorflow merge keras layer lstm


    【解决方案1】:

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

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

    第一个这样的设计代码

    inp = Input(...)
    lstm1 = LSTM(...)(inp)
    lstm2 = LSTM(...)(inp)
    merged = merge([lstm1, lstm2], ...)
    

    【讨论】:

    • 谢谢。好的,我会尝试...但我还没有看到如何定义由前一个 convnet 的 filter1 生成的 image1 的 inp1 和为第二个过滤器图像生成的 inp2 但相同的前一个 convnet(或 max_pooling2d ...)。在另一部作品中上一层输出形状为(none, 2,5,5) 我要[0][5][5]进入lstm1,[1][5][5]进入lstm2。想法是让两个 lstm 与来自 convnet (?) 的两个过滤器生成的输入竞争
    • “想法是让两个 lstm 与来自 convnet (?) 的两个过滤器生成的输入竞争”问另一个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2019-06-09
    相关资源
    最近更新 更多