當您在會話sess
中運行optimizer
(相關feed_dict
)時,可變權重和偏差將會更新。
for e in range(epoch):
for i in range(data_size/batch_size):
sess.run(optimizer, feed_dict={your_feed_dict})
編輯
您可能需要細分變量和var_list而是用一個訓練整個網絡,和一個只訓練緻密層。您可以通過在卷積層引入範圍變量這樣做,並分別緻密層
with tf.variable_scope("Conv"): #All the convolution layers
DW0 = tf.Variable(tf.random_normal([1,1], stddev=0.01))
Db0 = tf.Variable(tf.constant(0.1, shape=[1]))
with tf.variable_scope("Dense"): #All the dense layers
DW0 = tf.Variable(tf.random_normal([1,1], stddev=0.01))
Db0 = tf.Variable(tf.constant(0.1, shape=[1]))
vars = tf.trainable_variables()
dense = [v for v in vars if v.name.startswith("Dense")]
whole = [v for v in vars if v.name.startswith("Conv")] + dense
WholeOptim = tf.train.AdamOptimizer(learning_rate).minimize(cost_scalar, var_list=whole)
DenseOptim = tf.train.AdamOptimizer(learning_rate).minimize(cost_scalar, var_list=dense)
所以訓練整個網絡時,運行WholeOptim
和培訓只是緻密層時,運行DenseOptim
這不是我正在尋找@Joshua。例如,如果你有一個3卷積層的網絡,然後是1個密集層,那麼在訓練整個網絡之後,我將使用第三個conv層的激活作爲我的輸入幀的特徵。此外,我只需要訓練經常性神經網絡,因爲它們已經被訓練過了。因此,在這種情況下,我想通知優化器來訓練RNN的權重而不是整個網絡。所以這就是我期望用tensorflow中的優化器實現的。 –