2017-05-05 158 views
1

如何爲以下計算建立張量流圖?我現在面臨的問題是如何使用張量A的形狀信息,它具有可變的形狀大小。如何在張量流中使用張量的動態形狀

A = tf.placeholder(tf.float32, [None,10]) 
B = tf.Variable(tf.random_normal([10,20])) 
C = tf.matmul(A, B) 
D = tf.matmul(tf.transpose(C), A) # the value of A.shape[0] 

回答

1

你是一個張A的價值已經傳遞給一個佔位符,當你這樣做,你就知道它的形狀。我會爲您關心的形狀創建另一個佔位符,並通過它:

import tensorflow as tf 
import numpy as np 

A = tf.placeholder(tf.float32, [None,10]) 
L = tf.placeholder(tf.float32, None) 

B = tf.Variable(tf.random_normal([10,20])) 
C = tf.matmul(A, B) 
D = tf.multiply(tf.transpose(C), L) // L is a number, matmul does not multiply matrix with a number 

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer()) 
    a = np.zeros((5, 10), dtype=np.float32) 
    l = a.shape[0] 
    sess.run(D, {A: a, L: l}) 
+0

謝謝。這工作。這並不完美,因爲每次你想要抓取D時,都必須記住餵食形狀。 – Negelis

+0

其實這是一個很好的做法,有一個幫助器生成所有的飼料字典,你做的事情就像:'sess.run(,your_dict_helper())' –

+0

我明白了。非常感謝! – Negelis