百度360必应搜狗淘宝本站头条
当前位置:网站首页 > SEO教程 > 正文

【Python深度学习系列】网格搜索神经网络超参数:优化器

gaoyangw 2024-11-01 12:16 105 浏览 0 评论

这是我的第286篇原创文章。

一、引言

在深度学习中,超参数是指在训练模型时需要手动设置的参数,它们通常不能通过训练数据自动学习得到。超参数的选择对于模型的性能至关重要,因此在进行深度学习实验时,超参数调优通常是一个重要的步骤。常见的超参数包括:

  • model.add()
    • neurons(隐含层神经元数量)
    • init_mode(初始权重方法)
    • activation(激活函数)
    • dropout(丢弃率)
  • model.compile()
    • loss(损失函数)
    • optimizer(优化器)
      • learning rate(学习率)
      • momentum(动量)
      • weight decay(权重衰减系数)
  • model.fit()
    • batch size(批量大小)
    • epochs(迭代次数)

一般来说,可以通过手动调优、网格搜索(Grid Search)、随机搜索(Random Search)、自动调参算法方式进行超参数调优。损失函数是用于衡量模型所作出的预测离真实值(Ground Truth)之间的偏离程度。通常,我们都会用一种优化算法(优化器)最小化目标函数,比如常用的算法便是“梯度下降法”(Gradient Descent)。本文采用网格搜索选择优化器。

二、实现过程

2.1 准备数据

dataset:

dataset = pd.read_csv("data.csv", header=None)
dataset = pd.DataFrame(dataset)
print(dataset)

2.2 数据划分

# 切分数据为输入 X 和输出 Y
X = dataset.iloc[:,0:8]
Y = dataset.iloc[:,8]
# 为了复现,设置随机种子
seed = 7
np.random.seed(seed)
random.set_seed(seed)

2.3 创建模型

需要定义个网格的架构函数create_model

def create_model():
    # 创建模型
    model = Sequential()
    model.add(Dense(50, input_shape=(8, ), kernel_initializer='uniform', activation='relu'))
    model.add(Dropout(0.05))
    model.add(Dense(1, kernel_initializer='uniform', activation='sigmoid'))

    # 编译模型
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model
model = KerasClassifier(model=create_model, epochs=100, batch_size=80, verbose=0)

这里使用了scikeras库的KerasClassifier类来定义一个分类器,这里由于KerasClassifier有定义优化器的参数optimizer,不需要自定义一个表示丢优化器的参数。

2.4 定义网格搜索参数

param_grid = {'optimizer': ['SGD', 'RMSprop', 'Adagrad', 'Adadelta', 'Adam', 'Adamax', 'Nadam']}

param_grid是一个字典,key是超参数名称,这里的名称必须要在KerasClassifier这个对象里面存在而且参数名要一致。value是key可取的值,也就是要尝试的方案。

2.5 进行参数搜索

from sklearn.model_selection import GridSearchCV
grid = GridSearchCV(estimator=model,  param_grid=param_grid)
grid_result = grid.fit(X, Y)

使用sklearn里面的GridSearchCV类进行参数搜索,传入模型和网格参数。

2.6 总结搜索结果

print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))
means = grid_result.cv_results_['mean_test_score']
stds = grid_result.cv_results_['std_test_score']
params = grid_result.cv_results_['params']
for mean, stdev, param in zip(means, stds, params):
    print("%f (%f) with: %r" % (mean, stdev, param))

结果:

经过网格搜索,优化器的最优选择是Nadm。

作者简介: 读研期间发表6篇SCI数据算法相关论文,目前在某研究院从事数据算法相关研究工作,结合自身科研实践经历持续分享关于Python、数据分析、特征工程、机器学习、深度学习、人工智能系列基础知识与案例。关注gzh:数据杂坛,获取数据和源码学习更多内容。

原文链接:
【Python深度学习系列】网格搜索神经网络超参数:优化器(案例+源码)

相关推荐

Chrome43正式版发布 新增海量应用扩展

2015-07-0809:26:10作者:刘菲菲谷歌Chrome浏览器一向被大家称为“版本帝”,原因就是更新频率相当高。最近,Chrome又发布了新版,版本号为v43.0.2357.132。本次更...

