2016-09-13 10 views
2

Ich bin neu bei Keras und Python, jetzt arbeite ich an Keras, um ein Datenmodell zu finden und dieses Model.predict für die Optimierung zu verwenden, Das model.predict kann jedoch nur Eingaben als numpy Array von mindestens 2 Elementen annehmen.Keras model.predict akzeptiert keine Eingabe der Größe eins (Skalar)

Mein Code ist

import keras 
from keras.models import Sequential 
from keras.layers import Dense 
from keras.optimizers import SGD 
import numpy as np 

x = np.arange(-2,3.0,0.01) 
y = x**2 - 2*x + 1 

model = Sequential() 
model.add(Dense(50, activation='sigmoid', 
       input_dim=1, init='uniform')) 
model.add(Dense(1, activation='linear')) 
sgd = SGD(lr=0.05, decay=1e-6, momentum=0.9, nesterov=False) 
model.compile(loss='mean_squared_error', 
       optimizer='sgd', 
       metrics=['accuracy']) 
model.fit(x,y,nb_epoch=300, batch_size = 5,verbose = 0) 

Der Code kann in Ordnung passen, aber wenn ich versuche, model.predict für eine skalare Zahl zu verwenden, um es mir

(Pdb) model.predict(0.0) 
*** Exception: Error when checking : data should be a Numpy array, or list/dict of Numpy arrays. Found: 0.0... 

ich es gibt Fehler zwingen numpy zu sein Array, aber immer noch fehlgeschlagen, und es hieß, die Eingabe muss 2 Dimensionen sein !!!

(Pdb) model.predict(np.asarray(0.0)) 
*** Exception: Error when checking : expected dense_input_1 to have 2 dimensions, but got array with shape() 

aber wenn ich Eingang zwei Zahlen dann es gibt mir die Antwort

(Pdb) model.predict([0.0,0.0]) 
array([[ 1.07415712], 
     [ 1.07415712]], dtype=float32) 

Ich brauche die model.predict einzelne Zahl als Eingabe zu übernehmen für die Optimierung zu verwenden. Ich bin mir nicht sicher, welche Einstellung ich falsch gebrauche. Bitte helfen Sie, danke.

Antwort

0

Versuche:

model.predict(np.asarray(0.0).reshape((1,1))) 

In Keras erster Dimension immer mit Beispielnummer verbunden ist, so muss zur Verfügung gestellt werden.

+0

Vielen Dank, es funktioniert wie ein Charme :) –

Verwandte Themen