我試圖修改TensorFlow MNIST示例,以便在生成結果之前將佔位符輸入值傳遞給操作變量。Tensorflow - 將佔位符值分配給變量
例如:
import tensorflow as tf
# create placeholder/weights/biases
input_x = tf.placeholder(tf.float32, [None, 784])
input_W = tf.Variable(tf.zeros([784, 10]))
input_b = tf.Variable(tf.zeros([10]))
# Create the new variable
var_x = tf.Variable(tf.zeros([784]), trainable=False)
# Perform an arbitrary manipulation on MNIST input, and assign to var_x
for i in range(0,784):
var_x[i].assign(input_x[i]/2)
input_Y = tf.matmul(var_x, input_W) + input_b
在上面的例子中,我通過佔位符值input_X成var_X,哪裏可以通過權重相乘,以獲得輸出結果之前,對值執行任意操作,。
,我發現了以下錯誤的tf.matmul:
ValueError: Shape must be rank 2 but is rank 1 for 'MatMul' (op: 'MatMul') with input shapes: [784], [784,10].
我很困惑,爲什麼在上面的例子中,這個工程:
tf.matmul(input_x, input_W) + input_b
但這並不:
tf.matmul(var_x, input_W) _ input_b
由於input_x和var_x都應該是784長度的向量。
我基本上希望它與正常MNIST示例中的矩陣乘法完全相同,但使用變量而不是佔位符。
這似乎應該是超級直觀,但我是TensorFlow的新手,儘管閱讀了很多教程/ SO問題,但我從未在任何地方見過這種特殊場景。
在此先感謝您的任何建議!
感謝您的答覆,對不起,如果它不清楚。我想正常地將數字加載到佔位符中,但在計算結果之前對這些值進行一些操作。 – inkbleed
對不起,我的評論去掉了。 我想補充: 所以在上面的例子中,我將佔位符的饋送值減半。同樣,我可能想佔用佔位符值,並將它們合併或平均它們等等。我可能希望最終對多個變量執行此操作,因此input_x需要與更新/ matmul'd變量分開。 希望更清楚!歡呼 – inkbleed
嗯,在這種情況下,爲什麼不用numpy來執行這個操作,然後把它送入圖表? – rmeertens