Python 当输出变量连续时,我们如何调整神经网络的超参数?
我一直在寻找使用Python中的TensorFlow调优ANN模型超参数的资源,到目前为止,我遇到的每个解决方案/讨论都涉及分类输出数据集的分类问题,并使用简单的逻辑回归模型或通过sklearn进行的GridSearch(到目前为止,仅涉及二进制输出的那些).Python 当输出变量连续时,我们如何调整神经网络的超参数?,python,tensorflow,neural-network,grid-search,hyperparameters,Python,Tensorflow,Neural Network,Grid Search,Hyperparameters,我一直在寻找使用Python中的TensorFlow调优ANN模型超参数的资源,到目前为止,我遇到的每个解决方案/讨论都涉及分类输出数据集的分类问题,并使用简单的逻辑回归模型或通过sklearn进行的GridSearch(到目前为止,仅涉及二进制输出的那些). 然而,我的问题有一个连续的输出,我试图实现GridSearch,但我遇到了一个错误: “ValueError:不支持连续” 我不确定当输出变量连续时GridSearch是否工作,但即使它不工作,也必须有一些其他函数可以帮助我优化参数
然而,我的问题有一个连续的输出,我试图实现GridSearch,但我遇到了一个错误:
“ValueError:不支持连续”
来自keras.wrappers.scikit\u了解导入KerasClassifier
从sklearn.model_选择导入GridSearchCV
从keras.models导入顺序
从keras.layers导入稠密
def构建_分类器(优化器):
分类器=顺序()
add(稠密(10,input\u dim=5,activation='relu',kernel\u initializer=“uniform”))
add(稠密(5,激活='relu',内核\初始化器='uniform'))
add(稠密(1,激活='linear',内核\初始值设定项='uniform'))
compile(优化器=优化器,损耗='mse',度量=['accurity'])
返回分类器
分类器=KerasClassifier(build\u fn=build\u分类器)
参数={'batch_size':[25,32],
“时代”:[100500],
'优化器':['adam','rmsprop']}
网格搜索=网格搜索cv(估计器=分类器,参数网格=参数,评分=准确度,cv=3)
网格搜索=网格搜索.fit(X\u列,y\u列)
最佳参数=网格搜索。最佳参数_
最佳精确度=网格搜索。最佳分数_
首先,在函数中定义您的模型(您也可以定义为带有keras子类API的类),然后,由于您的输出是一个连续值,因此调用keras scikit learn wrapperKerasRegressionor
以使用GridSearchCV或RandomizedSearchCV
阅读以更好地理解分类和回归问题之间的差异
def build_model(n_neurons=30, learning_rate=1e-3, input_shape=[8]):
model = keras.models.Sequential()
model.add(keras.layers.InputLayer(input_shape))
model.add(keras.layers.Dense(n_neurons, activation="relu"))
model.add(keras.layers.Dense(1))
optimizer = keras.optimizers.SGD(lr=learning_rate)
model.compile(loss="mse", optimizer=optimizer)
return model
keras_reg = keras.wrappers.scikit_learn.KerasRegressor(build_model)
params_distrib = { # params you want try with }
rnd_search_cv = RandomizedSearchCV(keras_reg, params_distrib, n_iter=5, cv=3)
rnd_search_cv.fit(x_train, y_train, epochs=50,
validation_data=(x_valid, y_valid))
请共享所有相关代码/数据。见:,@AMC我这样做了。很抱歉给您带来不便。您正在使用包装器KerasClassifier,您应该改用KerasRegressionor。@非常感谢您。我将相应地更改代码。