我想用keras建立一个非线性回归模型来预测a+ve连续变量。 对于下面的模型,如何选择以下超参数?
代码
def dnn_reg():
model = Sequential()
#layer 1
model.add(Dense(40, input_dim=13, kernel_initializer='normal'))
model.add(Activation('tanh'))
model.add(Dropout(0.2))
#layer 2
model.add(Dense(30, kernel_initializer='normal'))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.4))
#layer 3
model.add(Dense(5, kernel_initializer='normal'))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.4))
model.add(Dense(1, kernel_initializer='normal'))
model.add(Activation('relu'))
# Compile model
model.compile(loss='mean_squared_error', optimizer='adam')
return model
我已经考虑过随机网格搜索,但是我想使用hyperopt,我相信它会更快。我最初使用https://github.com/maxpumperla/hyperas实现了优化。Hyperas不支持最新版本的keras。我怀疑keras的发展很快,维护人员很难使它兼容。所以我认为直接使用hyperopt是一个更好的选择。
注:我是新的贝叶斯优化超参数调整和超opt。
这也是另一种方法:
Source
我在治疗多动症方面很成功。以下是我学到的让它起作用的东西。
1)从终端(而不是从Ipython笔记本)将其作为python脚本运行 2) 确保代码中没有任何注释(Hyperas不喜欢注释!) 3) 将数据和模型封装到hyperas自述文件中描述的函数中。
下面是一个为我工作的Hyperas脚本的例子(按照上面的说明)。
它由不同的gc序列诱导,如果python先收集会话,程序将成功退出,如果python先收集swig内存(tf_session),程序将失败退出。
您可以通过以下方式强制python删除会话:
或者,如果使用keras,则无法获取会话实例,可以在代码末尾运行以下代码:
相关问题 更多 >
编程相关推荐