我想用python構建和訓練多層LSTM模型(stateIsTuple = True),然後在C++中加載和使用它。但我很難弄清楚如何在C++中提供和獲取狀態,主要是因爲我沒有可以引用的字符串名稱。如何在tensorflow中輸入和檢索LSTM的狀態C/C++
E.g.我把初始狀態作爲
with tf.name_scope('rnn_input_state'):
self.initial_state = cell.zero_state(args.batch_size, tf.float32)
並且這如以下將顯示在圖命名範圍,例如,但如何供給到這些在C++?
另外,我怎麼能取C++中的現狀如何?我在python中嘗試了下面的圖形構建代碼,但我不確定它是否是正確的做法,因爲last_state應該是一個張量元組,而不是一個張量(儘管我可以看到tensorboard中的last_state節點是2x2x50x128,這聽起來像它只是連接狀態,因爲我有2層,128個大小,50個小批量大小和lstm單元格 - 帶有2個狀態向量)。
with tf.name_scope('outputs'):
outputs, last_state = legacy_seq2seq.rnn_decoder(inputs, self.initial_state, cell, loop_function=loop if infer else None)
output = tf.reshape(tf.concat(outputs, 1), [-1, args.rnn_size], name='output')
,這就是它看起來像在tensorboard
我應該Concat的,分裂國家的張量因此只有過一個狀態張量進進出出?或者,還有更好的方法?
P.S.理想情況下,解決方案不涉及硬編碼層數(或尺寸)。所以我可以只有四個字符串input_node_name,output_node_name,input_state_name,output_state_name,剩下的就是從那裏派生出來的。