マシン学習アルゴリズムのTensorFlow実装を準備しました。そのような実装は非常に遅いです。残念ながら、私はどこでミスをしたのか分からないので、ここで質問しました。基本操作のパフォーマンス
たとえば、エポックのような1つの変数に値が依存する非常に多くのパラメータがあるとします。例えば
、私は、このパラメータを有する:
sSigma = tf.maximum(
tf.multiply(sSigma0, tf.exp(-tf.divide(epoch,sSigmaTau))),
sSigmaMin, name='s_sigma')
値sSigma
各エポックのすべての入力例で使用され、変数epoch
(sSigma0, sSigmaTau, sSigmaMin
がtf.constant
である)の関数として計算されます。私がお願いしたい
:
は、それが使用されるたびに評価されますか?変数
epoch
が値を変更してからキャッシュされた後で1回だけ評価されますか?このタイプのパラメータはどのように使用しますか?
- それが実装されましたどのよう
- 変数としてそれを使用し、各エポックの初めに
tf.assign
と、その値を設定する代わりにtf.Variable
- の
tf.placeholder
epoch
を使用しますか?
質問に対する簡単なコード:OP maxInA
が何回実行されますか?
import tensorflow as tf
import numpy as np
with tf.device("gpu:0"):
sess = tf.InteractiveSession()
a = tf.Variable([ [2, 100, 4], [1, 200, 3]], dtype=tf.float64, name='matrix_a')
maxIdx = tf.arg_max(a, 0)
maxInA = tf.reduce_max(a) # <---
op1 = 2 * maxInA
op2 = 3 * maxInA
mainOp = op1 + op2
sess.run(tf.global_variables_initializer())
print('1) Index with max value - should be [0 1 0]')
print(maxIdx.eval())
print('2) Using max twice - should be 1000')
print(mainOp.eval())
は、問題を強調表示するコードを削除したバージョンへのリンクを提供します。あなたはたくさんの質問をしました。いくつか別の投稿に移動することを検討してください。 – Wontonimo
あなたの例では、 'maxInA'は最後の' mainOp.eval() '呼び出しの間に一度だけ評価されます。 –