在Python 3中使用Keras时出现ValueError

在Python 3中使用Keras时出现ValueError,python,keras,deep-learning,Python,Keras,Deep Learning,我在Python(版本3.7.4)中运行了这段代码,得到了一个ValueError。 代码如下: import numpy import pandas from keras.models import Sequential from keras.layers import Dense from keras.wrappers.scikit_learn import KerasClassifier from sklearn.model_selection import cross_val_score

我在Python(版本3.7.4)中运行了这段代码,得到了一个ValueError。 代码如下:

import numpy
import pandas
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import StratifiedKFold
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

seed = 7
numpy.random.seed(seed)

dataframe = pandas.read_csv("sonar.all-data.csv", header=None)
dataset = dataframe.values

X = dataset[:,0:60].astype(float)
Y = dataset[:,60]

encoder = LabelEncoder()
encoder.fit(Y)
encoded_Y = encoder.transform(Y)

def create_baseline():
    model = Sequential()
    model.add(Dense(60, input_dim=60, kernel_initializer='normal', activation='relu'))
    model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model

estimator = KerasClassifier(build_fn=create_baseline, epochs=100, batch_size=5, verbose=0)
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
results = cross_val_score(estimator, X, encoded_Y, cv=kfold)
print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))
这就是错误:

ValueError                                Traceback (most recent call last)
<ipython-input-14-cbcbbcf75cec> in <module>
      2 estimator = KerasClassifier(build_fn=create_baseline, epochs=100, batch_size=5, verbose=0)
      3 kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
----> 4 results = cross_val_score(estimator, X, encoded_Y, cv=kfold)
      5 print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_validation.py in cross_val_score(estimator, X, y, groups, scoring, cv, n_jobs, verbose, fit_params, pre_dispatch, error_score)
    387                                 fit_params=fit_params,
    388                                 pre_dispatch=pre_dispatch,
--> 389                                 error_score=error_score)
    390     return cv_results['test_score']
    391 

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_validation.py in cross_validate(estimator, X, y, groups, scoring, cv, n_jobs, verbose, fit_params, pre_dispatch, return_train_score, return_estimator, error_score)
    229             return_times=True, return_estimator=return_estimator,
    230             error_score=error_score)
--> 231         for train, test in cv.split(X, y, groups))
    232 
    233     zipped_scores = list(zip(*scores))

C:\ProgramData\Anaconda3\lib\site-packages\joblib\parallel.py in __call__(self, iterable)
    919             # remaining jobs.
    920             self._iterating = False
--> 921             if self.dispatch_one_batch(iterator):
    922                 self._iterating = self._original_iterator is not None
    923 

C:\ProgramData\Anaconda3\lib\site-packages\joblib\parallel.py in dispatch_one_batch(self, iterator)
    757                 return False
    758             else:
--> 759                 self._dispatch(tasks)
    760                 return True
    761 

C:\ProgramData\Anaconda3\lib\site-packages\joblib\parallel.py in _dispatch(self, batch)
    714         with self._lock:
    715             job_idx = len(self._jobs)
--> 716             job = self._backend.apply_async(batch, callback=cb)
    717             # A job can complete so quickly than its callback is
    718             # called before we get here, causing self._jobs to

C:\ProgramData\Anaconda3\lib\site-packages\joblib\_parallel_backends.py in apply_async(self, func, callback)
    180     def apply_async(self, func, callback=None):
    181         """Schedule a func to be run"""
--> 182         result = ImmediateResult(func)
    183         if callback:
    184             callback(result)

C:\ProgramData\Anaconda3\lib\site-packages\joblib\_parallel_backends.py in __init__(self, batch)
    547         # Don't delay the application, to avoid keeping the input
    548         # arguments in memory
--> 549         self.results = batch()
    550 
    551     def get(self):

