私はAdamOptimizerを持っています。私は自分のモデルをデバッグしたいので、診断を受けたい。私はopt.get_slot()メソッドを認識していますが、残念ながら常にNoneを返します。オプティマイザでスロット値を取得する適切な方法
私は次のことを試してみました:私はopt.minimizeと呼ばれた後
- は私がなし得るんどちらの場合も、数回
最適化ステップを実行する(損失)
私はAdamOptimizerを持っています。私は自分のモデルをデバッグしたいので、診断を受けたい。私はopt.get_slot()メソッドを認識していますが、残念ながら常にNoneを返します。オプティマイザでスロット値を取得する適切な方法
私は次のことを試してみました:私はopt.minimizeと呼ばれた後
最適化ステップを実行する(損失)
私自身が問題を発見しました。 opt.get_slot(var、slot)を呼び出す必要があります。ここで、varは変数であり、損失関数ではありません。ですから、すべての瞬間とレートのベクトルを返すはずですが、検査する変数を指定する必要があります。
スロットに固有のものではない、より汎用的な方法は、あなたがcapture_vars
デコレータ内部minimize
またはapply_gradients
コールを行い、その後、そのvariable.name
@contextlib.contextmanager
def capture_vars():
"""Decorator to capture global variables created in the block.
"""
micros = int(time.perf_counter()*10**6)
scope_name = "capture_vars_"+str(micros)
op_list = []
with tf.variable_scope(scope_name):
yield op_list
g = tf.get_default_graph()
for v in tf.global_variables():
scope = v.name.split('/', 1)[0]
if scope == scope_name:
op_list.append(v)
with u.capture_vars() as adam_vars:
train_op = opt.apply_gradients(grad_new.to_grads_and_vars())
sess.run([v.initializer for v in adam_vars])
に基づいて、必要な変数を除外し、あります