TensorFlow深度学习入门笔记(一)写在前面——如何入门深度学习

 

本文是自己学习中的一些感悟,主要谈下如何入门深度学习。

 原文:https://mp.weixin.qq.com/s/cCL2djISt3HMLSM9NMmTQQ

为啥你也可以自学AI?因为我都可以,所以你一定也行!

我不是AI相关专业出身,没有经过硕士、博士级洗礼,大学毕业很多年(数学等早还给老师了),甚至不是开发,也不是很懂算法(让我手写个快排估计都写不出来)……

对,我在学机器学习、深度学习技能,而且还准备从事相关的职业

所以你应该也没问题,相信自己

 

如果你碰巧也对AI有兴趣,想探一探它的神奇,欢迎同路!

终于开始动手在这里记下自己的学习过程,算是复习巩固,也希望对想入门的你有所帮助

好了,一起来玩吧

 

关于学习,以下是自己的理解,希望对你有启发 ^_^

学习的过程:

1.感性认识

2.了解概况

3.先跑起来

4.完成任务

5.技术细节

6.原理追溯

感性了解  

在接触一项技能、知识时,最早大都是从感性认识开始的,先看到它的样,碰到它的感觉。。。或者在外面观察,或者已参与其中。。。突然有了兴趣,产生了想再了解一下的感觉。这时,好戏开始了……

 

那日常你都看到了哪些深度学习的”东西呢”?这就简直太多了,毕竟现在AI很火~,比如早些的下棋的”AlphaGo”,已经普及的人脸识别,甚至还有猪脸识别~,最近阿里的”明星猜拳”的,黑5刷脸啦什么的……很多很多,有的是看到的,很多是参与其中的。如果你有关注AI的一些新闻,类似这些事或多或少都知道吧。

 

先看图(图片来自公众号:阿里技术)

隔空猜拳

 

 

黑5刷脸

 

人脸融合

 

手机端实时切割

 

就先上这几个

看到这些报道是,有啥感想呢?

会不会像我我,第一句就是:哇~这么牛逼!咋弄的?

是吧,估计你也像我一样好奇的在问,这都怎么搞出来的呢?

我要是这么牛逼多拉风啊~

嗯~我要回家好好学习了

 

概况了解  

深度学习是属于很尖端的技术了,我一普通的娃怎么玩得转呢?我百度下深度学习用到的知识,差点吓尿了:高等数学(微积分之类)、线性代数、概率论、凸优化、机器学习(单这个就吓屎人)、编程语言(C++、python)、Linux、CUDA编程……

我只是看着好玩,也想玩下而已,别这样吓人吧

 

不想放弃,先了解下大概情况再说:

总的来说,深度学习已发展了几十年了,只是近几年火了起来,导火索有”AlphaGo”下棋,还是飞飞老师推动的竞赛。深度学习是机器学习的一个分支,可以说是由人工神经网络发展起来的,人工神经网络受启发与人脑神经网络(下文提神经网络即只人工神经网络),就是那种给点刺激就有反应(比如膝跳反射什么的,有神经元……),原来只有浅层的神经网络,如感知机,后来加入隐藏层神经元,后来又加入了很多隐藏层……就变成深度神经网络了,用这种深度网络构建模型,去预测、处理任务过程,就叫深度学习了。以上是自己理解,不够科班了些,这些不重要,了解即可~

深度学习目前流行的框架主要有:TensorFlow,Theano,Keras,Caffe,PyTorch,MXNet……

本教将使用比较热门的TensorFlow,

TensorFlow2.0预览版已经公布了,有机会也会尝尝鲜

还有个重要概况,深度学习很火,估计会持续几年,国家政策都规划了10年呢

其实这才是我学习的动力

 

附一张深度学习发展图

