我正在尝试创建一个相当复杂的 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 可能有问题,但在尝试使其可微分之前,我想要一种方法来确定这一点