次へTensorflow LSTM Regularization LSTM細胞のパラメータを訓練するときに、コスト関数に正規化項を追加しようとしています。私が持っているいくつかの定数さておきTensorFlow:LSTMに正則化を追加
:
def RegularizationCost(trainable_variables):
cost = 0
for v in trainable_variables:
cost += r(tf.reduce_sum(tf.pow(r(v.name),2)))
return cost
...
regularization_cost = tf.placeholder(tf.float32, shape =())
cost = tf.reduce_sum(tf.pow(pred - y, 2)) + regularization_cost
optimizer = tf.train.AdamOptimizer(learning_rate = 0.01).minimize(cost)
...
tv = tf.trainable_variables()
s = tf.Session()
r = s.run
...
while (...):
...
reg_cost = RegularizationCost(tv)
r(optimizer, feed_dict = {x: x_b, y: y_b, regularization_cost: reg_cost})
を私が持っている問題は、正則化項を追加することが非常学習プロセスを遅くし、用語が関連付けられたときに実際に正則化項reg_cost
が目に見えて反復ごとに増加していることですpred - y
かなり停滞している、つまりreg_cost
は考慮されていないようです。
私はこの用語を完全に間違った方法で追加していると思います。私はコスト関数自体にこの項を追加する方法を知らなかったので、スカラーtf.placeholderで回避策を使用し、正規化コストを「手動で」計算しました。どのようにそれを正しく行うには?