Tensorflow minibatch Ausbildung
Wie kann ich trainieren, ein Netzwerk in TensorFlow mit minibatches von Daten?
In den Tiefen des MNIST-tutorial, die Sie verwenden:
for i in range(1000):
batch = mnist.train.next_batch(50)
train_step.run(feed_dict={x: batch[0], y_: batch[1]})
Meine Frage ist - sind x
und y_
Variablen mit den passenden Abmessungen, um ein einziges Beispiel, das batch[0]
,batch[1]
sind Listen solcher Eingänge und Ausgänge? in diesem Fall wird TensorFlow automatisch fügen Sie die Gradienten für jede Schulung Beispiel in diesen Listen? oder sollte ich mein Modell so, dass x
und y_
bekommen eine ganze minibatch?
Mein problem ist, dass wenn ich versuche Sie zu füttern, eine Liste für jeden Platzhalter, es versucht, den Eingang wird die gesamte Liste für die Platzhalter, und ich somit auf eine grà ¶ ãÿe: Cannot feed value of shape (n, m) for Tensor u'ts:0', which has shape '(m,)'
, wo n
ist der minibatch Größe und m
ist den einzelnen input-Größe.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der MNIST-tutorial
x
undy_
sind Platzhalter mit einer definierten Form:Den
shape=[None, 784]
bedeutet, dass diese Platzhalter haben die dimension 2.Also, auf die Antwort deiner ersten Frage:
Der ersten dimension enthalten kann, die einer unbestimmten Anzahl von Elementen (also 1, 2, ... 50 ...) und die zweite dimension enthalten kann exaclly 784 = 28*28 Elemente (das sind die Funktionen einer einzigen MNIST Bild).
Wenn Sie füttern das Diagramm mit einer python-Liste mit der Form [1, 784] oder [50, 784] ist völlig gleich für tensorflow, es kann mit ihm ohne Probleme.
Tensorflow übernimmt dies für Sie.
Den Fehler meldest
Cannot feed value of shape (n, m) for Tensor u'ts:0', which has shape '(m,)'
ist eine Form-Fehler.
Du bist nicht die Neugestaltung der Eingänge, um die gleiche Form des Platzhalters.