在Keras中,在模型中使用Lambda时无法保存模型检查点。它给出了值错误:
ValueError: can only convert an array of size 1 to a Python scalar
代码如下
model1 = Sequential()
model1.add(Embedding(MAX_NUM_WORDS,
EMBEDDING_DIM,
weights=[embedding_matrix],
input_length=MAX_SEQUENCE_LENGTH,
trainable=False))
model1.add(TimeDistributed(Dense(300, activation='relu')))
#model1.add(Lambda(lambda x: K.sum(x, axis=1), output_shape=(300,)))
model1.add(Lambda(lambda x: func(x), output_shape=(300,)))
model1_input = Input(shape=(MAX_SEQUENCE_LENGTH,), dtype='int32',
name='model1_input')
model1_output = model1(model1_input)
根据网上的一些建议,我在顺序API中使用了Lambda,然后使用了功能性API。 请帮助
答案 0 :(得分:0)
为了保存模型,Lambda(func
)中使用的函数必须可序列化。取决于它的复杂性,这可能很棘手,如果还不是这样,则应尽量避免使用在函数外部定义的常量或变量。