大龄程序员的人工智能学习之路[2]

大龄程序员的人工智能学习之路[2]_第1张图片

题图:由Sasin TipchaiPixabay上发布

吴恩达的《Machine Learning》在线课程就不用我赘述了,有两个学习途径:

  1. 上Coursera在线教学网站学习,优点是每个章节学习之后可以在线答题,可以提交答案检验是否正确,而且还可以做编程练习,编程练习提交到系统后,系统可以自动测试程序是否运行正确。缺点是需要科学上网,而且有些视频并没有中文字幕。

  2. 上网易云课堂学习,优点是速度快,全部视频都有中文字幕。缺点是没有在线习题,也没有编程练习。

在这两个地方学习,都是完全免费。我一直都在科学上网,英文字幕也勉强能看懂,所以我是上Coursera网站学习的。当然也可以在网易云课堂上看视频,到Coursera上做习题和编程练习。这门课程虽然叫机器学习,但其实重点讲的是回归和梯度递减算法,而没有像《机器学习实战》那本书那样涉及好多机器学习的算法。对于线性回归和逻辑回归以及梯度算法讲的非常透彻,辅助以代码实例,也容易懂。每个章节后面都有习题加深巩固。从第二周开始每周有编程练习。整个课程安排了十一周,这是考虑到学习时间有限的情况下,其实如果时间充裕,一天完成一周的学习都没问题。

这门课我认认真真学习了每个视频,完成了每个习题和编程练习。这门课让我开始对机器学习有些感觉,对于回归和梯度算法有了比较深入的理解。编程练习采用的是和matlab兼容的Octave语言,要是选择python语言就更完美了。当然Octave语言也比较简单,稍微学习一下就可以上手。

学完这门课程之后,我又马不停蹄的学习了他的另一门课程《Deep Learning》,准确的说是一个微专业,包含了五门课程:Neural Networks and Deep Learning、Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization、Structuring Machine Learning Projects、Convolutional Neural Networks、Sequence Models,每门课程安排了大约3到4周的学习时间,每个章节都给出了建议学习时间。如果是边工作边学习,就按照这个进度学习就很好。

这门微专业在网易云课堂上同样免费,在Coursera上也可以免费看,但如果要在线提交习题和编程练习,需要收费,折合人民币308元。考虑到在Coursera上可以在线做练习,308元的价格也不贵,我选择了付费,国内带VISA标志的信用卡可以付费,直接折算成人民币付款。

每节课成后面的习题,我都认真做了分析,并写在公众号里:

[神经网络与深度学习] Introduction to deep learning习题解析

[神经网络与深度学习] Neural Network Basics习题解析

[神经网络与深度学习] Shallow Neural Networks习题解析

[神经网络与深度学习] Key concepts on Deep Neural Networks习题解析

[改善深度神经网络] Practical aspects of deep learning习题解析

[改善深度神经网络] Optimization algorithms习题解析

[改善深度神经网络] Hyperparameter tuning, Programming Frameworks习题解

[卷积神经网络]课程:The basics of ConvNets习题解析

[卷积神经网络]课程:Deep convolutional models习题解析

[卷积神经网络]课程:Detection algorithms习题解析

[卷积神经网络]课程:Face recognition & Neural style transfer习题解析

[序列模型] Recurrent Neural Networks习题解析

[序列模型] Natural Language Processing & Word Embeddings习题解析

编程练习使用了Google的TensorFlow框架,考虑到Google在业界的影响力,我决定主要使用TensorFlow框架,为此还看了一本《TensorFlow实战》。



这本书谈不上经典,但比较实用,作为了解TensorFlow框架的基础书籍,还算可以,但这本书我并没有看完,只挑了我感兴趣的章节。

对深度学习以及TensorFlow框架有了一定的掌握之后,决定做一个小项目来练练手。一次看到微信上的识花君小程序后,决定做一款类似的小程序,拍照识狗,取名为识狗君。这实际上是一个图片分类问题。图片分类问题是深度学习最基础的应用,各种图片分类的示例代码满大街。但对于一个新手来说,照着代码一行行敲,运行出来不难,但对于一个新项目来说,还是有许多问题需要解决:

  1. 狗狗图片数据集哪里来?

  2. 选择哪种图片分类模型?如何再训练?是采用端侧推理还是在服务器端识别?

  3. 微信小程序如何开发?

  4. 模型如何部署?

  5. 微信小程序如何与服务端通信?


在这个开发过程中,我在公众号上分享了我对于项目的考虑,碰到的问题,研究的方法:

这个中秋,我开发了一个识别狗狗的app

一头栽进了tensorflow lite的巨坑里

当微信小程序遇上TensorFlow:Server端实现

当微信小程序遇上TensorFlow:Server端实现补充

当微信小程序遇上TensorFlow:小程序实现

当微信小程序遇上TensorFlow:接收base64编码图像数据

当微信小程序遇上TensorFlow:终章

识狗君微信小程序的部署

项目的所有源代码都放在github上:https://github.com/mogoweb/aidog

需要注意的是: TensorFlow框架一直在进化中,可能上面的代码在最新框架上并不能直接使用,我正在考虑将其移植到TensorFlow 2.0上。另外上述方法并非最优方法,只是我在当时能想到的最好方法。如果你有什么好的想法,欢迎交流。

当时看到报道,有AI写诗、AI作曲、AI作画,对GAN(生成对抗网络)产生了兴趣,还买了一本《GAN:实战生成对抗网络》。



在下一篇文章中,我将继续讲述我的大龄程序员的人工智能学习之路,敬请关注。

你还可以读:

大龄程序员的人工智能学习之路[1]

你可能感兴趣的:(大龄程序员的人工智能学习之路[2])