我是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中的
。