基于飞桨PaddlePaddle的图像识别深度学习实践心得

基于飞桨PaddlePaddle的图像识别深度学习实践心得

一、深度学习解析
在图像识别中应用深度学习,实际上就是通过借鉴人脑视觉机理的基本模型:神经->中枢->大脑。即: (一)从原始信号摄入(瞳孔摄入像素Pixels)->初步处理(大脑皮层某些细胞发现边缘和方向)->抽象(大脑判定,眼前的物体的形状,是圆形的)->进一步抽象(大脑进一步判定该物体是人脸) (二)从原始信号,做低级抽象,逐渐向高级抽象迭代。
基于飞桨PaddlePaddle的图像识别深度学习实践心得_第1张图片
二、基本人工神经网络建立流程
人工神经网络经过数十年的快速发展,已经得到了迭代进化,那么建立一个基本的人工智能神经网络需要经过哪些步骤呢:
(一)建立模型:主要解决选择什么样的网络结构;选择多少层数,每层选择多少神经元;
基于飞桨PaddlePaddle的图像识别深度学习实践心得_第2张图片
(二)损失函数:主要解决选择哪些常用损失函数、平方误差、交叉熵;
基于飞桨PaddlePaddle的图像识别深度学习实践心得_第3张图片
(三)参数学习:主要解决神经网络的训练方法,常用的算法包括:梯度下降和反向传播算法
三、利用飞桨PaddlePaddle建立基本人工神经网络
#定义DNN网络
class MyDNN(fluid.dygraph.Layer):
def init(self):
super(MyDNN,self).init()
self.hidden1 = Linear(100,1500,act=‘elu’)
self.hidden2 = Linear(1500,1500,act=‘elu’)
self.hidden3 = Linear(1500,1500,act=‘elu’)
self.hidden4 = Linear(1500,1500,act=‘elu’)
self.hidden5 = Linear(1500,1500,act=‘elu’)
self.hidden6 = Linear(1500,1500,act=‘elu’)
self.hidden7 = Linear(1500,1500,act=‘elu’)
self.hidden8 = Linear(1500,100,act=‘elu’)
self.hidden9 = Linear(3100100,10,act=‘softmax’)
def forward(self,input):
x = self.hidden1(input)
x = self.hidden2(x)
x = self.hidden3(x)
x = self.hidden4(x)
x = self.hidden5(x)
x = self.hidden6(x)
x = self.hidden7(x)
x = self.hidden8(x)
x = fluid.layers.reshape(x,shape=[-1,3100100])
y = self.hidden9(x)
return y
四、卷积神经网络
卷积神经网络的出现,主要是为了应对基本人工神经网络在构造过程中存在的一些问题,包括:模型结构不够灵活、模型参数过多等。
基于飞桨PaddlePaddle的图像识别深度学习实践心得_第4张图片
基于飞桨PaddlePaddle的图像识别深度学习实践心得_第5张图片
为了克服以上缺点,在保留基本神经网络构造中的损失函数、参数学习算法等基础之上,卷积神经网络通过采用局部连接、共享权值、下采样等手法改变了基本神经网络全连接方式,极大地提高了基本神经网络的性能,如下图所示:
基于飞桨PaddlePaddle的图像识别深度学习实践心得_第6张图片
下面以识别一幅猫脸图像为例,简要介绍局部连接、共享权值和下采样的基本原理:
基于飞桨PaddlePaddle的图像识别深度学习实践心得_第7张图片
基于飞桨PaddlePaddle的图像识别深度学习实践心得_第8张图片
基于飞桨PaddlePaddle的图像识别深度学习实践心得_第9张图片
五、利用百度飞桨PaddlePaddle平台构造卷积神经网络
#定义网络
class MyLeNet(fluid.dygraph.Layer):
def init(self):
super(MyLeNet,self).init()
self.hidden1_1 = Conv2D(1,28,5,1)#通道数 卷积核个数 卷积核大小
self.hidden1_2 = Pool2D(pool_size=2,pool_type=‘max’,pool_stride=1)
self.hidden2_1 = Conv2D(28,32,3,1)
self.hidden2_2 = Pool2D(pool_size=2,pool_type=‘max’,pool_stride=1)
self.hidden3 = Conv2D(32,32,3,1)
self.hidden4 = Linear(321010,65,act=‘softmax’)
def forward(self,input):
x = self.hidden1_1(input)
#print(x.shape)
x = self.hidden1_2(x)
#print(x.shape)
x = self.hidden2_1(x)
#print(x.shape)
x = self.hidden2_2(x)
#print(x.shape)
x = self.hidden3(x)
#print(x.shape)
x = fluid.layers.reshape(x,shape=[-1,321010])
y = self.hidden4(x)

    return y

以上为参加百度飞桨深度学习7日入门-CV疫情特辑公开课的一些学习心得,分享给对人工智能感兴趣的同行,最后再次感谢百度飞桨提供的课程,通过课程学习受益匪浅。

你可能感兴趣的:(人工智能)