软网推荐:快速下载需要的谷歌浏览器扩展

谷歌浏览器现在已经不是一个单纯的网页浏览器,而更加像是一个管理操作平台,因为它的很多功能都是通过功能扩展来实现的。但是通常我们要想访问谷歌的扩展商店非常的麻烦,所以就需要寻求其他的解决方法。第三方扩展...

谷歌预告3项Chrome浏览器改进,提高管理标签页效率

IT之家9月11日消息,谷歌公司昨日(9月10日)发布新闻稿,宣布为iOS和安卓版Chrome浏览器引入3项改进,从而帮助用户提高管理标签页效率。1.在iOS上体验标签页...

谷歌发布Chrome浏览器更新,修复密码消失问题:持续18个小时

IT之家7月27日消息,谷歌发布Chrome浏览器更新,修复了存在于密码管理器中的错误,该错误导致Chrome用户密码消失18个小时。Chrome用户反馈更新到版本127.0....

谷歌浏览器Chrome 38.0.2125.101稳定版下载

IT之家(www.ithome.com):谷歌浏览器Chrome38.0.2125.101稳定版下载今天,谷歌浏览器团队带来最新版Chrome稳定版更新。具体版本号为38.0.2125.101,该版...

谷歌浏览器8年后首换新LOGO,变了又好像没变

近日,ChromeCanary版浏览器(开发者专用的每日构建版)在新版中首次更新了浏览器图标,意味着这个新的图标很快将开始出现在各位用户的设备上了。...

谷歌浏览器,居然被山寨了(谷歌浏览器可靠吗)

大家看看下面两张Logo,光看图标你能分辨出来哪个是假的Chrome,哪个是真的吗?...

谷歌浏览器Chrome 45.0.2454.93稳定版下载

IT之家讯谷歌Chrome浏览器更新至45.0.2454.93稳定版。谷歌官方并没有给出更新日志,因此本次更新重点在于小范围问题修复。Chrome浏览器用户可下载并且更新至该版本。Chrome45...

微软推出的新版Edge浏览器,让我抛弃用了5年的谷歌

随着新版Edge浏览器的发布,这个微软的亲儿子以崭新的面貌和大家见面啦。这次更新可谓是好评如潮,相比浏览器届的老大哥——谷歌浏览器,它少了些臃肿,但又多了一些独特的功能。今天,我就为大家介绍8...

谷歌Chrome浏览器安卓版将支持Material You设计版地址栏

IT之家1月26日消息,Google的MaterialYou主题在Android上提供了一致的配色方案。谷歌现在正在为Android上的谷歌Chrome浏览器的地址栏提供...

你想要的功能,Edge浏览器都有(你想要的功能,edge浏览器都有哪些)

2020年之前,如果有求推荐一款好用的浏览器,那谷歌Chrome浏览器一定是最好的选择,现在却不一定了。今年一月份,微软正式推出了基于谷歌Chromium内核的MicrosoftEdge浏览器,它继...

谷歌浏览器Chrome更新:图标再变动,版号来到100

经过十多年的更新,谷歌浏览器GoogleChrome终于迎来了“100”的版本号,并在近日于Windows、Mac、iOS和安卓等多个平台正式上线。尽管是很有象征性意义的版本号更新,但它这一...

不再桌面端独占,谷歌Chrome浏览器安卓版将迎来任务管理器

IT之家10月4日消息,谷歌Chrome浏览器即将为Android用户带来一项备受期待的功能——任务管理器。虽然Chrome浏览器在桌面端已经具备了任务管理器的功能,但移动端一...

安卓版谷歌Chrome浏览器测试新面板,方便用户管理跨设备标签页

IT之家8月30日消息,科技媒体mspoweruser昨日(8月29日)发布博文,报道称Canary频道最新安卓版谷歌Chrome浏览器正测试新特性,为跨设备标签页添加了一个...

谷歌浏览器,网站页面禁用右键功能,如何解决?

进入浏览器开发者工具点击谷歌浏览器右上角三个点,选择【更多工具】——【开发者工具】找到“代码段”【源代码/来源】——【>>】——【代码段】...

取消回复欢迎 发表评论: