在Keras中,在模型中使用Lambda时无法保存模型检查点。输入错误ValueError:只能将大小为1的数组转换为Python标量

时间:2018-07-23 06:08:10

标签: keras nlp checkpoint

在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。 请帮助

1 个答案:

答案 0 :(得分:0)

为了保存模型,Lambda(func)中使用的函数必须可序列化。取决于它的复杂性,这可能很棘手,如果还不是这样,则应尽量避免使用在函数外部定义的常量或变量。