2017-09-07 8 views
1

テンソルフローでニューラルネットワークのレイヤーを修正するにはどうすればよいですか?ニューラルネットワークのレイヤーを修正します

たとえば、このサンプルプログラムでは、別のニューラルネットワーク(たとえばB)を訓練して2番目のレイヤーを知っているとします。これを固定レイヤーとして使用して、ネットワークの最初のレイヤーを下に計算できますか?

import tensorflow as tf 
x = tf.placeholder(tf.float32, [None, 784]) 

#layer 1 
W1 = tf.Variable(tf.zeros([784, 100])) 
b1 = tf.Variable(tf.zeros([100])) 
y1 = tf.matmul(x, W1) + b1 #remove softmax 

#layer 2 
W2 = tf.Variable(tf.zeros([100, 10])) 
b2 = tf.Variable(tf.zeros([10])) 
y2 = tf.nn.softmax(tf.matmul(y1, W2) + b2) 

#output 
y = y2 
y_ = tf.placeholder(tf.float32, [None, 10]) 

答えて

1

特定の変数を訓練できないように指定することができ、保存された値で変数を初期化できます。ような何か:saved_weightssaved_biasesはそれぞれ自分の事前学習重み行列とバイアスベクトルが含まれている

W2 = tf.Variable(saved_weigths, trainable=False) 
b2 = tf.Variable(saved_biases, trainable=False) 
y2 = tf.nn.softmax(tf.matmul(y1, W2) + b2) 

。参考:Variable docs

関連する問題