机器学习利用第三方库自动寻找最优参数

作者: samboy | 来源:发表于2018-04-23 00:02 被阅读9次

  目前的实验中我在用深度学习构建神经网络,开始的时候我一般是随机手调几个数大致看下效果,有时候如果需要知道网络效果随参数变化的趋势,就用for循环自动运行许多实验,然后我来收结果并用matlab批量分析。今天同事给我推荐了两个github上的库,利用这两个库可以实现对模型多次的运行并评价系统的运行结果。这个过程中不涉及对系统的优化,只是通过大量的自动运行的实验通过统计学的角度来比较什么样的参数相对较好。

  这两个库分别为SpearmintBayesianOptimization.详细的介绍、安装方法和例子在各自的网站里都有写,我就不赘述了。目前我正在尝试使用Spearmint方法,所以先把安装过程中的一点小提示写在这里。

  首先,这个库是在python 2.7环境的,如果你使用python 3 的话会遇到一些问题,所以建议使用2.7.

  其次,新版的scipy中weave模块已经独立出来,所以原来的文件中使用的scipy.weave as weave语句就没法使用了,会报错。有人建议如下修改

try:
    import scipy.weave as weave
except ImportError:
    import weave

  可是我的电脑上即使更新scipy后也无法导入scipy.weave或者weave,所以只好使用下边这种方法,也就是完全不使用weave库。因为weave只使用了一次,所以只要在/spearmint/kernels/kernel_utils.py文件中把使用weave模块的部分注释掉即可,把第226行附近的代码调整为如下所示。原来使用weave模块用c语言计算的部分被用python语言的替代了,计算速度会下降,不过好歹可以用了。此外记得删除kernel_utils.py和/spearmint/models/gp_classifier.py文件中weave模块的import。

    #try:
    #    scipy.weave.inline(code, ['x1','x2','gX','ls','M','N','D'], \
    #                       type_converters=scipy.weave.converters.blitz, \
    #                       compiler='gcc')
    #except:
    # The C code weave above is 10x faster than this:
    for i in xrange(0,x1.shape[0]):
        gX[i,:,:] = 2*(x1[i,:] - x2[:,:])*(1/ls)
    return gX

  这样调整好之后,可以用example文件夹中的例子先进性一下试验和学习。然后根据介绍相应的构建适合自己项目的主程序以及json文件。

  关于介绍中说的第三步step 3: Running spearmint中的代码

python main.py \</path/to/experiment/directory\>

  这里的main.py指的是spearmint的主程序,在spearmint文件夹下,所以运行这个语句之前需要先转到spearmint文件夹,否则会提示找不到相应的文件。

参考:
1.https://github.com/HIPS/Spearmint/issues/99
2.https://github.com/HIPS/Spearmint/pull/107/commits/2f29459ade04e399e55fa9f4334265de60a9b4cd


本篇文章原发表于我的个人博客: qingnansun.com

相关文章

  • 机器学习利用第三方库自动寻找最优参数

      目前的实验中我在用深度学习构建神经网络,开始的时候我一般是随机手调几个数大致看下效果,有时候如果需要知道网络效...

  • 机器学习入门的一些感悟(持续更新)

    通过tick级别数据寻找有效的交易逻辑、策略、参数需要大量的建模、验证、反馈、调试、回测工作。机器学习可以完成自动...

  • 笔记-梯度下降法

    梯度下降法:(已最快的速度找到最优解的方法) 自己的理解:有监督的机器学习,利用给定的一批X和Y取解参数,即模型。...

  • cocoapods学习

    cocoapods学习 为什么使用cocoapods? pods库依赖的其他动态,静态库全自动导入 编译参数自动设...

  • 无约束条件的参数优化(1)--梯度下降算法

    为什么要学习最优化理论? 因为对于ML模型训练,最终都可以归结为最优化问题,寻找最优参数,是模型的loss最小。 ...

  • Python基础学习12

    python机器学习:机器学习中,经常会将多个功能的库一起使用,以便优化参数,获得更好的学习效果;numpy库 数...

  • 深度学习入门--参数更新的优化

    神经网络学习的目的是找到使损失函数的值尽可能小的参数。这是寻找最优参数的问题,解决这个问题的过程称为最优化。而在深...

  • 寻找最优超参数

    使用机器学习算法时,总有一些难搞的超参数。例如权重衰减大小,高斯核宽度等等。算法不会设置这些参数,而是需要你去设置...

  • nodejs搭建简易脚手架遇到得坑

    第三方库 commander.js,可以自动的解析命令和参数,用于处理用户输入的命令。 download-git-...

  • 浅读机器学习有感(一)

    一、机器学习简介和概述 1.1什么是机器学习? 机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数...

网友评论

    本文标题:机器学习利用第三方库自动寻找最优参数

    本文链接:https://www.haomeiwen.com/subject/icohlftx.html