【发布时间】:2018-04-30 07:03:47
【问题描述】:
在 Keras 中,如何在模型编译后更改 lambda 层?
更具体地说,假设我想要一个计算 y=a*x+b 的 lambda 层,其中 a 和 b 在每个时期都会更改。
import keras
from keras.layers import Input, Lambda, Dense
import numpy as np
np.random.seed(seed=42)
a = 1
b = 2
def f(x, a, b):
return a * x + b
inputs = keras.layers.Input(shape=(3,))
lam = Lambda(f, arguments={"a": a, "b": b})(inputs)
out = keras.layers.Dense(5)(lam)
model = keras.models.Model(inputs, out)
model.trainable = False
model.compile(optimizer='rmsprop', loss='mse')
x1 = np.random.random((10, 3))
x2 = np.random.random((10, 5))
model.fit(x1, x2, epochs=1)
print("Updating. But that won't work")
a = 10
b = 20
model.fit(x1, x2, epochs=1)
这会返回两次loss: 5.2914,它应该返回一次loss: 5.2914,然后是loss: 562.0562。
据我所知,这似乎是一个open issue,可以通过编写自定义层来解决,但我还没有让它工作。
欢迎任何指导。
【问题讨论】:
标签: python lambda keras keras-layer