我有一个包含2个输出变量和多个输入变量的数据,我使用神经网络制作了模型,但现在我想进行超参数调整。
为了进行调整,我使用了网格搜索,我编写了用于网格搜索的代码,但是尝试使用grid.fit(X_train,Y_train)时出现错误,错误为ValueError:检查模型目标时出错:您传递给模型的Numpy数组不是模型期望的大小。预计会看到2个数组,但获得了以下1个数组的列表:[array([[1.62970054,2.33817343], 然后我制作了2个不同的数组,然后将其作为grid.fit(X_train,[Y [0],Y [1])传递到代码中,因为有2个输出,现在它显示ValueError:找到了编号不一致的输入变量样本:[10000,2]。有什么办法可以纠正此代码,或者GridsearchCV不接受多个输出值?我使用keras功能性API制作了keras模型,然后通过kerasRegressor进行传递,以便可以实现GridsearchCV。我被困在应该是什么代码上,以便grid.fit()可以运行...或者是否可以通过其他方法来进行超参数调整
def create_model(activation='relu', dropout_rate=0.0, neurons=10, optimizer='Adam', weight_constraint=0):
main_input = Input(shape=(17,), name='main_input')
hidden = Dense(neurons, activation=activation, name='hidden', kernel_constraint=maxnorm(weight_constraint))(main_input)
hidden = Dropout(dropout_rate)(hidden)
out1 = Dense(1, activation='linear', name='out1')(hidden)
out2 = Dense(1, activation='linear',name='out2')(hidden)
model = Model(inputs=main_input, outputs=[out1,out2])
model.compile(optimizer = optimizer,loss={'out1':'mean_squared_error', 'out2':'mean_squared_error'})
return model
model = KerasRegressor(build_fn=create_model, batch_size=32, epochs=100)
activation = ['relu', 'tanh', 'sigmoid', 'linear']
dropout_rate = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
weight_constraint=[1, 2, 3, 4, 5]
neurons = [10, 30, 50, 70, 90]
optimizer = [ 'SGD', 'RMSprop', 'Adagrad', 'Adadelta', 'Adam']
epochs = [50, 100, 150, 200]
batch_size = [10, 20, 30, 40]
param_grid = dict(neurons=neurons, activation=activation, dropout_rate=dropout_rate, weight_constraint=weight_constraint, epochs=epochs, batch_size=batch_size, optimizer=optimizer)
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1, cv=5)
grid_result = grid.fit(X_train, Y_train)
上述代码的最后一行是grid_result = grid.fit(X_train,Y_train)为ValueError时的错误:检查模型目标时出错:传递给模型的Numpy数组列表的大小不是预期的模型。预计会看到2个数组,但获得了以下1个数组的列表:[array([[1.62970054,2.33817343], [3.44504814,6.05534019], [1.58155862,0.8296778], ..., [1.27446578,6.71978433], [7.99909866,17.82736535], [1.4 ... 当我制作2个输出的2个不同的数组,然后将最后一行重写为grid.fit(X_train,[Y [0],Y [1])时,错误是ValueError:找到样本数量不一致的输入变量:[10000, 2]
我的数据是10000个观测值,其中包含17个输入变量和2个输出变量。