我正在使用RNN控制器,它將當前的工廠狀態作爲RNN的輸入,並生成輸出作爲控制信號。在執行控制之後,更新後的工廠狀態作爲下一個時間步的輸入被反饋給RNN。在這個循環中,輸入序列是一步一步堆疊的,而不是預先給定的。 目前沒有涉及培訓。只需要單步前向模擬。 因此,可以做這個一步RNN輸出的張量流RNN操作就是我正在尋找的。張量流程中的單步模擬RNN
input_data = tf.placeholder(tf.float32, [batch_size, len_seq,8])
我定義了兩種輸入的:Input_data
輸入的batch_size
序列,以及用於input_single
當前時間步的輸入端。 y_single
對於每個時間步長,和y_seq
爲輸入的整個minibatch:
input_single = tf.placeholder(tf.float32, [1, 1, 8])
action_gradient = tf.placeholder(tf.float32, [batch_size, len_seq, dimAction])
num_hidden = 24
cell = tf.nn.rnn_cell.LSTMCell(num_hidden, state_is_tuple=True)
state_single = cell.zero_state(batch_size, tf.float32)
(output_single, state_single) = cell(input_single, state_single)
weight = tf.Variable(tf.truncated_normal([num_hidden, dimAction]))
bias = tf.Variable(tf.constant(0.1, shape=[dimAction]))
y_single = tf.nn.tanh(tf.matmul(output_single, weight) + bias)
網絡以兩種方式被讀出。
outputs, states = tf.nn.dynamic_rnn(cell, input_data, dtype=tf.float32)
y_seq = tf.nn.tanh(tf.matmul(outputs, weight) + bias)
是的,我有問題的代碼。插入一些行。我試圖做一步輸入的輸入變量。當使用「input_single」時,它提出了一個TypeError:'Variable'對象不可迭代。 –
你需要提供更多的代碼,input_single是如何定義的?另外,爲什麼不用'cell.zero_state(1,tf.float32)'作爲'state_single'? – martianwars
@martianwars輸入單被定義爲一個形狀爲[[1,1,input_size]'的佔位符。我沒有使用'cell.zero_state(1,tf.float32)'進行'state_single'初始化的原因是,狀態不是一個序列,而只有一個時間步。 –