TensorFlow:BasicRnncell()从哪里获得权重和偏见



我不太了解Tensorflow的tf.contrib.rnn.BasicRNNCell如何工作。
我们定义了一个重量的命令,应在图中的不同位置使用,但是我不明白我如何在上面的命令中分辨出所需的命令,或者我一般可以告诉我如何使用它特别说dict作为重量。
任何人都可以详细说明吗?

呼叫tf.contrib.rnn.BasicRNNCell时,

cell = tf.contrib.rnn.BasicRNNCell(num_units=100)

它的权重(在TensorFlow中称为kernel),并且不会产生偏差。此时,cell仅知道它将创建的神经元数量以及如何激活。(从逻辑上讲,您需要告诉cell输入大小以创建其权重变量。)

那么您可能会做:

rnn = tf.nn.dynamic_rnn(cell, rnn_inputs, dtype=tf.float32)

tf.nn.dynamic_rnn期间,将有2个重要的事情顺序发生:

  1. cell.build将被调用。由于指定了输入,因此cell将创建其权重(内核)和偏差。之后,您可以使用cell._kernelcell._bias访问它们。相应的节点将添加到Tensorflow的计算图中,但尚未链接到其他节点。

  2. cell.call将被调用。在1中创建的重量和偏置节点链接到一些新的节点以产生RNN结果。

因此,从字面上看,您不需要告诉命令如何准确地做事。您需要做的是以适当的方式使用TensorFlow API,并且大多数实现详细信息将得到很好的照顾。

最新更新