我有一套在matlab中實現的訓練模型的權重。我想將權重移交給tensorflow。然而,具有500個單元的tf.rnn.rnn_cell.LSTMCell具有形狀的權重矩陣(1524,2000)。爲什麼1524?爲什麼是2000?這完全不符合我的權重的大小。如何將權重轉移到張量流RNN單元
我的模型有3個隱藏層,每層都有1000個節點,最後一個隱藏層是時間層(復現)。輸入尺寸爲1539.輸出尺寸爲1026. 時間層具有1x1000時間權重和1000x1000圖層權重,1x1000用於偏差。
import scipy
import numpy as np
import tensorflow as tf
x = tf.placeholder(shape=[None, 3, 1024], dtype=tf.float32, name='input')
cell = tf.nn.rnn_cell.LSTMCell(500)
output, state = tf.nn.dynamic_rnn(cell, x, dtype=tf.float32)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
var = [x for x in tf.trainable_variables() if x.name=='RNN/LSTMCell/W_0:0']
val = sess.run(var)
# why 1524x2000?
print(val[0].shape)
因此,我可以使用我的預訓練的權重?權重矩陣的形狀是不同的......我應該自己實現一種新的單元,而不是繼續使用內置的LSTMCell? –
該matlab代碼不使用神經網絡的任何工具箱。它似乎沒有使用任何像LSTM –
謝謝,我不知道有BasicRNNCell可用。但它也有一個拼接權重矩陣。我想我幾乎可以得到它。只需要看看BasicRNNCell的實現 –