Nicht übereinstimmende Formen von Eingabe und Vorhersage in TensorflowPython

Python-Programme
Guest
 Nicht übereinstimmende Formen von Eingabe und Vorhersage in Tensorflow

Post by Guest »

Ich kompiliere das Tensorflow-Modell folgendermaßen:

Code: Select all

model = tf.keras.Sequential()
model.add( tf.keras.layers.InputLayer(shape=(2,)) )
model.add( tf.keras.layers.Dense(1024) )
model.add( tf.keras.layers.Dense(1024) )
model.add( tf.keras.layers.Dense(units=1) )

model.compile(loss="mean_squared_error", optimizer="adam", metrics=["mse"])
Ich erwarte, dass es „lernt“, zwei Gleitkommazahlen zu nehmen und eine Gleitkommazahl vorherzusagen.
Wenn ich es mit trainiere

Code: Select all

model.fit(x=trainData, y=trainRes, epochs=12, batch_size=100)

Code: Select all

trainData
und trainRes sind beide Numpy-Arrays.

Code: Select all

trainData.shape
ist (10000, 2) und trainRes.shape ist (10000,). Es scheint die Epochen zu durchlaufen und sogar model.evaluate(x=testData, y=testRes) wird ausgeführt (obwohl große MSE ausgegeben werden), aber wenn ich versuche, Folgendes auszuführen:

Code: Select all

res = model.predict(testData[0])
Ich erhalte eine Fehlermeldung:

Code: Select all

Invalid input shape for input Tensor("data:0", shape=(2,), dtype=float32). Expected shape (None, 2), but input has incompatible shape (2,)

Arguments received by Sequential.call():
• inputs=tf.Tensor(shape=(2,), dtype=float32)
• training=False
• mask=None
Aus irgendeinem Grund funktioniert Folgendes:

Code: Select all

res = model.predict(testData[0:1])
Anstelle eines einzelnen Werts wird jedoch ein 1x1-Array zurückgegeben.
Meine beste Vermutung ist, dass Keras irgendwie das gesamte Array als eine einzelne Einheit interpretiert zu Schulungszwecken, anstatt „Zeile für Zeile“ vorzugehen. Das erklärt auch, warum das Training Unsinn ist und nichts Vernünftiges angeht.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post