python ValueError:输入数组的样本数应与目标数组的样本数相同。找到1个输入样本和109个目标样本

2024-10-01 15:34:10 发布

您现在位置:Python中文网/ 问答频道 /正文

编写程序,在{}中使用{}对一系列数据进行预测(回归),输入层的训练数据集为109个数据集和5个参数(109*5,5个参数为太阳强度、环境温度等),需要预测的数量为输出层包括2个参数(热效率和传热效率),计划如下:

def model():
    model = Sequential()
    model.add(Conv2D(32,kernel_size=(3,3),padding='same',activation='relu',input_shape=(109,5,1)))
    model.add(MaxPooling2D(pool_size=(2,2)))

    model.add(Conv2D(64,kernel_size=(3,3),padding='same',activation='relu'))
    model.add(MaxPooling2D(pool_size=(2,2)))

    model.add(Flatten())

    model.add(Dense(32))
    model.add(Activation('relu'))

    model.add(Dense(2))
    model.add(Activation('linear'))

    model.compile(loss = 'mean_squared_error',
              optimizer = 'adam',
              metrics = ['mse','mae'])

    return model

if __name__ == '__main__':
    ...
    ...
    x1 = sc_cnn_tube_par_X_train
    sc_cnn_tube_par_X_train_4D = x1.reshape([1,x1.shape[0], x1.shape[1],1])
    y1 = sc_cnn_tube_eff_Y_train
    y_res = np.concatenate((y1,sc_cnn_tube_h_Y_train),axis=1)
    print("sc_cnn_tube_par_X_train_4D.shape")
    print(sc_cnn_tube_par_X_train_4D.shape)
    print("y_res.shape")
    print(y_res.shape)
    model = model()
    model.fit(sc_cnn_tube_par_X_train_4D,y_res,epochs=5000,verbose=1)

在训练数据集中的sc_cnn_tube_par_X_train_4D,我把它设置为1*109*5*1,y_yes是训练过程中需要预测的两个参数,它是109*2,第一列是热效率,第二列是传热系数,所有数据都已标准化

运行时:

    sc_cnn_tube_par_X_train_4D.shape
    (1, 109, 5, 1)
    y_res.shape
    (109, 2)

但这是一个错误:

    Traceback (most recent call last):
      File "C:/Users/win/PycharmProjects/allGlassStraightThroughTube/cnn2DTest.py", line 280, in <module>
        model.fit(sc_cnn_tube_par_X_train_4D,y_res,epochs=5000,verbose=1)
      ...
      ValueError: Input arrays should have the same number of samples as target arrays. Found 1 input samples and 109 target samples.

你能告诉我原因和如何改正吗 请帮我修改程序,因为我是使用keras的卷积神经网络的新生


Tags: 数据add参数sizemodeltrainrescnn

热门问题