C:\ProgramData\Anaconda3\lib\site-packages\joblib\parallel.py in __call__(self)
    223         with parallel_backend(self._backend, n_jobs=self._n_jobs):
    224             return [func(*args, **kwargs)
--> 225                     for func, args, kwargs in self.items]
    226 
    227     def __len__(self):

C:\ProgramData\Anaconda3\lib\site-packages\joblib\parallel.py in <listcomp>(.0)
    223         with parallel_backend(self._backend, n_jobs=self._n_jobs):
    224             return [func(*args, **kwargs)
--> 225                     for func, args, kwargs in self.items]
    226 
    227     def __len__(self):

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_validation.py in _fit_and_score(estimator, X, y, scorer, train, test, verbose, parameters, fit_params, return_train_score, return_parameters, return_n_test_samples, return_times, return_estimator, error_score)
    512             estimator.fit(X_train, **fit_params)
    513         else:
--> 514             estimator.fit(X_train, y_train, **fit_params)
    515 
    516     except Exception as e:

C:\ProgramData\Anaconda3\lib\site-packages\keras\wrappers\scikit_learn.py in fit(self, x, y, sample_weight, **kwargs)
    207         if sample_weight is not None:
    208             kwargs['sample_weight'] = sample_weight
--> 209         return super(KerasClassifier, self).fit(x, y, **kwargs)
    210 
    211     def predict(self, x, **kwargs):

C:\ProgramData\Anaconda3\lib\site-packages\keras\wrappers\scikit_learn.py in fit(self, x, y, **kwargs)
    149         fit_args.update(kwargs)
    150 
--> 151         history = self.model.fit(x, y, **fit_args)
    152 
    153         return history

C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
   1152             sample_weight=sample_weight,
   1153             class_weight=class_weight,
-> 1154             batch_size=batch_size)
   1155 
   1156         # Prepare validation data.

C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\training.py in _standardize_user_data(self, x, y, sample_weight, class_weight, check_array_lengths, batch_size)
    619                 feed_output_shapes,
    620                 check_batch_axis=False,  # Don't enforce the batch size.
--> 621                 exception_prefix='target')
    622 
    623             # Generate sample-wise weight values given the `sample_weight` and

C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\training_utils.py in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
    143                             ': expected ' + names[i] + ' to have shape ' +
    144                             str(shape) + ' but got array with shape ' +
--> 145                             str(data_shape))
    146     return data
    147 

