0
私はテンソルフローコードを書いています。ここでは、各更新後に変数ベクトルを正規化したいと考えています。テンソルフロー変数のサイズを正規化する方法
sess = tf.InteractiveSession()
y = tf.Variable(tf.random_uniform([2], -0.5, 0.5))
init = tf.initialize_all_variables()
sess.run(init)
a = [2, 3]
loss = tf.reduce_sum(tf.square(a - y))
y = y/tf.sqrt(tf.reduce_sum(tf.square(y)))
optimizer = tf.train.GradientDescentOptimizer(0.05)
train = optimizer.minimize(loss)
for step in range(100):
sess.run(train)
temp2= sess.run(y)
print(temp2)
及びIは
y = tf.Variable(tf.random_uniform([2], -0.5, 0.5))
を変更した場合、ただし[0.55469805 0.83205169]、[2,3]
の方向に正規化ベクトルである所望の答えを与える:次のコードはうまく機能します
へ
y = tf.Variable(tf.random_uniform([2,2], -0.5, 0.5))
と
y[0] = y[0]/tf.sqrt(tf.reduce_sum(tf.square(y[0])))
へ
y = y/tf.sqrt(tf.reduce_sum(tf.square(y)))
それから私は「『変数』オブジェクトは、アイテムの割り当てをサポートしていません」というエラーを取得します。私はまた、誰もが、私はYのようなベクトル列を正規化することができますどのように助けることができます
loss = tf.reduce_sum(tf.square(a - y[0]))
に損失関数を変更する[0] tensorflowにおける変数の型の?
ありがとうございました。私はこれを試してみる必要があります。私はそれが動作する場合、別のコメントを残します。 –
@SukhoLee動作している場合は、コメントを残す必要はありません。ソリューションを答えとして受け入れるだけです。 – OmG
残念ながら、このコードでは、「任意の変数にグラデーションはありません」 エラーが発生します。 y.eval()[0] [:]は値であり、変数ではないからです。y.eval()[0] [:]の代わりにy [0]を使用すると、答えは [ 1.99994683 2.99990678]であり、これは損失関数に対する非正規化最小化応答である。 機能。 –