Ich versuche, das TensorFlow MNIST-Beispiel zu ändern, so dass die Platzhaltereingabewerte an eine Variable für die Manipulation übergeben werden, bevor die Ergebnisse generiert werden.Tensorflow - Platzhalterwerte in Variablen zuweisen
Zum Beispiel:
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
Im Beispiel oben, ich bin vorbei Platzhalter Werte INPUT X in var_x, wo ich beliebige Manipulationen an den Werten durchführen kann, bevor du durch Gewichte multipliziert das Ausgabeergebnis zu erhalten.
Ich erhalte die folgende Fehlermeldung auf tf.matmul:
ValueError: Shape must be rank 2 but is rank 1 for 'MatMul' (op: 'MatMul') with input shapes: [784], [784,10].
Ich bin verwirrt, warum in dem obigen Beispiel, das funktioniert:
tf.matmul(input_x, input_W) + input_b
aber nicht:
tf.matmul(var_x, input_W) _ input_b
Da sowohl input_x als auch var_x beide ein 784 Längenvektor sein sollten.
Ich möchte im Wesentlichen genau die gleiche Matrixmultiplikation haben, die Sie im normalen MNIST-Beispiel haben würden, aber eine Variable anstelle eines Platzhalters verwenden.
Das scheint, als sollte es super unkompliziert sein, aber ich bin neu in TensorFlow, und obwohl ich viele Tutorials/SO-Fragen gelesen habe, habe ich dieses spezielle Szenario noch nirgendwo zuvor gesehen.
Vielen Dank im Voraus für Anregungen!
Vielen Dank für die Antwort, sorry, wenn es war nicht klar. Ich möchte die Ziffern wie gewohnt in den Platzhalter laden, aber vor der Berechnung der Ergebnisse einige Manipulationen an den Werten vornehmen. – inkbleed
Sorry, mein Kommentar wird abgeschnitten. Ich wollte hinzufügen: Also im obigen Beispiel, nehme ich die Platzhalter Werte gefüttert und halbiert. Ähnlich möchte ich vielleicht die Platzhalterwerte nehmen und sie kombinieren oder sie mitteln. Ich möchte das eventuell mit mehreren Variablen tun, also muss input_x von der aktualisierten/matmul'd-Variablen getrennt sein. Hoffe, das ist klarer!Prost – inkbleed
Mmm, in diesem Fall, warum nicht diese Operation mit numpy vor dem Einführen in den Graphen durchführen? – rmeertens