我想将我的Python Keras模型y
(目标/响应/等)传递给自定义激活。
将拟合范围限制在下限和上限之间的自定义激活函数为:
def activation_range(x, lower=-1, upper=1) :
"""
Custom activation layer to restrict layer output range
"""
x02 = backend.tanh(x) + 1 # x in range(0,2)
scale = (upper-lower)/2
return x02 * scale + lower
我必须把它传给Keras同时启动一个跟踪
model.add(keras.layers.Dense(1, activation=lambda x: activation_range(x, lower=lower, upper=upper)))
其中,在调用www.example.com函数之前计算上限和下限model.fit。
然而,是否有一种方法可以在模型初始化后根据y
的值(例如lower = y.min()
和upper = y.max()
)设置上限和下限,因此Keras在根据y进行拟合时计算上限和下限(在运行model.fit时),而不是在之前将其传递给Keras
1条答案
按热度按时间rhfm7lfc1#
你可以。只要使用 functional API 结合 subclassed layers,而不是基本的Sequential,后者只支持单输入单输出模型。注意,这需要你将
(x,y)
作为x
参数传递给model.fit
,同时也作为推理过程中的输入。您可以使用下面的示例验证这一点,并看到模型的输出始终介于-10和10之间。
您也可以编译和训练模型。