如何入门 PyTorch?

PyTorch 是学术界和工业界用来研究和开发深度学习模型的常用工具之一,自 2016 年 9 月 PyTorch 在 GitHub 上开放了 pytorch alpha-1 版本以来,至今已有整整 6 年时间。从一开始只有 PyTorch 的 Tutorial 至今,很多网站和博客都介绍过 PyTorch 的安装和使用方法。

最近,国内的人民邮电出版社推出了一本关于 PyTorch 的教材《PyTorch 深度学习实战》,作者是:Eli Stevens,Luca Antiga,Thomas Viehmann,译者是:牟大恩。本书适用于学校的学生和想了解 PyTorch 的公司开发人员,通过学习这本书,大家都能够掌握使用 PyTorch 开发深度学习模型。

PyTorch 深度学习实战

本书的章节分成三个部分:

  • 第一部分:PyTorch 核心,介绍了深度学习的基础概念和一些简单的神经网络,张量等知识;
  • 第二部分:使用现实数据来学习,包括肺癌的早期检测,训练分类器,增强学习,语义分割等知识;
  • 第三部分:模型的部署,使用 Flask 服务来部署模型,导出模型等知识。

通常情况下,很多 Tutorial 和网络上的博客只会介绍前两部分,毕竟学会了前两部分就可以正常的开发模型,清洗数据。在学术界的绝大部分工作一般也只需要掌握前两部分,在工业界的一些 AI Labs 前两部分也能够满足绝大部分的需求。但是对于业务部门而言,只有前两部分的知识可能就不太够了,还需要有在线上部署模型,提供模型使用的能力。

在移动设备被大家大量使用的今天,很多情况下需要将模型部署在移动设备上,那么仅仅学会离线训练模型,进行数据的预测是远远不够的。有的情况下需要进行必要的模型压缩。除了 Python 之外,可能还需要掌握一些 C++ 的使用方法,同时掌握多个技能,才能够在工业界的业务部门完成各种各样的工作。

除了 Linux 和 macOS 之外,PyTorch 在 2018 年开始逐渐支持 Windows 系统。对于学生党而言,如果只有 Windows 系统,也能够基于现有的电脑进行深度学习的模型开发。

本书会教会读者如何使用 PyTorch 创建神经网络和深度学习系统,它帮助读者快速从零开始构建一个真实示例:肿瘤图像分类器。在构建模型过程中,它涵盖了整个深度学习管道的关键实践,包括 PyTorch 张量 API,用 Python 加载数据,监控训练以及将结果进行可视化展示。

本书主要内容会包括以下几个部分:

  • 训练深层神经网络;
  • 实现模块和损失函数;
  • 使用 PyTorch Hub 预先训练的模型;
  • 探索在 Jupyter Notebooks 中编写示例代码。

本书适用于对深度学习感兴趣的 Python 程序员,了解深度学习的基础知识对阅读本书有一定的帮助,但读者无须具有使用 PyTorch 或其他深度学习框架的经验。本书也有配套的 Python 源代码,方便读者进行下载和学习。

随笔(十四)— 程序员的软技能

程序员是当今社会中诸多职业的一种,也是优秀的计算机等理工专业毕业生所追求的职业之一。在社会大众的认知里面,程序员就是像电影里面的黑客一样,在一个暗无天日的小空间里,面对 Linux 系统编写各种酷炫的程序,最终解决了某个技术问题或者搭建了某个网站。

Technische Hochschule Aachen Rechenzentrum

从程序员的发展历程来看,各大互联网公司都会根据自身的情况,制定各种各样的级别体系,然后再进行职级的横向对比。每一个职级的程序员都有着自己的发展目标和成长路径,其奋斗目标显得相对清晰明确。按照别人制定好的计划或者路径来走或许能够走到某个位置,但总感觉缺少了一点个性化。程序员在大公司绝不仅仅是写代码而已,日常与产品经理的沟通,与其他公司的程序员沟通都是日常工作的一部分。写代码所占据的工作量其实只是一部分而已,绝对不会是全部的工作。

晋升通道

刚工作的时候接触到一本书《软技能:代码之外的生存指南》,作者自己就是一个优秀的程序员。然后结合自身的发展情况,个人的成长履历以及行业的发展,撰写了一本关于程序员软技能的书籍。近两年,这本书有了第二版,也是对第一版有了很大的改进和补充。

软技能第二版

在书中,作者从一开始就提出了一个观点,“经营自己的职业生涯就是经营一家企业”。每一个程序员在刚开始工作的时候,就要树立一种为自己工作的理念。从一个打工者的心态转化成经营一个企业,所提供的服务就是“软件开发”,“数据分析”等工作内容。既然是经营一个企业,那么就必须要有营销的意识。进行必要的自我营销也是提升个人竞争力,个人魅力,甚至提升薪水的一种方法。

从作者的讲解中可以看出,自我营销的方式有很多种,常见的包括但不限于:

  • 博客:搭建属于自己的博客;
  • 视频:无论是 YouTube 长视频还是抖音快手的短视频均可;
  • GitHub:程序员进行自我宣传的最佳平台;
  • 书籍:撰写书籍有助于在大众面前提升曝光;
  • 技术会议:能够参加各种各样的技术会议有助于提升个人影响力。

而在做自我营销的过程中,除了自身要有一定的知识储备对外宣传之外,更重要的则是坚持不懈地做某件事情。坚持做一件事情的难度是远高于心血来潮做事情的。在不同的自我营销平台上,由于观众是略有差异的,因此在内容侧需要进行必要的调整和重组,以迎合更多观众的喜好。坚持不懈地做某件事情也有利于在社交平台保证稳定的活跃度,可以长期的获得必要的流量。在现有的互联网环境下,有流量就可以带货,做培训,开直播,甚至提供必要的收入来源。

在做程序员的时候,最重要的就是生产力,拥有优秀的生产力可以大量提升效率,也可以提升收入。为了获得更高的生产力,每日/每周/每月的计划就需要提前安排。通过各种 Calendar 日历工具提前安排自己的工作,基于 Rescue Time 等时间管理工具来安排有效的工作时间。培养一个好习惯有助于经营自己。

作者在有段时间内进行了“艰苦工作”的模式,不仅完成自己的日常工作,还在工作日晚上和周末制作在线课程,且每周更新自己的博客内容。在持续工作的过程中,作者开始拥有了源源不断的被动收入,不仅包括博客的收入,还包括一些 APP 的收入,甚至投入的房地产也获得了不错的收益。

在获得成功的路上,作者也推荐了一些书籍,例如《影响力》,《意志力陷阱》等。同时也强调了走出舒适区这一个重要的概念,每个人其实都愿意在自己的舒适区呆着,很难主动地走出自己的舒适区,毕竟万事开头难。一旦走出了舒适区,如何坚持做某件事情又是一件有难度的事情。这些问题作者都基于亲身经历进行了详细解答。

作为一个职场中的程序员,除了日常的努力工作之外,到底还有多少东西需要了解和学习呢?相信这本书会给读者提供一个全新思路和参考答案。