Ich versuche ein einfaches logistisches Regressionsmodell zu implementieren, das mit meinen eigenen Bildern trainiert wurde, aber ich bekomme diesen Fehler, wenn ich versuche, das Modell zu trainieren:
%Vor% Die Daten, die ich an train_step.run({x: batch_xs, y_: batch_ys})
füttere, sind wie folgt:
Was mache ich falsch? Danke im Voraus!
EDIT 1 : Das Problem war, dass ich die Tensoren in batch_xs
auswerten musste, bevor ich sie an train_step.run(...)
übergab. Ich dachte, die Run-Methode würde dafür sorgen, aber ich glaube, ich lag falsch?
Wie auch immer, also einmal, bevor ich die Funktion aufgerufen habe:
BEARBEITEN 2 : Ich hatte mehrere Probleme, selbst nachdem ich das getan habe, was in den Antworten unten vorgeschlagen wurde. Ich habe schließlich alles behoben, indem ich die Tensoren weggelassen und numpige Arrays benutzt habe.
Hoffe das hilft jemand anderem
Dieser spezielle Fehler kommt von numpy
. Der Aufruf von np.array
für eine Sequenz mit inkonsistenten Dimensionen kann sie auslösen.
An dem Punkt, an dem tf
sicherstellt, dass alle Elemente von feed_dict
numpy.array
s sind, scheint es fehlzuschlagen.
Überprüfen Sie Ihre feed_dict
.
Das feed_dict
Argument für Operation.run()
(auch Session.run()
und Tensor.eval()
) akzeptiert eine Wörterbuchzuordnung Tensor
Objekte (normalerweise tf.placeholder()
Tensoren) zu einem numplien Array (oder Objekten, die trivial in ein numpy Array konvertiert werden können).
In Ihrem Fall übergeben Sie batch_xs
, das ist eine Liste von numpy Arrays, und TensorFlow weiß nicht, wie man dies in ein numpy Array umwandelt. Nehmen wir an, dass batch_xs
wie folgt definiert ist:
Wir können batch_xs
in ein 32 x 100 x 100
Array konvertieren, indem wir Folgendes verwenden:
Beachten Sie, dass, wenn batch_ys
eine Liste von Floats ist, diese durch TensorFlow transparent in ein 1-D-Numpy-Array konvertiert wird, so dass Sie dieses Argument nicht konvertieren müssen.
EDIT: mdaoust macht einen gültigen Punkt in den Kommentaren: Wenn Sie eine Liste von Arrays in np.array
übergeben (und daher als Wert in einem feed_dict
), wird es automatisch vstack
ed, es sollte also nicht notwendig sein, Ihre Eingabe wie vorgeschlagen zu konvertieren. Stattdessen klingt es so, als ob die Formen Ihrer Listenelemente nicht übereinstimmen. Fügen Sie Folgendes hinzu:
... vor dem Aufruf von train_step.run()
, und dies sollte zeigen, ob Sie nicht übereinstimmen.
Tags und Links tensorflow python-2.7