首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Keras中合并,类型错误:模块对象不可调用?

在Keras中合并,类型错误:模块对象不可调用?
EN

Stack Overflow用户
提问于 2019-02-07 03:28:03
回答 1查看 2.9K关注 0票数 4

我正在尝试连接所有的输入,但由于某些原因,我总是得到这样的错误:类型错误:模块对象不可调用,你能帮我修复它吗?我试图用Keras.layers.concatenate替换merge,但没有成功。

代码语言:javascript
运行
复制
def stack_latent_layers(n):
        #Stack n bidi LSTMs
        return lambda x: stack(x, [lambda : Bidirectional(LSTM(hidden_units,
                                                                  return_sequences = True))] * n )

def predict_classes():
        #Predict to the number of classes
        #Named arguments are passed to the keras function
        return lambda x: stack(x,
                                    [lambda : TimeDistributed(Dense(output_dim = num_of_classes(),
                                                                    activation = "softmax"))] +
                                    [lambda : TimeDistributed(Dense(hidden_units,
                                                                    activation='relu'))] * 3)

word_embedding_layer = emb.get_keras_embedding(
                                                    trainable = True,
                                                    input_length = sent_maxlen,   name='word_embedding_layer') 


pos_embedding_layer = Embedding(output_dim = pos_tag_embedding_size,
                         input_dim = len(SPACY_POS_TAGS),
                         input_length = sent_maxlen,
                         name='pos_embedding_layer')

latent_layers = stack_latent_layers(num_of_latent_layers)

dropout = Dropout(0.1) 

predict_layer = predict_classes()


## --------> 8] Prepare input features, and indicate how to embed them
inputs_and_embeddings = [(Input(shape = (sent_maxlen,),
                                        dtype="int32",
                                        name = "word_inputs"),
                                  word_embedding_layer),
                                 (Input(shape = (sent_maxlen,),
                                        dtype="int32",
                                        name = "predicate_inputs"),
                                  word_embedding_layer),
                                 (Input(shape = (sent_maxlen,),
                                        dtype="int32",
                                        name = "postags_inputs"),
                                  pos_embedding_layer),
        ]
print('inputs_and_embeddings',inputs_and_embeddings)

## --------> 9] Concat all inputs and run on deep network
output = predict_layer(dropout(latent_layers(merge([embed(inp)
                                                    for inp, embed in inputs_and_embeddings],
                                                           mode = "concat",
                                                           concat_axis = -1
                                                                     ))))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-09 04:41:24

用keras.layers.concatenate替换了merge

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54561175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档