python ValueError:检查目标时出错:预期密集型_2具有形状(12),但获得具有形状(1)的数组

python ValueError:检查目标时出错:预期密集型_2具有形状(12),但获得具有形状(1)的数组,python,keras,Python,Keras,编写程序,使用keras建立BP神经网络预测数据(回归),程序如下: bp_dataset = pd.read_csv('Dataset/allGlassStraightThroughTube.csv') bp_tube_par = bp_dataset.iloc[:, 3:8] bp_tube_eff = bp_dataset.iloc[:, -1:] bp_tube_par_X_train,bp_tube_par_X_test,bp_tube_eff_Y_train,bp_tube_ef

编写程序,使用keras建立BP神经网络预测数据(回归),程序如下:

bp_dataset = pd.read_csv('Dataset/allGlassStraightThroughTube.csv')
bp_tube_par = bp_dataset.iloc[:, 3:8]
bp_tube_eff = bp_dataset.iloc[:, -1:]


bp_tube_par_X_train,bp_tube_par_X_test,bp_tube_eff_Y_train,bp_tube_eff_Y_test = train_test_split(bp_tube_par,
                                                                                                 bp_tube_eff,
                                                                                                 random_state=33,
                                                                                                 test_size=0.3)

# normalize the train and test Dataset
sc_X = StandardScaler()
sc_Y = StandardScaler()
sc_bp_tube_par_X_train = sc_X.fit_transform(bp_tube_par_X_train)
sc_bp_tube_par_X_test = sc_X.transform(bp_tube_par_X_test)
sc_bp_tube_eff_Y_train = sc_Y.fit_transform(bp_tube_eff_Y_train)
sc_bp_tube_eff_Y_test = sc_Y.transform(bp_tube_eff_Y_test)

# build BP neural network
model = Sequential()
model.add(Dense(12, input_dim=5, activation='relu'))
model.add(Dense(12, activation='linear'))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy', 'mae'])
model.fit(sc_bp_tube_par_X_train, sc_bp_tube_eff_Y_train, epochs=100)
pre_sc_bp_tube_eff_Y_test = model.predict(sc_bp_tube_par_X_test)
但这是一个错误:

Traceback (most recent call last):
  File "C:/Users/win/PycharmProjects/allGlassStraightThroughTube/bpTest.py", line 44, in <module>
model.fit(sc_bp_tube_par_X_train, sc_bp_tube_eff_Y_train, epochs=100)
  ...
  ValueError: Error when checking target: expected dense_2 to have shape (12,) but got array with shape (1,)
回溯(最近一次呼叫最后一次):
文件“C:/Users/win/PycharmProjects/allglassdirectthroughtube/bpTest.py”,第44行,in
模型拟合(sc_-bp_-tube_-par_-X_序列,sc_-bp_-tube_-eff_-Y_序列,历代=100)
...
ValueError:检查目标时出错:预期稠密_2具有形状(12),但获得具有形状(1)的数组
你能告诉我原因和如何改正吗

model.add(Dense(12, activation='linear'))
这里的12表示输出维度。在您的例子中,12是第二层的输入尺寸。Keras处理中间层的输入维度,您不必明确地提及它

你的代码应该是

model.add(Dense(1, activation='linear'))

谢谢,但我将其修改为(稠密(1,activation='linear')),程序可以运行,但当打印拟合过程时,“精度”始终为零,因此回归的精度没有多大意义。MSE或MAE是更好的指标。