Как я могу проверить, поддерживает ли узел в градиенте градиенты между переменными и тензором потерь?
Я пытаюсь использовать lucid для визуализации произвольной сети. Однако я продолжаю сталкиваться с ошибкой:
ValueError: Градиенты не указаны ни для одной переменной, проверьте график на наличие операций, которые не поддерживают градиенты, между переменными [""] и Tensor потерь ("Neg:0", shape=(), dtype=float32).
Чтобы попытаться решить это, я сделал:
def has_gradient(op_name):
op = tf.get_default_graph().get_operation_by_name(op_name)
return get_gradient_function(op) is not None
for i,node in enumerate(model.graph_def.node):
if has_gradient(node.name):# not in oplist:
_ = render.render_vis(model, node.name+":0")
В этом контексте модель представляет собой загруженный замороженный граф. Проблема в том, что get_gradient_function также возвращает non None, когда операция является математической операцией или операцией чтения (поэтому добавьте /mul/sub/resqrt/read и т. Д. Как проверить, поддерживает ли операция градиенты между переменными и тензором потерь?