ValueError: Error when checking target: expected dense_8 to have shape (1,) but got array with shape (2,)
ValueError回溯(最近一次调用)
在里面
2估计器=KerasClassifier(构建fn=创建基线,时代=100,批量大小=5,详细度=0)
3 kfold=StratifiedKFold(n_splits=10,shuffle=True,random_state=seed)
---->4结果=交叉值得分(估计量,X,编码Y,cv=kfold)
5打印(“基线:%.2f%%%(.2f%%”)”%(results.mean()*100,results.std()*100))
C:\ProgramData\Anaconda3\lib\site packages\sklearn\model\u selection\\u validation.py交叉评分(估计器、X、y、组、评分、cv、n作业、详细信息、拟合参数、发送前、错误评分)
387拟合参数=拟合参数,
388预调度=预调度,
-->389错误分数=错误分数)
390返回简历结果[“测试分数”]
391
C:\ProgramData\Anaconda3\lib\site packages\sklearn\model\u selection\\u validation.py交叉验证(估计器、X、y、组、评分、cv、n\u作业、详细信息、拟合参数、预调度、返回\u训练\u分数、返回\u估计器、错误\u分数)
229返回次数=真,返回估计数=返回估计数,
230错误分数=错误分数)
-->231列车,等速分段试验(X、y、组))
232
233压缩分数=列表(压缩(*分数))
C:\ProgramData\Anaconda3\lib\site packages\joblib\parallel.py in\uuuuu调用(self,iterable)
919#剩余工作。
920自迭代=错误
-->921如果自行调度一批(迭代器):
922 self.\u iterating=self.\u original\u iterator不是None
923
C:\ProgramData\Anaconda3\lib\site packages\joblib\parallel.py在dispatch\u one\u批处理中(self,迭代器)
757返回错误
758其他:
-->759自我派遣(任务)
760返回真值
761
C:\ProgramData\Anaconda3\lib\site packages\joblib\parallel.py in\u dispatch(self,batch)
714带自锁:
715作业idx=len(自作业)
-->716作业=self.\u后端.apply\u异步(批处理,回调=cb)
717#一个作业完成的速度比它的回调速度要快
718#在我们到达这里之前打电话,导致self.#你的工作
C:\ProgramData\Anaconda3\lib\site packages\joblb\\u parallel\u backends.py in apply\u async(self、func、callback)
180 def apply_async(self、func、callback=None):
181“计划要运行的func”
-->182结果=立即结果(func)
183如果回调:
184回调(结果)
C:\ProgramData\Anaconda3\lib\site packages\joblib\\u parallel\u backends.py in\uuuuuuuu init\uuuu(self,batch)
547#不要延迟应用程序,以免保留输入
548#内存中的参数
-->549 self.results=batch()
550
551 def get(自我):
C:\ProgramData\Anaconda3\lib\site packages\joblib\parallel.py in\uuuuu调用(self)
223具有并行_后端(self._后端,n_作业=self._n_作业):
224返回[func(*args,**kwargs)
-->225用于自身项目中的func、ARG、kwargs]
226
227定义长度(自):
C:\ProgramData\Anaconda3\lib\site packages\joblib\parallel.py in(.0)
223具有并行_后端(self._后端,n_作业=self._n_作业):
224返回[func(*args,**kwargs)
-->225用于自身项目中的func、ARG、kwargs]
226
227定义长度(自):
C:\ProgramData\Anaconda3\lib\site packages\sklearn\model\u selection\\u validation.py in\u fit\u和\u score(估计器、X、y、记分器、训练、测试、详细、参数、拟合参数、返回训练分数、返回参数、返回测试样本、返回次数、返回估计器、错误分数)
512估算器拟合(X列,**拟合参数)
513其他:
-->514估算器拟合(X_序列、y_序列、**拟合参数)
515
516例外情况除外,如e:
C:\ProgramData\Anaconda3\lib\site packages\keras\wrappers\scikit\u learn.py适合(自身、x、y、样本重量,**kwargs)
207如果样本重量不是无:
208 kwargs[‘样品重量’]=样品重量
-->209返回超级(KerasClassifier,自我)。适合(x,y,**kwargs)
210
211 def预测(自我,x,**kwargs):
C:\ProgramData\Anaconda3\lib\site packages\keras\wrappers\scikit_learn.py in fit(self,x,y,**kwargs)
149装配参数更新(kwargs)
150
-->151 history=self.model.fit(x,y,**fit_参数)
152
153回归历史
C:\ProgramData\Anaconda3\lib\site packages\keras\engine\training.py适合(self、x、y、批大小、历元、详细、回调、验证拆分、验证数据、随机、类权重、样本权重、初始历元、每历元的步骤、验证步骤、验证频率、最大队列大小、工作人员、使用多处理、**kwargs)
1152样品重量=样品重量,
1153级重量=级重量,
->1154批次大小=批次大小)
1155
1156#准备验证数据。
C:\ProgramData\Anaconda3\lib\site packages\keras\engine\training.py in\u standarding\u user\u数据(self、x、y、样本重量、类重量、检查数组长度、批次大小)
619馈送输出形状,
620检查批次轴=错误,不强制执行批次大小。
-->621例外情况(前缀=“目标”)
622
623#根据“样本权重”生成样本权重值,以及
C:\ProgramData\Anaconda3\lib\site packages\keras\engine\training\u utils.py标准化输入数据(数据、名称、形状、检查批处理轴、异常前缀)
143':预期“+名称[i]+”具有形状”+
144 str(shape)+“但是得到了具有shape的数组”+
-