文章目录

  • 1.CNN解决了什么问题?
  • 2.CNN基本原理
    • 1)卷积层
    • 2)tf自带的2D卷积层
    • 3)动手实现卷积层
      • Numpy版本
      • tf2.0版本
    • 4)池化层
    • 5)动手实现池化层
      • tf自带的MaxPool2D
      • Numpy版本池化层
      • tf版本池化层
    • 6)全连接层
  • 3.常用CNN架构
  • 4.CNN有哪些实际应用
  • 5.总结

1.CNN解决了什么问题?




2.CNN基本原理


1)卷积层

卷积层的前向传播以及计算公式

图片:7*7*3
通道:3个输入通道
卷积核




输出通道高度:(5 - 3 + 2) / 2 + 1 = 3
输出通道宽度:(5 - 3 + 2 ) / 2 + 1 = 3

2)tf自带的2D卷积层




3)动手实现卷积层

Numpy版本
import numpy as npdef conv_numpy(x,w,b,pad,strides):# x表示输入张量,w表示卷积核,b表示偏置,pad表示填充,strides表示步长out = None N,H.W,C = x.shapeF,HH,WW,C = w.shapeX = np.pad(x,((0,0),(pad,pad),(pad,pad),(0,0)),'constant')# 计算输出张量的高度与宽度Hn = 1 + int((H + 2 * pad - HH) / strides[0])Wn = 1 + int((W + 2 * pad - WW) / strides[1])out = np.zeros((N,Hn,Wn,F))for n in range(N):for m in range(F):for i in range(Hn):for j in range(Wn):data = X[n,i * strides[0] : i * strides[0] + HH,j * strides[1] : j * strides[1] + WW, :].reshape(1,-1)  # 行filt = w[m].reshape(-1,1)     # 列out[n,i,j,m] = data.dot(filt) + b(m)return out
tf2.0版本
def corr2d(x,w,b,pad,strides):# x表示输入张量,w表示卷积核,b表示偏置,pad表示填充,strides表示步长out = None N,H.W,C = tf.shape(x)F,HH,WW,C = tf.shape(w)X = tf.pad(x,((0,0),(pad,pad),(pad,pad),(0,0)),'constant')# 计算输出张量的高度与宽度Hn = 1 + int((H + 2 * pad - HH) / strides[0])Wn = 1 + int((W + 2 * pad - WW) / strides[1])Y = tf.Variable(tf.zeros((N,Hn,Wn,F),dtype = tf.float32))for m in range(F):for i in range(Hn):for j in range(Wn):data = X[:,i * strides[0] : i * 1 + HH,j * strides[1] : j * 1 + WW, :]filt = w[m,:,:,:]Y[:,i,j,m].assign(tf.reducr_sum(tf.multiply(data,filt),axis=(1,2,3)) + b[m])return Y

4)池化层




5)动手实现池化层

tf自带的MaxPool2D


