‹拆书分享篇›深度学习框架PyTorch入门与实践

Posted 彩视家园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了‹拆书分享篇›深度学习框架PyTorch入门与实践相关的知识,希望对你有一定的参考价值。

<<深度学习框架PyTorch入门与实践>>读书笔记



《深度学习框架PyTorch入门与实践》读后感


 读完<<深度学习框架PyTorch入门与实践>>,我对PyTorch有了更多更全面的了解,首先介绍下常见的深度学习框架。

 常见的深度学习框架有TensorFlowCaffeTheanoKerasMXNetPyTorch等。这些深度学习框架被应用于计算机视觉、语音识别、自然语言处理与生物信息学等领域,并获取了极好的效果。

 通过对本书的阅读结合我的使用经验简单介绍下各个框架的优缺点。Theano调试难、构建图慢,目前已停止开发,不建议作为研究工具继续学习;TensorFlow社区强大,适合生产环境,但上手困难、不易学习,且频繁变动的接口导致新旧版本代码调试总是会出bugKeras入门最简单,但其过度封装导致不够灵活,使用受限;Caffe/Caffe2缺少灵活性,文档不够完善,安装麻烦,但简洁快速,适合生产环境;MXNet文档略混乱,但分布式性能强大,语言支持最多,适合AWS云平台使用;CNTK社区不够活跃,但是性能突出,擅长语音方面的相关研究。PyTorch高效快速、灵活易学习、调试方便、很适合研究使用,但其分布式并行支持有限,且难以部署到生产环境。

 下来介绍下PyTorch中重要的数据结构以及构建神经网络训练常用的操作。

 TensorPyTorch中重要的数据结构,只要使用PyTorch,就会用到Tensor,可认为是高维数组,与numpyndarrays类似,支持很多操作,包括数学运算、线性代数、选择、切片等,与numpy对象共享内存,它们之间的转换很快,几乎不会消耗资源,且可通过.cuda()方法很方便地转为GPUTensor,从而使用GPU加速。

 神经网络训练主要分为定义网络、计算输出、计算损失、反向传播求梯度、优化器优化、模型保存这几个步骤。接下来分别针对这几个模块介绍PyTorch中相应的用法。

 Torch.nnPyTorch专门为神经网络设计的模块化接口。nn构建于Autograd之上,可用来定义和运行神经网络。nn.Modulenn中最重要的类,包含网络各层定义及forward方法,调用forward(input)方法,可返回前向传播的结果。需要注意的是,定义网络时,需要继承nn.Module,并实现它的forward方法,把网络中具有可学习的参数的层数放在构造函数__init__中。若某一层(如ReLU)不具有可学习的参数,则既可以放在构造函数中,也可以不放。nn.functional也是nn中很常用的模块,其与nn.Module主要区别在于,nn.Module实现的layers是一个特殊的类,都是由class Layer(nn.Module)定义,会自动提取可学习的参数;而nn.functional中的函数更像是纯函数,由def function(input)定义。如果模型有可学习的参数,最好用nn.Module,否则既可以使用nn.functional,也可以使用nn.Module。但建议dropout操作还使用nn.Dropout而不是nn.functional.dropout,因为dropout在训练和测试两个阶段的行为有所差别,使用nn.Module对象能够通过model.eval操作加以区分。

 nn实现了神经网络中大多数的损失函数,如nn.MSELoss用来计算均方误差,nn.CrossEntropyLoss用来计算交叉熵损失等,也可以很方便灵活的自定义损失函数。调用.backward()时,PyTorch计算图会动态生成并自动微分,也会自动计算图中参数的导数。再调用.backward()前,要调用.zero_grad()对网络中所有可学习参数的梯度清零。

 torch.optim中实现了深度学习中绝大多数的优化方法,例如RMSPropAdamSGD等,其设计灵活,能够很方便地扩展成自定义的优化方法。参数优化中可对不同子网络设置不同的学习率,在finetune中经常用到。调整学习率主要有两种做法。一种是修改optimizer.param_groups中对应的学习率,另一种是新建优化器。但新建优化器会重新初始化动量等初始状态信息,对使用动量的优化器来说,可能会造成损失函数在收敛过程中出现震荡。

 通过torch.save(obj, file_name)等方法保存任意可序列化的对象,然后通过torch.load(file_name)方法加载保存的数据。对ModuleOptimizer对象,建议保存对应的state_dict


‹拆书分享篇›深度学习框架PyTorch入门与实践



以上是关于‹拆书分享篇›深度学习框架PyTorch入门与实践的主要内容,如果未能解决你的问题,请参考以下文章

赠书福利!《深度学习框架PyTorch:入门与实践》

今日好书丨《深度学习框架PyTorch:入门与实践》

荐书丨深度学习框架PyTorch:入门与实践

书籍深度学习框架:PyTorch入门与实践(附代码)

深度学习框架pytorch入门与实践:torch的基本使用

限量闪购《深度学习框架:PyTorch入门与实践》仅售40元,只有2本,先到先得。