Не удается сохранить модель после использования лямбда-слоя в Keras - PullRequest
0 голосов
/ 15 апреля 2020

Моя версия Keras - 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

Очевидно, это потому, что модель Keras не может быть сериализацией, если вы не использовали слой Lambda должным образом, но я не знаю, как изменить свой код, чтобы он работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...