2017-11-18 4 views
0

直進しよう、現在、私はテンソルのインデックスを作成し、非ゼロの項を-1に、ゼロの項を1に変更したいと思います。しかし、TensorFlowでそれを行う方法はわかりません。TensorFlowブールインデックス

y_[y_ != 0].assign(-1) 
y_[y_ == 0].assign(1) 

理由はTensorFlowはブールインデックス作成をサポートしていないようです。

は、ここに私のコードです。どうすれば修正できますか?

Btw、私にとってはboolean_maskはうまくいきません。なぜなら、私はy_のスライスを返したくないからです。y_の値を変更したいだけです。

ありがとうございます!

答えて

0

条件付き割り当てにはtf.cond()を使用できます。私は以下のサンプルコードを与えました。

import tensorflow as tf 

x_= tf.Variable(5) #non-zero variable 
y_= tf.Variable(0) #variable euqals to 0 

y_ =tf.cond(tf.equal(y_,0),lambda :y_.assign(1),lambda :y_.assign(-1)) #assign 1 if variable equals to zero else -1 
x_ =tf.cond(tf.equal(x_,0),lambda :x_.assign(1),lambda :x_.assign(-1)) #assign 1 if variable equals to zero else -1 

sess = tf.Session() 
sess.run(tf.global_variables_initializer()) 

with sess.as_default(): 
    print(y_.eval()) #prints 1 
    print(x_.eval()) #prints -1 

希望します。

+0

ありがとうございます!これは、ランク0の場合に優れた仕事をすることができます!しかし、私の場合、y_はCNNのフローにあるので、グラフを実際に実行する前に、その形状は実際にはrank1(私の場合は(?、)です)です。出力は 'ValueError:Shapeはランク0でなければならないが、 'cond/Switch'(op: 'Switch')の入力シェイプではランク1である:[?]、[?]。'、それを修正するために何ができるか? – Andre

+0

こんにちは、Nipun!私は 'tf.where'を使ってこの問題を解決したと思いますが、まだ努力してくれてありがとう! – Andre

+0

ええ、申し訳ありませんが、私はそれを明確にしていませんでした!まだ助けてくれてありがとう! – Andre

関連する問題