Numpy版本池化层
def max_pool_forward_native(x,pool_size=(2,2),strides=(1,1)):N,H,W,C = x.shapeh_p,w_p = pool_sizeh_s,w_s = stridesHn = 1 + int((H - h_p) / h_s)Wn = 1 + ins((W - w_p) / w_s)out = np.zeros((N,Hn,Wn,C))for i in range(Hn):for j in range(Wn):out[:,i,j,:] = np.max(x[:.i*h_s : i*h_s+h_p, j*w_s: j*w_s+w_p,:],axis=(1,2))return out
tf版本池化层
def pool2d(X, pool_size=(2,2),strides=(1,1)):N,H,W,C = tf.shape(X)p_h,p_w = pool_sizes_h,s_w = stridesY = tf.zeros((N,(H - p_h + 1) // s_h, (W - p_w + 1)// s_w ,C))Y = tf.Variable(Y)for i in tf.range(tf.shape(Y)[1]):for j on tf.range(tf.shape(Y)[2]):Y[:,i,j,:].assign(tf.math.reduce_max(X[:,i*s_h : i*s_h+p_h, j*s_w : j*s_w+p_w,:],axis=(1,2),keepdims=Flase))return Y

6)全连接层

3.常用CNN架构




4.CNN有哪些实际应用






5.总结

深度学习13-cnn介绍(卷积神经网络简介)相关推荐

  1. 花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)

    目录 0. 前言 1. 单层卷积网络 2. 各参数维度 3. CNN 前向传播反向传播 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 ...

  2. 学习笔记:深度学习(3)——卷积神经网络(CNN)理论篇

    学习时间:2022.04.10~2022.04.12 文章目录 3. 卷积神经网络CNN 3.1 卷积神经网络的概念 3.1.1 什么是CNN? 3.1.2 为什么要用CNN? 3.1.3 人类的视觉 ...

  3. 深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战

    深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战 神经网络(neual networks)是人工智能研究领域的一部分,当前最流行的神经网络 ...

  4. 花书+吴恩达深度学习(十一)卷积神经网络 CNN 之池化层

    目录 0. 前言 1. 最大池化(max pooling) 2. 平移不变形 3. 其他池化函数 4. 卷积和池化作为一种无限强的先验 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常 ...

  5. 花书+吴恩达深度学习(十)卷积神经网络 CNN 之卷积层

    目录 0. 前言 1. 2D 图像卷积 2. 3D 图像卷积 3. 过滤器(核函数) 4. 过滤器应用于边缘检测 5. padding 填充 6. stride 步长 7. 使用卷积的动机 8. 1乘 ...

  6. 深度学习笔记其五:卷积神经网络和PYTORCH

    深度学习笔记其五:卷积神经网络和PYTORCH 1. 从全连接层到卷积 1.1 不变性 1.2 多层感知机的限制 1.2.1 平移不变性 1.2.2 局部性 1.3 卷积 1.4 "沃尔多在 ...

  7. 深度学习实战3-文本卷积神经网络(TextCNN)新闻文本分类

    文章目录 一.前期工作 1. 设置GPU 2. 导入预处理词库类 二.导入预处理词库类 三.参数设定 四.创建模型 五.训练模型函数 六.测试模型函数 七.训练模型与预测 今天给大家带来一个简单的中文 ...

  8. 图像处理神经网络python_深度学习使用Python进行卷积神经网络的图像分类教程

    深度学习使用Python进行卷积神经网络的图像分类教程 好的,这次我将使用python编写如何使用卷积神经网络(CNN)进行图像分类.我希望你事先已经阅读并理解了卷积神经网络(CNN)的基本概念,这里 ...

  9. 【深度学习】Tensorflow搭建卷积神经网络实现情绪识别

    [深度学习]Tensorflow搭建卷积神经网络实现情绪识别 文章目录 1 Tensorflow的基本使用方法1.1 计算图1.2 Feed1.3 Fetch1.4 其他解释 2 训练一个Tensor ...

  10. 【深度学习】深入理解卷积神经网络(CNN)

    CNN Author:louwill From:深度学习笔记 本文将为大家介绍一种用途更为广泛.性能更加优越的神经网络结构--卷积神经网络(Convolutional Neural Network, ...

最新文章

  1. linux可以远程装机吗,linux 远程装机
  2. 新手学JAVA(六)----处理随机性的数据
  3. AGS API for JavaScript 图表上地图
  4. 2018,人工智能在清算中落地
  5. 寒假每日一题(提高组)【Week 1 完结】
  6. Android之drawable state各个属性详解
  7. 2020-08-21 光纤通信第四章知识点整理
  8. 【今日CV 视觉论文速览】 04 Dec 2018
  9. 排序-概述,插入排序(180602更新完毕)
  10. 计算机与操作系统发展阶段 深谈:Linux操作系统
  11. Laravel后台 + AngularJS前端 的网站构建与维护
  12. java学习--基础知识阶段性总结--JDK5新特性
  13. 排序算法专题-桶排序
  14. 算法与数据结构 第3章 高级排序算法下 学习笔记
  15. PhotoShop简单案例(4)——利用ps制作正在加载中动画(loading.gif)
  16. 微机课设 | 基于STC15单片机的简易数字密码锁设计
  17. knockoutjs与ajax,MVVM架构~knockoutjs系列之为Ajax传递Ko数组对象
  18. Eclipse阿里巴巴Java开发规范插件安装
  19. DTCC2019数据风云,十年变迁 第十届中国数据库技术大会隆重启动
  20. layui 表格表头最右侧多一列 解决办法

热门文章

  1. 多元一次方程组的求解
  2. 20190818 On Java8 第八章 复用
  3. vue项目 拷到别的电脑应该怎吗再次重新运行
  4. 蓝桥杯嵌入式比赛经验分享
  5. 洛谷——P2613 【模板】有理数取余
  6. 学习笔记28_MVC异步请求
  7. ubuntu14.04 的网络配置
  8. PHP $_SERVER详解
  9. 收集一些关于视频文件格式以及编码计算的一些知识
  10. sql记录去重(SQL查询或者删除表中重复记录)