Я пытался использовать tf.floor в моем выходном слое, но продолжал получать ошибку «Нет градиента», даже если я пытался переопределить его с градиентом идентичности.
import tensorflow as tf
from tensorflow import keras
def transfer(x):
with tf.compat.v1.get_default_graph() as g:
with g.gradient_override_map({'Floor': 'Identity'})
return tf.floor(x * 90) / 90
input = keras.layers.Input((10, ))
output = keras.layers.Lambda(transfer)(keras.layers.Dense(1, activation='sigmoid')(input))
Вот полное сообщение об ошибке:
/tensorflow-2.1.0/python3.6/tensorflow_core/python/keras/optimizer_v2/optimizer_v2.py in _filter_grads(grads_and_vars)
1037 if not filtered:
1038 raise ValueError("No gradients provided for any variable: %s." %
-> 1039 ([v.name for _, v in grads_and_vars],))
1040 if vars_with_empty_grads:
1041 logging.warning(
ValueError: No gradients provided for any variable: