Как рассчитать градиент для nce_loss в тензорном потоке - PullRequest
0 голосов
/ 11 февраля 2019

Мне нужно рассчитать градиент тензорного потока, который сохраняется.Я могу восстановить график и веса, используя:

    model1 = tf.train.import_meta_graph("models/model.meta")
    model1.restore(sess, tf.train.latest_checkpoint("models/"))
    sess.run(tf.global_variables_initializer())
    graph = tf.get_default_graph()

    weights = graph.get_tensor_by_name("weights:0")
    biases = graph.get_tensor_by_name("biases:0")

Я также назвал свою функцию потерь в исходной функции, поэтому я могу восстановить ее с помощью

    loss = graph.get_operation_by_name("loss") # for operation
    loss = graph.get_tensor_by_name("loss:0") # for the tensor

По сути, я хочу получитьградиент потерь с определенным входным значением, используя tf.gradients (...).Моя потеря - это, в частности, nce_loss https://www.tensorflow.org/api_docs/python/tf/nn/nce_loss.. Мне нужен градиент потерь с учетом функции входов.В частности, я подключаю новое вложение, и я хочу, чтобы градиент, учитывая этот новый вход и функцию потерь.Однако я не могу определить свой вклад успешно.Если я использую:

grads = tf.gradients(loss, loss.inputs) #here I use the tensor loss definition

Я получу:

     ValueError: Name 'loss:0' appears to refer to a Tensor, not a Operation.

Как мне определить мой градиент здесь?

...