の変数にカスタム学習率を適用すると、私はオプティマイザにそれを与える、それが計算グラフに必要な分化および更新条件を追加します。は、TensorflowでTensorflow
global_counter = tf.Variable(0, dtype=DATA_TYPE, trainable=False)
learning_rate = tf.train.exponential_decay(
INITIAL_LR, # Base learning rate.
global_counter, # Current index into the dataset.
DECAY_STEP, # Decay step.
DECAY_RATE, # Decay rate.
staircase=True)
optimizer = tf.train.MomentumOptimizer(learning_rate, 0.9).minimize(network.finalLoss, global_step=global_counter)
feed_dict = {TRAIN_DATA_TENSOR: samples, TRAIN_LABEL_TENSOR: labels}
results = sess.run([optimizer], feed_dict=feed_dict)
私が欲しいですこのプロセスの小さな変更。私はlearning_rate
を、ネットワーク内のすべての異なるパラメータに対して異なってスケールしたいと思っています。例えば、A
とB
をネットワーク内の2つの異なる学習可能パラメータとし、dL/dA
とdL/dB
に損失に関するパラメータの偏微分を与えます。
ca
と
cb
は異なるパラメータのための特別な学習率スケールです
Ma <- 0.9*Ma + ca*learning_rate*dL/dA
A <- A - Ma
Mb <- 0.9*Mb + cb*learning_rate*dL/dB
B <- B - Mb
:私はこれを変更したい
Ma <- 0.9*Ma + learning_rate*dL/dA
A <- A - Ma
Mb <- 0.9*Mb + learning_rate*dL/dB
B <- B - Mb
:として運動量のオプティマイザは、変数を更新します。私が理解する限り、Tensorflowはこのような場合にはcompute_gradients
とapply_gradients
メソッドを呼び出すことができますが、ドキュメントの使用方法はあまり明確ではありません。どんな助けでも大歓迎です。勾配を計算するのに
[Tensorflowでレイヤー単位の学習率を設定する方法](https://stackoverflow.com/questions/34945554/how-to-set-layer-wise-learning-rate-in-tensorflow) –