現在、tensorflowを用いて学習を行っているのですが、モデルAを学習後、そのモデルAの重みやバイアスを、別のモデルBに移して初期化するにはどのようにすればいいでしょうか?
モデルの構成は以下のような形です。()内はノード数です。
モデルA:
LSTM(20)-LSTM(20)-Dense(10)※1
モデルB:
LSTM(10)-LSTM(10)-LSTM(20)-LSTM(20)-Dense(10)
[LSTM(10)-LSTM(10)]←モデルBで追加された部分
[LSTM(20)-LSTM(20)-Dense(10)]←モデルAと同じ部分※2
※1のパラメータで、※2のパラメータを初期化後、モデルBを再学習させたいです。
よろしくお願いします。
モデルのコードは以下になります。
python
1'モデルA' 2X:input_data 3 4lstm_3 = tf.nn.rnn_cell.BasicLSTMCell(20, name='blstmc3')# 5lstm_4 = tf.nn.rnn_cell.BasicLSTMCell(20, name='blstmc4')# 6 7lstm_out_3 = tf.nn.dynamic_rnn(lstm_3,X,dtype=tf.float32,time_major=False)# 8lstm_out_4 = tf.nn.dynamic_rnn(lstm_4,lstm_out_3,dtype=tf.float32,time_major=False)# 9 10lstm_out_last = lstm_out_4[:,-1,:]##last output only 11 12W11 = weight_variable([20, 10]) 13b11 = bias_variable([10]) 14f_logit = tf.matmul(lstm_out_last, W11) + b11 15predict_vector = tf.nn.relu(f_logit) 16 17'モデルB' 18X:input_data 19 20lstm_1 = tf.nn.rnn_cell.BasicLSTMCell(10, name='blstmc1')# 21lstm_2 = tf.nn.rnn_cell.BasicLSTMCell(10, name='blstmc2')# 22lstm_3 = tf.nn.rnn_cell.BasicLSTMCell(20, name='blstmc3')# 23lstm_4 = tf.nn.rnn_cell.BasicLSTMCell(20, name='blstmc4')# 24 25lstm_out_1 = tf.nn.dynamic_rnn(lstm_1,X,dtype=tf.float32,time_major=False)# 26lstm_out_2 = tf.nn.dynamic_rnn(lstm_2,lstm_out_1,dtype=tf.float32,time_major=False)# 27lstm_out_3 = tf.nn.dynamic_rnn(lstm_3,lstm_out_2,dtype=tf.float32,time_major=False)# 28lstm_out_4 = tf.nn.dynamic_rnn(lstm_4,lstm_out_3,dtype=tf.float32,time_major=False)# 29 30lstm_out_last = lstm_out_4[:,-1,:]##last output only 31 32W11 = weight_variable([20, 10]) 33b11 = bias_variable([10]) 34f_logit = tf.matmul(lstm_out_last, W11) + b11 35predict_vector = tf.nn.relu(f_logit) 36
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。