2017-01-22 10 views
7

Ich versuche, dieses kleine Tutorial auf keras über Regression zu tun: http://machinelearningmastery.com/regression-tutorial-keras-deep-learning-library-python/Python Keras cross_val_score Fehler

Leider in einen Fehler Ich verwende ich nicht beheben kann. Wenn ich kopieren und einfügen, nur den Code ich folgende Fehlermeldung erhalten, wenn Sie dieses Snippet ausgeführt wird:

import numpy 
import pandas 
from keras.models import Sequential 
from keras.layers import Dense 
from keras.wrappers.scikit_learn import KerasRegressor 
from sklearn.model_selection import cross_val_score 
from sklearn.model_selection import KFold 
from sklearn.preprocessing import StandardScaler 
from sklearn.pipeline import Pipeline 
# load dataset 
dataframe = pandas.read_csv("housing.csv", delim_whitespace=True,header=None) 
dataset = dataframe.values 
# split into input (X) and output (Y) variables 
X = dataset[:,0:13] 
Y = dataset[:,13] 
# define base mode 
def baseline_model(): 
    # create model 
    model = Sequential() 
    model.add(Dense(13, input_dim=13, init='normal', activation='relu')) 
    model.add(Dense(1, init='normal')) 
    # Compile model 
    model.compile(loss='mean_squared_error', optimizer='adam') 
    return model 
# fix random seed for reproducibility 
seed = 7 
numpy.random.seed(seed) 
# evaluate model with standardized dataset 
estimator = KerasRegressor(build_fn=baseline_model, nb_epoch=100,batch_size=5, verbose=0) 

kfold = KFold(n_splits=10, random_state=seed) 
results = cross_val_score(estimator, X, Y, cv=kfold) 

Der Fehler sagt:

für jede Hilfe
TypeError: get_params() got an unexpected keyword argument 'deep' 

Dank. Hier

ist die vollständige Rückverfolgung:

Traceback (most recent call last): 


File "<stdin>", line 1, in <module> 
    File "C:\Users\myname\Anaconda3\lib\site-packages\sklearn\model_selection\_validation.py", line 140, in cross_val_score 
    for train, test in cv_iter) 
    File "C:\Users\myname\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 758, in __call__ 
    while self.dispatch_one_batch(iterator): 
    File "C:\Users\myname\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 603, in dispatch_one_batch 
    tasks = BatchedCalls(itertools.islice(iterator, batch_size)) 
    File "C:\Users\myname\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 127, in __init__ 
    self.items = list(iterator_slice) 
    File "C:\Users\myname\Anaconda3\lib\site-packages\sklearn\model_selection\_validation.py", line 140, in <genexpr> 
    for train, test in cv_iter) 
    File "C:\Users\myname\Anaconda3\lib\site-packages\sklearn\base.py", line 67, in clone 
    new_object_params = estimator.get_params(deep=False) 
TypeError: get_params() got an unexpected keyword argument 'deep' 
+2

hier Ihren ganzen Code einfügen bitte! – Arman

+1

Ich habe die Frage bearbeitet. im Grunde kopiere ich einfach Paste aus dem Turotial in den Link – user7454972

+1

Bitte post die vollständige Traceback, nicht nur die letzte Fehlermeldung. –

Antwort

1

EDIT (25/01/2017):Diese Lösung funktioniert, weil mit der Conda Umwelt die Version von Keras, die installiert ist 1.1.1, nicht der mit dem Fehler (1.2.1). Jasons Lösung ist die richtige. Ich habe hier meine Lösung für den Fall, dass es hilft, aber Jasons Lösung ist die tatsächliche Lösung.

Ich hatte das gleiche Problem nach der Aktualisierung Keras (1.2.1). Ich denke, das Problem liegt bei den Versionen der Software. Ich empfehle Ihnen, Anaconda zu installieren und dann eine neue Umgebung zu erstellen, in der Sie tensorflow installieren. Grundsätzlich folgen Sie diesen Schritten: https://www.tensorflow.org/get_started/os_setup#anaconda_installation

Aktivieren Sie die Umgebung und installieren Sie mit der Option conda. Dann können Sie andere Bibliotheken installieren, die Sie benötigen. Mit der Umgebung tensorflow aktiviert, installieren Sie mit conda install name_of_the_package.

Sie können zwischen theano und tensorflow mit den Backends von Keras (https://keras.io/backend/) wechseln.

Im Grunde erstellen Sie mit Conda-Umgebungen einen geschützten, gekapselten Bereich, in dem Sie installieren und deinstallieren können, was Sie wollen und es hat keine Auswirkungen auf Ihre anderen Programme außerhalb der Umgebung. Was Sie tun, ist wie ein Löschen und installieren Sie alles neu, mit den neuesten und funktionierenden Versionen.

Ich hoffe, es hilft.

14

Der spezifische Fehler gemeldet wird:

TypeError: get_params() got an unexpected keyword argument 'deep' 

Der Fehler wurde durch einen Fehler in Keras Version 1.2.1 eingeführt. Dies tritt auf, wenn Sie die Keras-Wrapper-Klassen (z. B. KerasClassifier und KerasRegressor) und die scikit-learn-Funktion cross_val_score() verwenden.

Der Fehler wurde im Keras GitHub Projekt identified und patched.

Es gibt zwei Updates, die ich versucht habe:

Fix 1: Roll-back zu Keras Version 1.2.0.

Typ:

sudo pip install keras==1.2.0 

Fix 2: Monkey-Patch Keras mit dem Update.

Nach dem Import, aber vor Ihrem Arbeitstyp:

from keras.wrappers.scikit_learn import BaseWrapper 
import copy 

def custom_get_params(self, **params): 
    res = copy.deepcopy(self.sk_params) 
    res.update({'build_fn': self.build_fn}) 
    return res 

BaseWrapper.get_params = custom_get_params 

Beiden Korrekturen für mich arbeiten (Python 2 und 3/sklearn 0.18.1).

Einige zusätzliche Kandidaten fixe:

  • Warten auf die nächste Version von Keras (1.2.2) veröffentlicht werden.
  • Checkout Keras von Github dann manuell bauen und installieren.
0

Hatte das gleiche Problem. Nach der Aktualisierung der Keras-Version auf 1.2.2 ging das Problem verloren.

Wenn Sie pip verwenden, um Ihre Pakete zu verwalten Sie keras mit dem folgenden Befehl aktualisieren:

sudo pip install --upgrade keras