深度学习炼丹自动化训练

引子

深度学习的研究,调参是躲不开的话题,动辄几天甚至几周的训练暂且不表,很多时候,我们遇到的模型跑完一次训练只需要十几分钟,刚开始“炼丹”可能会热血冲头,非要等到结果出来,一看不好就立刻调参再炼一轮。但是这样做首先是很没效率的,其次也很不系统,容易让代码越改越乱,实验结果也越来越难以回顾(别问我怎么知道的。

自动训练脚本,就是设计好之后自动枚举各个参数进行训练并且保存实验结果的代码。这样的技术其实很容易实现,不过笔者这里更想分享自动化训练意识。

自动化训练的好处。一来,程序员的浪漫不就是让代码简化我们的工作,避免重复劳动吗!二来,这样的方式会迫使你提前规划好所有超参数的位置,以及可能的值,从而加深你对网络架构的理解。三来,自动化训练更容易估计时间,且不必每次训练结束后手动调参,效率更高。四来,自动化训练可以通过代码进行简单的数据分析和可视化,实验结果更直观。

本文真的不是什么硬核技术贴,更多是为了分享这样的训练方式。因而只简单介绍两种方式,以及实现上的核心部分(这些方式其实内部也有些小坑,笔者改进后会更新的。至于为什么是“其一”呢?我相信肯定有更多的更好的自动化训练技术的,可以后来填坑,小伙伴们如果愿意分享也可以在评论区留言。

通过python代码实现

  1. 将模型封装到一个函数中,每次训练前通过参数列表传入超参数的值,返回特定的网络

    def getModel(hyperparameters):
    	"""参数是超参数列表,返回模型"""
        # 生成一个网络
        return model
    
  2. 在主程序中循环进行训练,每次训练前调用getModel获取新的模型

    if __name__ == "__main__":
    	for hyperparameter1 in [1, 0.1, 0.01]:
            model = getModel()
            model.train()
    
  3. 可以在模型训练结束时保存模型参数,方便复现。这时超参数的取值正好可以作为命名的一部分用来区分。

'model_{}_{}.h5'.format(hyperparameter1, hyperparameter2)
  1. 收集到的结果也可以分类存储到不同的列表中,在全部训练结束后进行集中打印。

通过.sh脚本实现

.sh脚本是linux系统的脚本,相信很多小伙伴都是在实验室的服务器上进行实验的,因而介绍.sh脚本,实际上windows的脚本也是一样的做法。

这种方法的思路是通过shell脚本执行预先写进去的python命令行指令,实现这种方式首先需要了解命令行向python程序传参的方式,以及shell的简单用法。

  1. python传参,直接看实例
    #/usr/bin/python
    import sys
     
    print sys.argv[0]
    print sys.argv[1]
    print sys.argv[2]
    print sys.argv[3]
    

执行指令:python argv.py 1 2 3

输出:

argv.py # 注意!argv[0]固定是python文件的名字
1
2
3
  1. shell可以只用最简单的用法,直接在其中写入待执行的shell指令。例如:新建一个文件auto.sh,打开auto.sh在其中输入:
python train.py

然后用chmod赋予文件可执行的权限,具体:

chmod a+x auto.sh

最后执行auto.sh

./auto.sh

auto.sh执行时会按顺序执行其中写好的指令。

  1. 看到这里相信大家已经明白原理了。命令行指令可以传参给python程序 and shell脚本可以顺序执行python命令行指令。结论:在shell脚本中写入若干行传参数给python程序的命令,用来修改网络结构,shell脚本顺序执行这些指令,实现自动化训练。
  2. shell指令“>”可以将本要输出到终端的字符重定向到其他位置,比如一个文件。实例:
echo hello > test

指令将生成一个名为test的文件(如果没有的话),本该直接回显的hello将被写入这个文件。这样就可以在实验跑完之后通过查看test中的内容检查训练过程。

本文转自这里

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PaddlePaddle是一个开源的深度学习框架,它提供了丰富的API和工具,可以帮助开发者快速构建和训练深度学习模型。如果想要从入门到炼丹,可以按照以下步骤进行: 1. 学习Python编程语言和基本的机器学习知识,了解深度学习的基本概念和原理。 2. 安装PaddlePaddle并学习如何使用它的API和工具,例如PaddleHub、PaddleSlim等。 3. 学习如何使用PaddlePaddle构建和训练深度学习模型,例如卷积神经网络、循环神经网络等。 4. 掌握如何使用PaddlePaddle进行模型优化和调试,例如模型压缩、量化等。 5. 学习如何使用PaddlePaddle进行模型部署和应用开发,例如使用Paddle Serving进行模型部署、使用Paddle Inference进行模型推理等。 总之,要想从入门到炼丹,需要不断学习和实践,掌握PaddlePaddle的各种功能和应用场景,才能成为一名优秀的深度学习工程师。 ### 回答2: PaddlePaddle是一个由百度公司开发的深度学习框架,使用它可以进行各种类型的机器学习和深度学习任务。下面介绍一些入门到炼丹的步骤。 1. 安装PaddlePaddle:第一步是安装PaddlePaddle,可以使用pip进行安装。安装完成后,可以使用import paddle进行导入。 2. 训练一个简单的模型:学习PaddlePaddle的基本操作步骤,最好的方式是从简单的模型开始。可以从官方文档中找到示例代码,例如使用PaddlePaddle进行图像分类或文本分类。 3. 提高模型的性能:针对真实的数据集,需要更多的技巧来提高模型的性能。可以尝试使用预训练模型或者进行数据增强等操作。 4. 网络架构设计:网络架构设计也是深度学习的一个重要环节。可以从现有的模型中获取灵感,或者通过尝试和训练不同的架构来提高性能。 5. 训练模型和优化:通过不断的训练和优化,可以使模型更好的适应数据集。可以使用不同的学习率,正则化方法和优化算法等进行优化。 6. 使用PaddlePaddle提供的应用:PaddlePaddle被广泛用于真实世界的应用,例如物体检测,人脸识别和自然语言处理等领域。可以使用PaddlePaddle提供的接口或者自己训练模型来解决实际问题。 7. 炼丹:当对机器学习和深度学习有了更深的理解之后,可以尝试自己设计和训练新的模型,炼丹就像一场冒险,挑战自己的创造力和技能。 总的来说,PaddlePaddle提供了非常多的资源和工具来帮助我们入门到炼丹。只有真正的动手尝试,才能够更好的理解深度学习和机器学习的本质。 ### 回答3: PaddlePaddle是一个深度学习平台,它使用Python语言编写并开源。它提供了一系列丰富的深度学习模型和算法,支持用户在各种架构和操作系统上快速训练和部署模型,同时还提供了一整套深度学习工具和可视化界面,帮助用户轻松地完成深度学习的各个环节。 对于入门用户来说,建议从PaddlePaddle的官网入手,官网提供了详细的入门教程和文档,从安装到训练,从模型选择到应用场景,都有相应的教程可供学习和参考。初学者可以从PaddlePaddle的基本概念、架构、数据结构等入手,了解深度学习的理论知识和PaddlePaddle工作原理,接着可以尝试用PaddlePaddle搭建自己的模型,并在实验数据上进行训练、调整参数、评估模型性能等,逐步提高自己的深度学习技能。 对于已经掌握基本知识的用户,可以继续深化研究PaddlePaddle的高级特性和应用场景。例如,可以掌握PaddlePaddle的自然语言处理和图像处理等领域的深度学习应用,学习如何为不同的任务选择合适的算法和模型,并针对实际问题进行模型调整和优化。 最后,对于希望进一步探索深度学习技术的用户,可以尝试进行炼丹实验,即在PaddlePaddle平台上实现深度学习的前沿研究,如GAN、CapsNet等模型的实现和应用。通过不断地深入研究和实践,不仅可以提高自己的技术水平,也有机会为PaddlePaddle平台的发展做出贡献,推动深度学习技术向更高层次的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值