2017-01-22 4 views
7

Я пытаюсь сделать этот маленький учебник по keras о регрессии: http://machinelearningmastery.com/regression-tutorial-keras-deep-learning-library-python/Python Keras cross_val_score Ошибка

К сожалению, я бегу в ошибку я не могу исправить. Если я просто скопировать и вставить код, я получаю следующее сообщение об ошибке при выполнении этого фрагмента кода:

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) 

Ошибка говорит:

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

Спасибо за любую помощь.

Вот полный отслеживающий:

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

Вставить весь код здесь Пожалуйста! – Arman

+1

Я редактировал вопрос. в основном я просто скопирую пасту из turotial по ссылке – user7454972

+1

Пожалуйста, разместите полную трассировку, а не только последнее сообщение об ошибке. –

ответ

1

EDIT (25/01/2017):Это решение работает, потому что с окружающей средой Конда версия Keras, который установлен 1.1.1, не с ошибкой (1.2.1). Решение Джейсона является правильным. Я оставил здесь свое решение в случае, если это может помочь, но решение Джейсона является фактическим решением.

У меня была такая же проблема после обновления Keras (1.2.1). Я думаю, проблема связана с версиями программного обеспечения. Я рекомендую вам установить Anaconda, а затем создать новую среду, в которой вы устанавливаете tensorflow. В основном выполните следующие шаги: https://www.tensorflow.org/get_started/os_setup#anaconda_installation

Активируйте среду и установите ее с помощью опции conda. Затем вы можете установить другие библиотеки, которые вам понадобятся. С окружающей средой tensorflow активирована установка с conda install name_of_the_package.

Вы можете изменить между theano и tensorflow с крышками Keras (https://keras.io/backend/).

В основном, в средах конда вы создаете защищенную, инкапсулированную область, где вы можете установить и удалить то, что хотите, и это не повлияет на ваши другие программы вне среды. То, что вы делаете, похоже на удаление и переустановку всего заново, с последними и рабочими версиями.

Надеюсь, это поможет.

14

Специфическая ошибка Доложенная:

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

Неисправность была введена ошибкой в ​​Keras версии 1.2.1. Это происходит, когда вы используете классы оболочки Keras (например, KerasClassifier и KerasRegressor) и функцию scikit-learn cross_val_score().

Ошибка была identified и patched в проекте Keras GitHub.

Есть два исправления, которые я пробовал:

Fix 1: Откат к Keras версии 1.2.0.

Тип:

sudo pip install keras==1.2.0 

Fix 2: Обезьяна-патч Keras с исправлением.

После Вашего импорта, но до вашего типа работы:

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 

Оба исправления работают для меня (Python 2 и 3/sklearn 0.18.1).

Некоторые дополнительные кандидаты исправления:

  • Дождитесь следующей версии Keras (1.2.2) должен быть освобожден.
  • Оформить заказ Keras из Github, затем построить и установить вручную.
0

Была такая же проблема. После обновления версии keras до версии 1.2.2 проблема исчезла.

Если вы используете пип, чтобы управлять пакетами вы можете обновить keras с помощью следующей команды:

sudo pip install --upgrade keras 

 Смежные вопросы

  • Нет связанных вопросов^_^