zoukankan      html  css  js  c++  java
  • 14 深度学习-卷积

    1.简述人工智能、机器学习和深度学习三者的联系与区别。

     人工智能是一个大的发展中的概念,其中包括包括专家系统、机器学习、进化计算、模糊逻辑、计算机视觉、自然语言处理、推荐系统等。即机器学习是实现人工智能的其中一个方法,而深度学习是机器学习所使用的一种算法。

    总结:人工智能 > 机器学习 > 深度学习

    2. 全连接神经网络与卷积神经网络的联系与区别。

     在全连接神经网络中,每两层之间的节点都有边相连。(不适用图片识别)

    神经元都是拉成一列排列,对于图片的像素空间信息会丢失。

    卷积神经网络也是通过一层一层的节点组织起来的,对于卷积神经网络,相邻两层之间只有部分节点相连。在卷积神经网络的前几层中,每一层的节点都被组织成一个三维矩阵。前几层中每一个节点只和上一层中部分节点相连。

    卷积神经网络结构:

    • 1、输入层
    • 2、卷积层
    • 3、池化层(Pooling)
    • 4、全连接层
    • 5、softmax层

    3.理解卷积计算。

    以digit0为例,进行手工演算。

    from sklearn.datasets import load_digits #小数据集8*8

    digits = load_digits()

    0

    0

    5

    13

    9

    1

    0

    0

    0

    0

    13

    15

    10

    15

    5

    0

    0

    3

    15

    2

    0

    11

    8

    0

    0

    4

    12

    0

    0

    8

    8

    0

    0

    5

    8

    0

    0

    9

    8

    0

    0

    4

    11

    0

    1

    12

    7

    0

    0

    2

    14

    5

    10

    12

    0

    0

    0

    0

    6

    13

    10

    0

    0

    0

    【额外补充】

    卷积运算与相关运算

    在计算机视觉领域,卷积核、滤波器通常为较小尺寸的矩阵,比如 3 × 3 、5 × 5 等,数字图像是相对较大尺寸的2维(多维)矩阵(张量),图像卷积运算与相关运算的关系如下图所示(图片来自链接),其中 F 为滤波器,X 为图像,O 为结果。

    卷积神经网络之卷积计算、作用与思想

    相关是将滤波器在图像上滑动,对应位置相乘求和;

    卷积则先将滤波器旋转180度(行列均对称翻转),然后使用旋转后的滤波器进行相关运算。

    两者在计算方式上可以等价,有时为了简化,虽然名义上说是“卷积”,但实际实现时是相关。

    4.理解卷积如何提取图像特征。

    读取一个图像;

     1 from PIL import Image
     2 import matplotlib.pyplot as plt
     3 # %matplotlib inline
     4 import numpy as np
     5 from scipy.signal import convolve2d
     6 import tf.keras.layers.Conv2D
     7 
     8 
     9 I = Image.open(r'./img/see.jpg')
    10 L = I.convert('L')
    11 
    12 cat = np.array(I)  # 原图
    13 catg = np.array(L) # 灰度图

    以下矩阵为卷积核进行卷积操作;

    1 k1 = np.array([[1, 0, -1], [1, 0, -1], [1, 0, -1]])  # 垂直边缘检测
    2 k2 = np.array([[1, 1, 1], [0, 0, 0], [-1, -1, -1]])  # 水平边缘检测(转置)
    3 k3 = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]])
    4 
    5 cat1 = convolve2d(catg, k1, boundary='symm', mode='same')
    6 cat2 = convolve2d(catg, k2, boundary='symm', mode='same')
    7 cat3 = convolve2d(catg, k3, boundary='symm', mode='same')

    显示卷积之后的图像,观察提取到什么特征。

    原图

    纵向特征

    1

    0

    -1

    1

    0

    -1

    1

    0

    -1

    横向特征

    1

    1

    1

    0

    0

    0

    -1

    -1

    -1 

     中心特征

    -1

    -1

    -1

    -1

    8

    -1

    -1

    -1

    -1


    卷积API 

    scipy.signal.convolve2d

    tf.keras.layers.Conv2D

    5. 安装Tensorflow,keras

    安装anaconda

     在anaconda prompt中运行命令  conda install tensorflow==2.0  进行安装

     检测安装是否成功

     在pycharm导入相关依赖(或者直接在anaconda使用)

    6. 设计手写数字识别模型结构,注意数据维度的变化。

    Conv2D相关系数

     1 # 导入相关包
     2 from tensorflow.keras.models import Sequential
     3 from tensorflow.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D
     4 
     5 # 建立模型
     6 model = Sequential()
     7 
     8 # 一层卷积
     9 model.add(
    10     Conv2D(
    11         filters=16,
    12         kernel_size=(5, 5),
    13         padding='same',  # 保证卷积核大小,不够补零
    14         input_shape=(28, 28, 1),
    15         activation='relu'))
    16 # 池化层1
    17 model.add(MaxPool2D(pool_size=(2, 2)))
    18 
    19 # 二层卷积
    20 model.add(
    21     Conv2D(
    22         filters=32,
    23         kernel_size=(5, 5),  # 卷积核的大小
    24         padding='same',  # 保证卷积核大小,不够补零
    25         activation='relu'))
    26 # 池化层2
    27 model.add(MaxPool2D(pool_size=(2, 2)))
    28 model.add(Dropout(0.25))
    29 
    30 model.add(Flatten())  # 平坦层
    31 model.add(Dense(128, activation='relu'))  # 全连接层
    32 model.add(Dropout(0.25)) 
    33 model.add(Dense(10, activation='softmax')) # 激活函数

    显示每层数据结构的变化过程。model.summary() 

     

    参考:

    https://www.jianshu.com/p/afe485aa08ce

    https://blog.csdn.net/junjun150013652/article/details/82217571

     

  • 相关阅读:
    POJ 2251 Dungeon Master
    HDU 3085 Nightmare Ⅱ
    CodeForces 1060 B Maximum Sum of Digits
    HDU 1166 敌兵布阵(树状数组)
    HDOJ 2050 折线分割平面
    HDU 5879 Cure
    HDU 1878 欧拉回路
    HDU 6225 Little Boxes
    ZOJ 2971 Give Me the Number
    HDU 2680 Choose the best route
  • 原文地址:https://www.cnblogs.com/lxml/p/13042338.html
Copyright © 2011-2022 走看看