嵌入层未添加到模型

时间:2019-05-30 02:41:39

标签: python keras

我是Keras的新手,在使用Keras构建模型时遇到一个问题。 嵌入层将稀疏的int张量转换为密集张量,并且应该训练嵌入层的参数。但是在以下两种用法中,参数将在示例一中进行训练,而在示例二中不进行训练。我绘制了模型图,发现在示例二中,嵌入层未添加到模型中。我应该怎么做才能解决示例二中的问题?

Example one 
def NN(valid_x):
    input_A = Input(batch_shape=(None, length))
    shared_embedding = Embedding(input_dim=input_dim,
                             output_dim=output_dim,
                             input_length=length,
                             embeddings_regularizer=regularizers.l2(wd)
                             )
    output_A = shared_embedding(input_A)
    ... ...
    model = Model(inputs = input_A,outputs = output_A)
    return model
Example two
def NN(valid_x):
    input_A = Input(batch_shape=(None, length))
    x = K.variable(valid_x)  # valid_x is a numpy array
    shared_embedding = Embedding(input_dim=input_dim,
                             output_dim=output_dim,
                             input_length=length,
                             embeddings_regularizer=regularizers.l2(wd)
                             )
    output_x = shared_embedding(x)
    input_A_ = Lambda(lambda x:K.reshape(x,(-1,)))(input_A)
    output_A = Lambda(lambda x: K.gather(output_x,x))(input_A_)
    ...  ...
    model = Model(inputs = input_A,outputs = output_A)
    return model

然后我使用model.summary()展示模型的结构和参数,可以训练示例1中的Embedding层的参数,而不能训练示例2中的

0 个答案:

没有答案
相关问题