Как я могу проверить, поддерживает ли узел в градиенте градиенты между переменными и тензором потерь?

Я пытаюсь использовать 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 и т. Д. Как проверить, поддерживает ли операция градиенты между переменными и тензором потерь?

0 ответов

Другие вопросы по тегам