Technic

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

        目前的实验中我在用深度学习构建神经网络,开始的时候我一般是随机手调几个数大致看下效果,有时候如果需要知道网络效果随参数变化的趋势,就用for循环自动运行许多实验,然后我来收结果并用matlab批量分析。今天同事给我推荐了两个github上的库,利用这两个库可以实现对模型多次的运行并评价系统的运行结果。这个过程中不涉及对系统的优化,只是通过大量的自动运行的实验通过统计学的角度来比较什么样的参数相对较好。         这两个库分别为Spearmint 和 BayesianOptimization.详细的介绍、安装方法和例子在各自的网站里都有写,我就不赘述了。目前我正在尝试使用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’) […]

Continue Reading