如何计算tensorflow中nce_loss的梯度

时间:2019-02-11 20:38:07

标签: python tensorflow gradient-descent

我需要计算存储的张量流的梯度。我可以使用以下方法恢复图形和权重:

    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.

如何在此处定义渐变?

0 个答案:

没有答案