import numpy as np
x_train,y_train = np.load('datsx.npy'),np.load('datsy.npy')
wb = None
from keras.models import Sequential
from keras.layers import Dense
# Среднее значение
mean = x_train.mean(axis=0)
# Стандартное отклонение
std = x_train.std(axis=0)
x_train -= mean
x_train /= std
model = Sequential()
model.add(Dense(128, activation='relu', input_shape=(x_train.shape[1],)))#shape 1
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse', metrics=['mae'])
model.fit(x_train, y_train, epochs=100, batch_size=1, verbose=2)
检查目标时出错:预期 dense_2 的形状为 (1,) 但得到的数组的形状为 (3,)
如何修复这里的错误?
样本数据:
x_train = array(
[[1.3590000e+03, 1.3180000e+03, 1.7082020e+07, 1.2000000e+03],
[4.0380000e+03, 4.6170000e+03, 1.7082020e+07, 1.2000000e+03], [2.6300000e+03,
3.9840000e+03, 1.7082020e+07, 1.0540000e+03], [3.4460000e+03, 4.5310000e+03,
1.8102014e+07, 2.1610000e+03], [9.1500000e+02, 4.5310000e+03, 1.8102014e+07,
2.1610000e+03], [3.4460000e+03, 4.4570000e+03, 1.8102014e+07, 2.1610000e+03]])
y_train = array(
[[ 1., 2., 2.], [ 1., 2., 2.], [ 1., 2., 2.],
[16., 2., 1.], [16., 4., 1.], [16., 0., 1.]])
您已经构建了一个具有一个输出列的 ANN
Dense(1),并且为了训练您将一个y_train具有三列的张量传递给它。因此错误expected dense_2 to have shape (1,) but got array with shape (3,)。如果您期望输出中有三列,则必须相应地配置 ANN 的最后 / 输出层:
例子: