gpt4 book ai didi

machine-learning - 如何在训练期间使用 lambda 函数更改层的激活

转载 作者:行者123 更新时间:2023-11-30 09:04:27 25 4
gpt4 key购买 nike

我是 keras 新手,尝试在训练期间修改层的输出。我想编写一个函数,在学习过程中获取层输出并将修改后的输出返回到下一层。我尝试过使用 lambda 函数,但并没有真正掌握它。

def fun(x):
a = min(x)
y = np.round(x*(2**a))
return y

layer_1 = Dense(32, activation='relu')(input)
layer_2 = Dense(12, activation='relu')(layer_1)
lambda_layer = Lambda(fun, output_shape=(12,))(layer_2)
layer_3 = dense(32, activation='relu')(lambda_layer)

如何获取层输出并在将其传递到下一层之前对其进行修改?

最佳答案

使用 lambda 函数是解决您的问题的正确方法。但是,请记住,lambda 函数将成为计算图的一部分,并且在训练期间必须计算整个图的梯度。

例如,您不应像以前那样使用 min() 函数,而应使用 Keras Backend 中的函数。 。将所有操作替换为其 keras 后端等效结果:

import keras.backend as K

def fun(x):
a = K.min(x)
y = K.round(K.dot(x, (K.pow(2, a))))
return y

您的最终模型(以及所有 Lambda 层)应仅包含 native Keras 函数,以便在训练期间安全地执行所有计算。

关于machine-learning - 如何在训练期间使用 lambda 函数更改层的激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56130261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com