Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';在Keras中使用Lambda层后不保存模型_Python_Keras - Fatal编程技术网

Python Can';在Keras中使用Lambda层后不保存模型

Python Can';在Keras中使用Lambda层后不保存模型,python,keras,Python,Keras,我的Keras verison是2.0.8。我添加了以下代码片段: units = 32 hidden_with_time_axis = Lambda(lambda x: K.expand_dims(x,1))(layer) W1 = Dense(units)(kb_embedding) W2 = Dense(units)(hidden_with_time_axis) out = Add()([W1,W2])

我的Keras verison是2.0.8。我添加了以下代码片段:

        units = 32
        hidden_with_time_axis = Lambda(lambda x: K.expand_dims(x,1))(layer)
        W1 = Dense(units)(kb_embedding)
        W2 = Dense(units)(hidden_with_time_axis)
        out = Add()([W1,W2])
        score = Lambda(lambda x: K.tanh(x))(out)
        out2 = Dense(1)(score)
        attention_weights = Lambda(lambda x: K.softmax(x))(out2)
        context = Lambda(lambda x: x * kb_embedding)(attention_weights)
        context_vector = Lambda(lambda x: K.sum(context,axis=1))(context)

        layer = merge([layer,context_vector], mode='concat')
        # Classification layers
        denseSize = self.getParameter("dense", self.styles, 400, parameters, 1)

        if denseSize > 0:
            layer = Dense(denseSize, activation='relu')(layer) #layer = Dense(800, activation='relu')(layer)
        assert self.cmode in ("binary", "multiclass", "multilabel")
        if self.cmode in ("binary", "multilabel"):
            layer = Dense(dimLabels, activation='sigmoid')(layer)
        else:
            layer = Dense(dimLabels, activation='softmax')(layer)
        if self.tag == 'entity-' or self.tag =='edge-':
            feature_embedding = sum([self.embeddings[x].inputLayers for x in embNames], [])
            feature_embedding.append(kb_embedding)
            kerasModel = Model(feature_embedding,layer)
然后出现了错误:

TypeError: can't pickle NotImplementedType objects

显然,这是因为如果您没有正确使用Lambda layer,Keras模型无法序列化,但我不知道如何修改我的代码使其工作。

在使用tensorflow.Keras.layers.Lambda时,最好使用:

  • 保存权重:模型。保存权重()
  • 加载权重:模型。加载权重()

  • 使用tensorflow.keras.layers.Lambda时,最好使用:

  • 保存权重:模型。保存权重()
  • 加载权重:模型。加载权重()

  • 什么是
    kb_嵌入
    ?最后一行有一个错误:在
    lambda
    函数中将
    context
    替换为
    x
    。是的,谢谢提醒,我已经修复了它,但仍然存在相同的错误。那么
    kb\u嵌入是什么?你的代码在我看来并不完整,也就是说,有一部分我们看不到,因此不知道那里发生了什么。
    kb_嵌入
    是一个Keras
    Input
    层,带有一个3d形状
    kb_嵌入=Input(形状=(11,KBImporter.BIO_W2V_维度),名称='kb')
    什么是
    kb_嵌入
    ?最后一行有一个错误:在
    lambda
    函数中将
    context
    替换为
    x
    。是的,谢谢提醒,我已经修复了它,但仍然存在相同的错误。那么
    kb\u嵌入是什么?您的代码在我看来并不完整,即有一部分我们看不到,因此不知道那里发生了什么。
    kb_嵌入
    是一个带有三维形状的Keras
    Input
    kb_嵌入=Input(形状=(11,KBImporter.BIO_W2V_维度),名称='kb')