python
1def optimization(cross_entropy): 2 3 trainable = tf.all_variables() 4 optimizer = tf.train.AdamOptimizer(learning_rate=0.00001) 5 grads = tf.gradients(cross_entropy, trainables) 6 grads, _ = tf.clip_by_global_norm(grads,clip_norm=5) 7 grad_var_pairs = zip(grads, trainables) 8 gc_optimizer = optimizer.apply_gradients(grad_var_pairs) 9 10 return gc_optimizer
上のように最適化を行う関数を作成し、
python
1with tf.Session() as sess: 2 ・ 3 ・ 4 ・ 5 gc_optimizer = optimization(cross_entropy) 6 sess.run(gc_optimizer,feed_dict=feed_dict)
のように、任意のロスcross_entropyについて関数を呼び出し最適化をおこないたいのですが、以下のようなエラーが出てしまいます。
FailedPreconditionError (see above for traceback): Attempting to use uninitialized value beta1_power
[[Node: beta1_power/read = IdentityT=DT_FLOAT, _class=["loc:@Variable"], _device="/job:localhost/replica:0/task:0/gpu:0"]]
[[Node: bidirectional_rnn/fw/fw/stack/_93 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_1563_bidirectional_rnn/fw/fw/stack", tensor_type=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"]]
どうやらadamのパラメータが初期化できていないのが問題のようですが、これを解決する方法を教えてくださると助かります。