【问题标题】:In Keras, Unable to save model checkpoints when using Lambda in model. Give error ValueError: can only convert an array of size 1 to a Python scalar在 Keras 中,在模型中使用 Lambda 时无法保存模型检查点。报错 ValueError: can only convert a array of size 1 to a Python scalar
【发布时间】:2018-07-23 06:08:10
【问题描述】:

在 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)

根据网上的一些建议,我在 Sequential API 中使用了 Lambda,然后使用了 Functional API。 请帮忙

【问题讨论】:

    标签: keras nlp checkpoint


    【解决方案1】:

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

    【讨论】:

    • 你能指导我,如何序列化下面的函数
    • model1.add(Lambda(lambda x: K.sum(x, axis=1), output_shape=(300,))。我创建了函数,然后像下面那样使用它 def func(x) : x = K.sum(x,axis=1) return x model1.add(Lambda(lambda x: func(x), output_shape=(300,)))
    猜你喜欢
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 2022-12-02
    • 2019-08-25
    • 1970-01-01
    • 2022-11-08
    • 2022-12-15
    相关资源
    最近更新 更多