我所用过的深度学习框架

写在前面

深度学习有几个比较有名的平台框架,如早期的Theano,Caffe,如今比较火的Tensorflow,Pytorch,MxNet等,这些平台框架是从事机器学习、深度学习研究的重要工具。

Keras

我从2016年开始接触深度学习,早期试用过Caffe,因为当时网络上能搜索到的深度学习框架很有限(也有可能是我没搜到),而Caffe又是最火热的,但由于经常更换电脑,每一次都要重新安装配置一下环境,过于繁琐的环境安装与配置,让我很快就放弃了Caffe。

此时,无意之间,也不知道从哪个犄角旮旯里,听说了 Keras,当时还是个刚问世不久的新框架,网上的信息不多,不过貌似有个使用文档,现在还在维护 https://keras.io/zh/,现在可以中文查看了。印象中,最开始好像是英文的。

初次使用 Keras,直呼好家伙!为什么自己没有早点发现呢?这么简单好用的工具,竟然没被发现!事实上,我问了周围很多做深度学习的朋友同学,貌似没几个听说过 Keras的。不过没关系,做研究嘛,目标最重要,工具是其次,只要能实现目标,都是好工具。

一路走来,从最开始的 Keras1.0 到现在 Keras2.3,不敢说每个版本都用过,但至少都安装过。Keras最开始的后端用的是Theano,后来随着使用的人多了,名声大了,现在支持的后端也变增加了,Tensorflow、MxNet都可。MxNet没安装过,不清楚,不过Tensorflow倒是不错,很好安装,也有CPU和GPU的版本,使用起来很方便,环境配置也很简单。

但是,也要注意,Tensorflow 的版本和Keras版本,以及Python版本,要适配,选择用一个版本的Tensorflow,后期最好不要乱改,因为Tensorflow的版本有时候变化很大,很有可能,改版本之后,之前写的代码就会报莫名其妙的错误。所以,一个好的建议是都用固定的版本,这样就可以避免少出错。比较方便的是采用 Anaconda ,当要用其他版本时,新建一个conda环境,这样可以互不干扰。

我目前主要用的是Python3.6 + tensorflow-gpu 1.14.0 + Keras  2.2.0。本来我之前一直都是用Python2.7的,但决定采用Tensorflow做后端之后,就改成Python3.6版本了,因为貌似在Windows环境下Tensorflow不支持Python2.7,需要Python的环境是3.5+,因此就顺势改了。但在Linux环境下,这个问题就不存在,因为我的Linux电脑(Ubuntu)就用的是Python2.7+tensorflow。

这些看起来都是小问题,但就是因为这些小问题,对于初学者,有时候能困上半天,白白浪费了大把时光。

Tensorflow与Pytorch

2019年的夏天,我一时心血来潮,突然想学习用用Tensorflow,可能一方面是因为有些函数,Keras实现起来很麻烦,没有Tensorflow灵活,而且训练效率貌似不高;另一方面可能是因为科研不顺,想捣鼓点其他东西,就当给自己解压了。

实话来讲,Tensorflow 我用的不多,买了几本书,试着编写了一些代码,也大致搞清楚了该怎么使用。但对我来讲,里面还是有各种问题,有时候遇到问题了,都不知道该怎么解决,网上的回答在不同的版本之间可能还不适用,种种问题,让我觉得 Tensorflow 还是比较难搞的。当然,写写简单的代码还是不成问题。

如今,Tensorflow的使用人数很多,各行各业的都有,而且很多模型代码,都能够在github上找到,基本不用亲自编写,很方便。

与Tensorflow不同,我对Pytorch的学习纯粹是出于疫情,疫情在家实在无聊,就翻看github上的一些代码,想着能不能有个好的idea。可浏览了很多,发现很多最新的模型代码,基本上都是使用Pytorch实现的,而我并没有用过Pytorch,也不清楚到底它到底是个什么工作机制。这可怎么了得!

于是,就开始了Pytorch的学习,在网上大概看了看相关的介绍,明白了是个什么流程,就开始找个已有的案例进行边写边学。这里,我分享一个自己学习代码的经验,就是不能只停留在看代码,而是要边看边写。很多时候,我们一看就懂,但自己却一写就错。所以,要理论与实践相结合,这样才能掌握的好。

Pytorch,我觉得还是比较好用的,代码也很容易看懂,有很多东西和Tensorflow比较相似,写起来也不复杂,可惜我没有那么多时间和精力了,不然我肯定会把之前所以编写的代码,都用Pytorch重新写一遍,加强记忆也能达到学习的目的。

关于Tensorflow与Pytorch之间的异同,网上有很多介绍,很多我也不明白,所以这里就不瞎白话了。

写在最后

写这篇博客,纯粹是属于饭后无聊,随便瞎写。很多内容都是自己脑袋一热写的,没有参考一些文献资料,不够严谨,行文也没什么逻辑可言,想到哪就写到哪,就这样吧!

哦,封面是我师弟去青海科考所拍,景色挺好!

上一篇:Keras训练卡在第一个epoch的解决方案


下一篇:mpvue 生成字节跳动小程序的问题!!