2016-11-01 3 views
1

Ich bin ein Modell in Keras trainiert, nur Dichte Schichten. Allerdings, wenn ich versuche, es vorherzusagen, gibt mir die gleiche Antwort die ganze Zeit auch mit anderen Werten.Das Modell von Keras gibt mir die gleiche Ausgabe

import numpy 
from keras.models import Sequential 
from keras.layers import Dense 
from keras.layers import LSTM 
from keras.layers import Dropout 
from keras.layers.embeddings import Embedding 
from keras.optimizers import Adam 
import pandas as pd 
import tensorflow as tf 
tf.python.control_flow_ops = tf 

df = pd.read_csv('/home/sam/Documents/data.csv') 
dfX = df[['Close']] 
dfY = df[['Y']] 
bobX = dfX.as_matrix() 
boby = dfY.as_matrix() 

model = Sequential() 
model.add(Dense(200, input_dim=1)) 
model.add(Activation('sigmoid')) 
model.add(Dense(75)) 
model.add(Activation('sigmoid')) 
model.add(Dense(10)) 
model.add(Activation('sigmoid')) 
model.add(Dense(1)) 
adam = Adam(lr=0.1) 
model.compile(loss='mse', optimizer= adam) 
print(model.summary()) 

model.fit(bobX, boby, nb_epoch=2500, batch_size=500, verbose=0) 

model.predict(np.array([[210.99]])) 

Antwort

2

Ihre Lernrate ist WAY zu hoch für Adam. Eigentlich ist 0.1 zu hoch für die meisten Optimierer, die ich benutzt habe. Sie sollten 1e-3 oder 1e-4 als Lernrate verwenden. Diese funktionieren normalerweise gut für mich. Wenn Sie die höchste Lernrate verwenden, wird das Modell nicht konvergieren. Aus meiner Erfahrung ergibt sich oft nur der konstante Durchschnittswert des Problems.

+0

also setze ich es auf lr = 0.03, sorry über das bin neu zu keras – Sam

+0

1e-3 bedeutet 1 * 10^-3 = 0,001 – chasep255

+0

Danke lassen Sie mich es versuchen – Sam

Verwandte Themen