关于tf.nn.dynamic_rnn返回值详解

  

<强>函数原型

        tf.nn.dynamic_rnn (   细胞,   输入,   sequence_length=没有   initial_state=没有   dtype=没有   parallel_iterations=没有   swap_memory=False,   time_major=False,   范围=没有   )      

实例讲解:

        进口tensorflow特遣部队   进口numpy np      n_steps=2   n_inputs=3   n_neurons=5      X=tf.placeholder (tf。float32[没有n_steps n_inputs])   basic_cell=tf.contrib.rnn.BasicRNNCell (num_units=n_neurons)      seq_length=tf.placeholder (tf.int32[所有])=tf.nn输出,状态。dynamic_rnn (basic_cell X, dtype=tf.float32,   sequence_length=seq_length)      init=tf.global_variables_initializer ()      X_batch=np.array ([   步骤1 0 #一步   [[0 1 2],[9 8 7]],1 #实例   [[3、4、5],[0,0,0]],#实例2(垫零向量)   [[6 7 8],[6 5 4]],3 #实例   [[9,0,1],[3、2、1]],4 #实例   ])   seq_length_batch=np。阵列([2,1、2、2])      与tf.Session税():   init.run ()   outputs_val states_val=sess.run (   (输出,状态),feed_dict={X: X_batch seq_length: seq_length_batch})   打印(“outputs_val。形状:“outputs_val。states_val形状。”形状:“states_val.shape)   print (“outputs_val outputs_val:“,“states_val:“states_val)   之前      日志信息:

        outputs_val。形状:states_val (4、2、5)。形状:(4、5)   outputs_val:   [[(0.53073734 -0.61281306 - -0.5437517 0.7320347 - -0.6109526)   [0.99996936 0.99990636 -0.9867181 0.99726075 -0.99999976]]      [[0.9931584 0.5877845 -0.9100412 0.988892 -0.9982337]   [0。0. 0. 0. 0。]]      [[0.99992317 0.96815354 -0.985101 0.9995968 -0.9999936]   [0.99948144 0.9998127 -0.57493806 0.91015154 -0.99998355]]      [[0.99999255 0.9998929 0.26732785 0.36024097 -0.99991137]   (0.98875254 0.9922327 0.6505734 0.4732064 -0.9957567)]]   states_val:   [[0.99996936 0.99990636 -0.9867181 0.99726075 -0.99999976]   (0.9931584 0.5877845 - -0.9100412 0.988892 - -0.9982337)   (0.99948144 0.9998127 - -0.57493806 0.91015154 - -0.99998355)   [0.98875254 0.9922327 0.6505734 0.4732064 -0.9957567]]      

首先输入X是一个[batch_size,一步,input_size]=[4, 2, 3]的张量,注意我们这里调用的是BasicRNNCell,只有一层循环网络,输出是最后一层每个步骤的输出,它的结构是[batch_size,一步,n_neurons]=[4、2、5],州是每一层的最后那个步骤的输出,由于本例中,我们的循环网络只有一个隐藏层,所以它就代表这一层的最后那个步骤的输出,因此它和步骤的大小是没有关系的,我们的X有4个样本组成,输出神经元大小n_neurons是5,因此州的结构就是[batch_size n_neurons]=(4、5),最后我们观察数据,州的每条数据正好就是输出的最后一个步骤的输出。

  

<强>下面我们继续讲解多个隐藏层的情况,这里是三个隐藏层、注意我们这里仍然是调用BasicRNNCell

        进口tensorflow特遣部队   进口numpy np      n_steps=2   n_inputs=3   n_neurons=5   n_layers=3      X=tf.placeholder (tf。float32[没有n_steps n_inputs])   seq_length=tf.placeholder (tf.int32[所有])      层=[tf.contrib.rnn.BasicRNNCell num_units=n_neurons,   激活=tf.nn.relu)   层的范围(n_layers))   multi_layer_cell=tf.contrib.rnn.MultiRNNCell(层)=tf.nn输出,状态。dynamic_rnn (multi_layer_cell X, dtype=特遣部队。float32 sequence_length=seq_length)      init=tf.global_variables_initializer ()      X_batch=np.array ([   步骤1 0 #一步   [[0 1 2],[9 8 7]],1 #实例   [[3、4、5],[0,0,0]],#实例2(垫零向量)   [[6 7 8],[6 5 4]],3 #实例   [[9,0,1],[3、2、1]],4 #实例   ])      seq_length_batch=np。阵列([2,1、2、2])      与tf.Session税():   init.run ()   outputs_val states_val=sess.run (   (输出,状态),feed_dict={X: X_batch seq_length: seq_length_batch})   打印(“outputs_val。形状:“输出”,states_val。形状:“州)   print (“outputs_val outputs_val:“,“states_val:“states_val)      日志信息:

        outputs_val.shape:   张量(“rnn/transpose_1:0”,形状=(& # 63;2、5),dtype=float32)      states_val.shape:   (& lt; tf。张量的rnn/,/Exit_3:0 '形状=(& # 63;5)dtype=float32>,   & lt; tf。张量的rnn/,/Exit_4:0 '形状=(& # 63;5)dtype=float32>,   & lt; tf。张量的rnn/,/Exit_5:0 '形状=(& # 63;5)dtype=float32>)      outputs_val:   [[[0。0. 0. 0. 0。]   [0。0.18740742 0。0.2997518 0。]]      [[0。0.07222144 0。0.11551574 0。]   [0。0. 0. 0. 0。]]      [[0。0.13463384 0。0.21534224 0。]   (0.03702604 - 0.18443246 0。0.34539366 0。]]      [[0。0.54511094 0。0.8718864 0。]   [0.5382122 0。0.04396425 - 0.4040263 0。]]]      states_val:   (数组([[0。,0.83723307,0。,0。,2.8518028),   [0。,0.1996038,0。,0。,1.5456247),   [0。,1.1372368,0。,0。,0.832613),   [0。,0.7904129,2.4675028,0。,0.36980057]],   dtype=float32),   数组([[0.6524607,0。,0。,0。,0。),   [0.25143963,0。,0。,0。,0。),   [0.5010576,0。,0。,0。,0。),   [0。,0.3166597,0.4545995,0。,0。]],   dtype=float32),   数组([[0。,0.18740742,0。,0.2997518,0。),   [0。,0.07222144,0。,0.11551574,0。),   (0.03702604,0.18443246,0。,0.34539366,0。),   [0.5382122,0。,0.04396425,0.4040263,0。]],   dtype=float32)

关于tf.nn.dynamic_rnn返回值详解