2017-01-22 28 views
7

Tôi cố gắng để làm ít hướng dẫn này trên keras về hồi quy: http://machinelearningmastery.com/regression-tutorial-keras-deep-learning-library-python/Python Keras cross_val_score Lỗi

Đáng tiếc là tôi đang chạy vào một lỗi tôi không thể sửa chữa. Nếu tôi chỉ cần sao chép và dán đoạn mã tôi nhận được lỗi sau khi chạy đoạn mã này:

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) 

Lỗi nói:

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

Cảm ơn sự giúp đỡ nào.

Dưới đây là toàn bộ traceback:

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

Dán toàn bộ mã của bạn ở đây Xin vui lòng! – Arman

+1

tôi đã chỉnh sửa câu hỏi. về cơ bản tôi chỉ cần sao chép dán từ turotial trong liên kết – user7454972

+1

Xin vui lòng gửi các traceback đầy đủ, không chỉ là thông báo lỗi cuối cùng. –

Trả lời

1

EDIT (25/01/2017):giải pháp này hoạt động bởi vì với môi trường conda phiên bản của Keras được cài đặt là 1.1.1, không cái có lỗi (1.2.1). Giải pháp của Jason là đúng. Tôi rời khỏi đây giải pháp của tôi trong trường hợp nó có thể giúp nhưng giải pháp của Jason là giải pháp thực tế.

Tôi gặp sự cố tương tự sau khi nâng cấp Keras (1.2.1). Tôi nghĩ vấn đề là với các phiên bản của phần mềm. Những gì tôi khuyên bạn nên cài đặt Anaconda, sau đó tạo môi trường mới nơi bạn cài đặt tensorflow. Về cơ bản, hãy làm theo các bước sau: https://www.tensorflow.org/get_started/os_setup#anaconda_installation

Kích hoạt môi trường và cài đặt bằng tùy chọn conda. Sau đó, bạn có thể cài đặt các thư viện khác mà bạn sẽ cần. Với môi trường tensorflow kích hoạt bạn cài đặt với conda install name_of_the_package.

Bạn có thể thay đổi giữa theanotensorflow với các phụ trợ của Keras (https://keras.io/backend/). Về cơ bản, với môi trường conda bạn đang tạo ra một khu vực được bảo vệ, đóng gói, nơi bạn có thể cài đặt và gỡ cài đặt những gì bạn muốn và nó không ảnh hưởng đến các chương trình khác của bạn ra khỏi môi trường. Những gì bạn đang làm cũng giống như xóa và cài đặt lại mọi thứ, với các phiên bản mới nhất và đang hoạt động.

Hy vọng điều đó sẽ hữu ích.

14

Các lỗi cụ thể báo cáo là:

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

Các lỗi đã được giới thiệu bởi một lỗi trong Keras phiên bản 1.2.1. Nó xảy ra khi bạn sử dụng các lớp trình bao bọc Keras (ví dụ: KerasClassifier và KerasRegressor) và hàm scikit-learning cross_val_score().

Lỗi này là identifiedpatched trong dự án Keras GitHub.

Có hai bản sửa lỗi Tôi đã thử:

Fix 1: cuốn trở lại Keras phiên bản 1.2.0.

Loại:

sudo pip install keras==1.2.0 

Fix 2: Khỉ-vá Keras với việc sửa chữa.

Sau khi nhập khẩu của bạn, nhưng trước khi loại công việc của bạn:

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 

Cả sửa chữa làm việc cho tôi (Python 2 và 3/sklearn 0.18.1).

Một số sửa chữa ứng cử viên bổ sung:

  • Chờ cho phiên bản tiếp theo của Keras (1.2.2) sẽ được phát hành.
  • Thanh toán Keras từ Github sau đó xây dựng và cài đặt theo cách thủ công.
0

Đã xảy ra sự cố tương tự. Sau khi nâng cấp phiên bản máy tính lên 1.2.2, sự cố đã biến mất.

Nếu bạn sử dụng pip để quản lý gói của bạn, bạn có thể nâng cấp keras với lệnh sau đây:

sudo pip install --upgrade keras 
Các vấn đề liên quan