2017-12-10 13 views
2

ベクトルの各要素の条件を評価しようとしているので、i’th要素がy[i]の条件を満たすかどうかを示すベクトルが得られます。ループを使用せずにこれを行う方法はありますか?これまでのところ、私は次のことを試してみました:テンソルフローのベクトルyの各要素の条件を評価する

dim = 3 

x = tf.placeholder(tf.float32, shape = [dim]) 
y = tf.log(x) 

tf1 = tf.constant(1) 
tf0 = tf.constant(0) 


x_0 = tf.tile([x[0]], [dim]) 

delta = tf.cond(tf.equal(y,x_0), tf1, tf0)) 
sess = tf.Session() 
a = np.ones((1,3)) 

print(sess.run(delta, feed_dict={x:a})) 

与えられた入力xのために、私はdelta[i]1そうy[i] = x[0]場合と0になりたいです。

Iはエラー

形状が同じランクである必要があり得るが、 'Select_2'(OP: '選択')を0と1である[]、入力図形[3]、[]で

私はTensorFlowを初めて使用しています。

答えて

0

は、tf.condを使用する必要はあなたがループせずにこれを行いtf.equalを使用することができ、存在しない、と理由放送なしありそれをタイルする必要があります。ただ、使用:

dim = 3 

x = tf.placeholder(tf.float32, shape = [dim]) 
y = tf.log(x) 

delta = tf.cast(tf.equal(y,x[0]),tf.float32) # or integer type 

sess = tf.Session() 
a = np.ones((1,3)) 

print(sess.run(delta, feed_dict={x:a})) 
1

テンソルを異なる形で比較しようとしているため、エラーが発生しているようです。コード働いて

:あなたのケースでは

import tensorflow as tf 
import numpy as np 

dim = 3 

x = tf.placeholder(tf.float32, shape=(1, dim), name='ktf') 
y = tf.log(x) 

delta = tf.cast(tf.equal(y, x[0]), dtype=tf.int32) 

sess = tf.Session() 
a = np.ones((1, 3)) 

print(sess.run(delta, feed_dict={x: a})) 
+0

は、ループを使用していない解決策はあります:) –

+0

@mund_akはい、編集した:)? –

関連する問題