2017-07-25 6 views
0

Hintergrund:Tensorflow - Handling Eingänge grafisch darzustellen

Ich versuche, ein Tensor Größe m durch einen anderen Tensor Größe M. Ich möchte das Ergebnis einem mxn Tensor

zum Beispiel zu multiplizieren:

1.0    
     0.2 0.2 0.5 
0.0 X  = 0.0 0.0 
     0.5 0.2 0.5 
1.0    

ich kann dies tun mit numpy:

x_vals = np.array([[1.0, 0.0, 1.0],[0.0, 0.0, 1.0], [0.0, 1.0, 1.0], [1.0, 1.0, 1.0]]) 
deltas = np.array([0.2, 0.5]) 

def Mult(x): 
    return x*deltas 

#I can do this... 
for x in x_vals: 
    print Mult(x.reshape(3,1)) 

Ich kann dies nicht mit Tensorflow tun?

x_vals = np.array([[1.0, 0.0, 1.0],[0.0, 0.0, 1.0], [0.0, 1.0, 1.0], [1.0, 1.0, 1.0]]) 
deltas = np.array([0.2, 0.5]) 

def Mult(x): 
    return x*deltas 
x = tf.placeholder('float', (None,3)) 
delta = tf.constant(deltas) 
result = Mult(tf.reshape(x, shape=(3,1))) 
init = tf.global_variables_initializer() 

# create session and run the graph 
with tf.Session() as sess: 
    sess.run(init) 
    arr = sess.run(result, feed_dict={x: x_vals}) 

Es scheint, dass es in der gesamten x_val Array übergibt, und ich bin nicht sicher, für jeden Eintrag über den session.run Looping ist, wie seine funktionieren soll. Kann mir jemand einen Zeiger geben?

Antwort

0

In numpy kann vereinfacht werden:

x_vals = np.array([[1.0, 0.0, 1.0],[0.0, 0.0, 1.0], [0.0, 1.0, 1.0], [1.0, 1.0, 1.0]]) 
deltas = np.array([0.2, 0.5]) 

def Mult(x): 
    return x[:,:,tf.newaxis]*deltas[tf.newaxis,:] 
x = tf.placeholder('float', (None,3)) 
delta = tf.constant(deltas) 
result = Mult(x) 
init = tf.global_variables_initializer() 

# create session and run the graph 
with tf.Session() as sess: 
sess.run(init) 
arr = sess.run(result, feed_dict={x: x_vals}) 
+0

ich sehe, erweitert man die Dimensionen des Tensor: x_vals[:,:,np.newaxis]*deltas[np.newaxis,:]

Dies auch in tensorflow funktionieren sollte. Vielen Dank – Kevin

Verwandte Themen