【问题标题】:How to get summary information on tensorflow RNN如何获取 tensorflow RNN 的摘要信息
【发布时间】:2018-08-02 09:48:48
【问题描述】:

我用tensorflow实现了一个简单的RNN,如下图:

cell = tf.contrib.rnn.BasicRNNCell(state_size)
cell = tf.contrib.rnn.DropoutWrapper(cell, output_keep_prob=keep_prob)

rnn_outputs, final_state = tf.nn.dynamic_rnn(cell, batch_size, dypte=tf.float32)

这很好用。但我想将权重变量记录到摘要作者。有没有办法做到这一点?

顺便问一下,我们使用tf.nn.rnn_cell.BasicRNNCell 还是tf.contrib.rnn.BasicRNNCell?还是它们是一样的?

【问题讨论】:

    标签: tensorflow machine-learning neural-network recurrent-neural-network tensorboard


    【解决方案1】:

    但我想将权重变量记录到摘要编写器。有没有办法做到这一点?

    您可以通过tf.get_variable() 函数获取变量。 tf.summary.histogram 接受张量实例,因此使用Graph.get_tensor_by_name() 会更容易:

    n_steps = 2
    n_inputs = 3
    n_neurons = 5
    
    X = tf.placeholder(dtype=tf.float32, shape=[None, n_steps, n_inputs])
    basic_cell = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons)
    outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32)
    
    with tf.variable_scope('rnn', reuse=True):
      print(tf.get_variable('basic_rnn_cell/kernel'))
    
    kernel = tf.get_default_graph().get_tensor_by_name('rnn/basic_rnn_cell/kernel:0')
    tf.summary.histogram('kernel', kernel)
    

    顺便问一下,我们使用 tf.nn.rnn_cell.BasicRNNCell 还是 tf.contrib.rnn.BasicRNNCell?还是它们是一样的?

    是的,它们是同义词,但我更喜欢使用 tf.nn.rnn_cell 包,因为 tf.contrib 中的所有内容都是实验性的,可以在 1.x 版本中更改。

    【讨论】:

      【解决方案2】:

      Maxim 的回答很棒。 我发现另一种方法对我有用,您不必提供权重变量的名称。此方法使用优化器对象和 compute_gradients 方法。

      说,您在调用 dynamic_rnn 后计算“损失”。现在获得您选择的优化器。说亚当,

      optzr = tf.train.AdamOptimizer(learning_rate)
      grads_and_vars = optzr.compute_gradients(loss) 
      

      "grads_and_vars" 是(梯度,变量)对的列表。现在通过迭代“grads_and_vars”,您可以获得所有权重/偏差和相应的梯度(如果有)。喜欢,

      for grad, vars in grads_and_vars:
          print (vars, vars.name)
          tf.summary.histogram(vars.name, vars)
      

      参考: https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer#compute_gradients

      【讨论】:

      • 啊,这个和pytorch很像。我会试试这个。谢谢
      猜你喜欢
      • 2013-12-20
      • 2021-12-16
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多