Heute füge ich meinem LSTM in Tensorflow einen Lernratenabfall hinzu.Warum verlangsamt tf.assign() die Ausführungszeit?
I
änderntrain_op = tf.train.RMSPropOptimizer(lr_rate).minimize(loss)
zu
lr = tf.Variable(0.0,trainable=False)
und jeden Zug Schritt
sess.run(tf.assign(lr, lr_rate*0.9**epoch))
Allerdings laufen, erhöht sich diese Änderung der Ausführungszeit von ~ 7 Minuten auf über ~ 20 Minuten .
Meine Frage ist: Warum erhöht diese Änderung die Ausführungszeit?
Eine offensichtliche Problemumgehung besteht darin, die Zuweisung nur alle 1000 Iterationen durchzuführen. Ich möchte jedoch die Gründe dafür verstehen.
- Macht sess.run() zusätzliche Zeit?
- Benötigt tf.asign() zusätzliche Zeit?
- Könnte ich diese tf.assign() auf eine andere, effizientere Weise implementieren?
Dank Olivier, ich werde die Exponential_Decay() implementieren. Am Ende der Woche werde ich die Verbesserungen melden –
Ja, Ihre Implementierung funktioniert gut! –