小编McL*_*cLP的帖子

如何找到我的层中的不可微操作?

我正在尝试创建一个相当复杂的 lambda 层,其中包含 keras 中的许多操作。我实施后,得到了一个ValueError: No gradients provided for any variable.

虽然我仅使用 keras 操作来转换数据(除了我使用 numpy 创建的常量,稍后将其添加到张量中),但我知道一定存在一些不可微分的操作。现在我想知道如何找出它是哪一个,这样我就可以找到解决方法。

我还不想发布任何代码,因为它是竞赛的一部分,我想自己解决这个问题。如果因此难以理解我的问题,请告诉我。不过,我可以列出我正在使用的所有功能:

from tensorflow.keras import backend as K
from tensorflow.python.keras.layers import Lambda

...
def my_lambda_function(x):
    # uses:
    K.batch_dot
    K.cast
    K.clip
    K.concatenate
    K.one_hot
    K.reshape
    K.sum
    K.tile  # only applied to a constant created in numpy

...
# using the function in a model like this:
my_lambda_layer = Lambda(my_lambda_function)
result_tensor = my_lambda_layer(some_input)

Run Code Online (Sandbox Code Playgroud)

我认为 K.one_hot 可能有问题,但在尝试使其可微分之前,我想要一种方法来确定这一点

python differentiation keras tensorflow keras-layer

5
推荐指数
1
解决办法
912
查看次数

标签 统计

differentiation ×1

keras ×1

keras-layer ×1

python ×1

tensorflow ×1