(图片来自网络https://www.jianshu.com/p/2a5936c2a6dd)

 

知道个大概了,然后呢,从哪里入手?微积分吗?

于是四处取经,找大佬指点中……

终于,有个靠谱的高人指点:先学最少的知识跑起来就行,暂时不用管它为什么能跑……

高人就是高人,说的太对了(主要不敢去研究理论

想想看,如果从原理入手(微积分、矩阵、支持向量积……),估计三天坚持不到啊

所以,先放弃研究这些枯燥的原理,让程序跑起来再说

所以,先放弃研究这些枯燥的原理,让程序跑起来再说

所以,先放弃研究这些枯燥的原理,让程序跑起来再说

重要的事要说3遍

对就先把深度学习跑起来,莫急,下篇就跑……

 

先跑起来  

要想跑起来,需要先选个深度学习框架,我选的是TensorFlow,算是比较流行的了,有Google撑腰,生态发展良好~

然后要做的是环境配置、包安装等,这些写在其他教程里了,点击这里和这里^_^

不多解释原理,先依葫芦画瓢写点代码,运行起来再说

代码如下,参考自莫烦的教程

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# 添加神经网络层
def add_layer(inputs,in_size,out_size,activation_function=None):
   Weights = tf.Variable(tf.random_normal([in_size,out_size]))
   biases = tf.Variable(tf.zeros([1,out_size]) + 0.1)
   Wx_plus_b = tf.matmul(inputs,Weights) + biases

   if activation_function is None:
       outputs = Wx_plus_b
   else:
       outputs = activation_function(Wx_plus_b)
   return outputs

# 构建
x_data = np.linspace(-1,1,300)[:,np.newaxis]
noise = np.random.normal(0,0.05,x_data.shape)
y_data = np.square(x_data) - 0.5 + noise

xs = tf.placeholder(tf.float32,[None,1])
ys =tf.placeholder(tf.float32,[None,1])

# 建立输入层 隐藏层 输出层
l1 = add_layer(xs,1,10,activation_function=tf.nn.relu)
prediction = add_layer(l1,10,1,activation_function=None)
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
# 预测
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x_data, y_data)
plt.ion()
plt.show()

sess = tf.Session()
sess.run(init)
for i in range(1000):
# training
   sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
   if i % 20 == 0:
       # to visualize the result and improvement
       try:
           ax.lines.remove(lines[0])
       except Exception:
           pass
       prediction_value = sess.run(prediction, feed_dict={xs: x_data})
       # plot the prediction
       lines = ax.plot(x_data, prediction_value, 'r-', lw=5)
       plt.pause(0.01)

print('over.')
sess.close()

 

 

看晕了么,不妨copy到你那运行下看看什么神奇的效果吧

以上代码其实还不算真正的深度学习,主要是熟悉TensorFlow

不要着急,学习本来就是从浅入深、从易到难的过程

我也在这么的学习中……

后面会一点一点学习,一点点积累,聚沙成塔,指日可待

困难再多也不怕,时间会帮忙解决它,一起加油吧~

 

 

把活完成  

想点需求,比如识别个验证吗,搞个人脸识别,虽然别都做好了,但是我看还是可以做自己的。当然,你有好的想法,一定要去实践下,实践出真知,实践出不一样的自己。试试看吧

记住,学习就是为了干活,活要好,才活的好

 

技术细节  

这个后面教程中,尽量很细的讲,细到丝……

 

原理追溯  

学到后面,可能感慨,欠下的技术债总是要还的,不过这时不在是枯燥的,而是主动去追根溯源,效果和效率都可想而知~

原理部分会整理出来,都放上来,就当字典、参考书,需要时再拿来研读

 

小结:

关注公众号“从机器学习到深度学习那些事”获取更多最新资料

本文从学习的各个过程角度讨论了如何入门深度学习,纯属个人理解总结,希望对你有所帮助。有观点欢迎交流沟通。

感性认识---好奇引起兴趣

了解概况----感兴趣、有潜力、适合自己?

先跑起来----先掌握最顶层的,看着它跑起来(熟悉框架规则等)

完成任务----用一下,完成个小需求,去发现它的好

技术细节----熟悉API还不够,看些源码,为了解决自己写的bug

原理追溯-----一点一点捡起来,各个击破,再串起来,串成自己的样子。调优,让你的代码飞起来,必须回溯原理,到推导公式级别,理解它的灵魂

 

后续将从零开始整理TensorFlow教程,争取每天都能推送,期间有问题欢迎交流沟通!

 

 


参考资料:

莫烦教程

TensorFlow官网

https://www.jianshu.com/p/2a5936c2a6dd

原文地址:https://mp.weixin.qq.com/s/cCL2djISt3HMLSM9NMmTQQ

posted @ 2019-02-21 14:28  一颗爱学习的花菜  阅读(694)  评论(0编辑  收藏  举报