Machine learning 自定义层使用带有@tf.Custom_gradient的函数抛出错误:装饰器当前仅在启用了“急切执行”时才支持参数

Machine learning 自定义层使用带有@tf.Custom_gradient的函数抛出错误:装饰器当前仅在启用了“急切执行”时才支持参数,machine-learning,python-3.7,tensorflow2.0,tf.keras,Machine Learning,Python 3.7,Tensorflow2.0,Tf.keras,python==3.7.6 Tensorflow=2.0.0 我创建了一个自定义层,它调用一个用@tf.custom_gradient修饰的函数,与下面问题的答案描述的情况非常相似: 但是我在运行时经常遇到这样的错误:ValueError:custom\u gradient decorator当前仅在启用了急切执行时才支持关键字参数。 在主函数中调用时,函数本身运行正常。因此,明确地说: output=custom_函数(输入)运行良好,执行迅速,但是 input_tensor = Input

python==3.7.6 Tensorflow=2.0.0

我创建了一个自定义层,它调用一个用@tf.custom_gradient修饰的函数,与下面问题的答案描述的情况非常相似:

但是我在运行时经常遇到这样的错误:
ValueError:custom\u gradient decorator当前仅在启用了急切执行时才支持关键字参数。

在主函数中调用时,函数本身运行正常。因此,明确地说:

output=custom_函数(输入)
运行良好,执行迅速,但是

input_tensor = Input(shape=(1, input_length))
output_layer = Custom_Layer(...)(input_tensor)
model = Model([input_tensor], [output_layer])
model.compile(optimizer='rmsprop', run_eagerly=True, loss='mae', metrics=['accuracy'])
model.summary()
根本不起作用。我尝试了各种打开和关闭急切执行的组合,包括在如图所示的编译命令内部、在层的调用函数内部以及在脚本顶部使用
tf.config.experimental\u run\u functions\u急切地(True)
,但没有什么能阻止错误的出现


我似乎找不到与此事件相关的任何文档。

我只需将我的
@tf.custom_gradient
函数的功能部分移动到
tf.keras.layer
中,就解决了此问题。通过稍微调整我的输入值并学习更多关于
tf.GradientTape
机制的知识,我成功地让我的系统工作起来