zoukankan      html  css  js  c++  java
  • 机器学习十四--深度学习-卷积

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

    从上图中可以看出,三者之间其实是一种包含的关系,即深度学习是实现机器学习的技术,而机器学习又是实现人工智能的方法。

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

    全连接神经网络

    卷积神经网络

     

     从以上两图是两种网络的结构,两种网络都是由一层一层的节点组织起来的,每一个节点就是一个神经元,而且两者的输入输出也较为相似,

    区别在于两个网络各自的节点连接方式,全连接神经网络中,相邻的两层的节点全都有相连,而卷积神经网络两层节点间只有部分节点相连。

    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的矩阵进行运算

    1*0+0*0+-1*5+1*0+0*0+-1*13+1*0+0*0+-1*15= -13

     第二次选取的矩阵往右移动一格,即,再如上和卷积核做相同的计算,得结果-27

    第三次第四次。。。。。。都喝上面的步骤一样,和卷积核计算得出结果

    .。。。。。

    当移动到前三行的最后三列时,得结果27,以上结果记为一行,即

    于是往下一列,从左开始做上述计算,每次移动完后就向下一列从左边开始计算,移动到最后一列后计算完,这个过程便结束,结果如下:

    读取一个图像;
    4.理解卷积如何提取图像特征。

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

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

    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

    (1)导入相关的包

    from PIL import Image
    import matplotlib.pyplot as plt
    %matplotlib inline
    import numpy as np
    from scipy.signal import convolve2d

    (2)读取图片,并做卷积运算

    #读取图片,转换图片模式
    I = Image.open(r'C:UserszengkPicturesCamera Roll
    irvana.jpg')
    L = I.convert('L')
    
    img = np.array(I) imgg
    = np.array(L) #三种卷积核 k1 = np.array([[1,0,-1],[1,0,-1],[1,0,-1]]) k2 = np.array([[1,1,1],[0,0,0],[-1,-1,-1]]) k3 = np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]]) # k4 = np.array([[1,1,1],[-1,-1,-1],[1,1,1]]) #卷积计算 img1 = convolve2d(imgg,k1,boundary='symm',mode='same') img2 = convolve2d(imgg,k2,boundary='symm',mode='same') img3 = convolve2d(imgg,k3,boundary='symm',mode='same') #显示图片 plt.matshow(img) plt.matshow(img1) plt.matshow(img2) plt.matshow(img3)

    (3)结果及观察:

    原图如下:

    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

     


    此卷积核下的卷积结果如下:

     这个图主要就是一些边缘的特征提取

    5. 安装Tensorflow,keras

    参考:https://blog.csdn.net/u011119817/article/details/88309256 

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

    from tensorflow.keras.models import Sequential

    from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPool2D

    model = tf.keras.Sequential()

    model.add(Conv2D(…))

    model.add(MaxPool2D(…))

    ...

    #可以上传手动演算的每层数据结构的变化过程。model.summary() 

    
    
    # 导包
    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D
    model = Sequential()

    # 一层卷积
    model.add(Conv2D(filters=16,kernel_size=(5, 5),padding='same',input_shape=(28, 28, 1),activation='relu'))
    # 二层卷积
    model.add(Conv2D(filters=32,kernel_size=(5, 5),padding='same',activation='relu'))
    # 池化层1
    model.add(MaxPool2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))
    #三层卷积
    model.add(Conv2D(filters=32,kernel_size=(5, 5),padding='same',activation='relu'))
    # 池化层2
    model.add(MaxPool2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))
    # 四层卷积
    model.add(Conv2D(filters=64,kernel_size=(5, 5),padding='same',activation='relu'))

    model.add(Flatten())
    # 全连接层
    model.add(Dense(128, activation='relu'))
    model.add(Dense(128, activation='relu'))
    model.add(Dropout(0.25))
    model.add(Dense(10, activation='softmax')) # 激活函数
    #每层数据的结构变化过程
    model.summary()
     

    参考:

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

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

    https://blog.csdn.net/qq_32458499/article/details/80167099

    https://blog.csdn.net/weixin_42414405/article/details/90642444

    https://www.zhihu.com/question/57770020

  • 相关阅读:
    hive与hbase整合
    待重写
    hive DML
    【知识强化】第六章 总线 6.1 总线概述
    【知识强化】第五章 中央处理器 5.1 CPU的功能和基本结构
    【知识强化】第四章 指令系统 4.3 CISC和RISC的基本概念
    【知识强化】第四章 指令系统 4.2 指令寻址方式
    【知识强化】第四章 指令系统 4.1 指令格式
    【知识强化】第三章 存储系统 3.6 高速缓冲存储器
    【知识强化】第三章 存储系统 3.5 双口RAM和多模块存储器
  • 原文地址:https://www.cnblogs.com/xiaoAP/p/13055310.html
Copyright © 2011-2022 走看看