卷积神经网络(CNN)

本文介绍了卷积神经网络(CNN)的基本结构,包括输入层、卷积层、激活函数、池化层、全连接层和损失函数。重点讨论了卷积层的特征提取、ReLU激活函数的作用、池化层的简化运算以及全连接层的矩阵变换。通过实例解释了全连接层的计算过程,并给出了ReLU激活函数的前向传播和反向传播代码实现。此外,还简要提到了反向传播中梯度下降和前向传播、反向传播的步骤。
摘要由CSDN通过智能技术生成

        本文是对卷积神经网络较为精简的学习总结,主要用于记录自己的学习过程,如有不准确之处,欢迎各路大神指出!

        卷积神经网络(CNN)的主要结构:输入层、卷积层、激活函数、池化层、全连接层、损失函数。不同的卷积神经网络由不同种类及数目的以上网络层组成。

        卷积层:提取图像特征。

                多次卷积:得到不同特征。

        激活函数:使每个网络层的输出呈非线性分布,更接近真实情况,提高泛化能力。

        池化层:减小特征矩阵,简化运算。

        全连接层:矩阵变换,将特征映射到特定空间,获取对应目标相同的行与列。(详细细节见后)

        梯度下降:计算新的权重矩阵W。

        前向传播:输入层,卷积层,激活函数,池化层,全连接层。

        反向传播:损失函数,反全连接,反池化,激活函数逆变换。

        由于在小组项目中的不同分工,因此笔者专注于对卷积神经网络特定网络层及实现代码的学习,部分内容则较为简略。

        全连接层原理理解:

        例:输入两个图像  2*32*8*8

                转化为两个行向量   2*2048

                超参数  2048*200

                输出矩阵  2*200

                即完成了矩阵变换。

 1.引入numpy函数库,名称为np。

import numpy as np

 2. 将输入图像x的特征矩阵转换为行向量。

N = x.shape[0]
x_row = x.reshape(N, -1)

-1表示不知道具体有多少列,但是指定行便能算出列。

numpy.reshape()函数用于给数组一个新的形状而不改变其数据。

3.进行矩阵变换后输出。

out = np.dot(x_row, w) + b

np.dot()函数功能:向量点积和矩阵乘法。

4.反向传播

def affine_backward(dout, cache):

def用于定义一个函数体。

5.RELU激活函数(前向传播)

def relu_forward(x):  
out = None  
out = ReLU(x)
cache = x 
return out, cache 

relu激活函数能解决sigmoid激活函数梯度消失问题,网络性能比sigmoid更好。

6.RELU激活函数(反向传播)

def relu_backward(dout, cache): 
dx, x = None, cache 
dx = dout 
dx[x <= 0] = 0   
return dx

relu激活函数特点:x<0时,导数为0。

原文转载自:深度学习之卷积神经网络(CNN)详解与代码实现(一) - w_x_w1985 - 博客园卷积神经网络(CNN)详解与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10430073.html 目https://www.cnblogs.com/further-further-further/p/10430073.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值