• 14 深度学习-卷积


    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

     

    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

    #图片卷积运算
    from PIL import Image
    from scipy.signal import convolve2d
    import matplotlib.pyplot as plt
    import numpy as np
    
    I = Image.open(r"D:workpy3 Project机器学习dataxhx-153.jpg")    # 读取图片
    L = I.convert('L') # 将彩色的图片转化为灰度图片
    
    p = np.array(I)   # 原图转化为数组
    pg = np.array(L)   # 灰度图转化为数组
    
    # 输入卷积核
    ker1 = np.array([[1,0,-1],[1,0,-1],[1,0,-1]])         # 垂直边缘检测
    ker2 = np.array([[-1,-1,-1],[0,0,0],[1,1,1]])         # 水平边缘检测
    ker3 = np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])
    
    # 进行卷积计算(目标,卷积核,填充方式,卷积类型)
    p1 = convolve2d(pg,ker1,boundary='symm',mode='same')
    p2 = convolve2d(pg,ker2,boundary='symm',mode='same')
    p2 = convolve2d(pg,ker3,boundary='symm',mode='same')

     5. 安装Tensorflow,keras

     

    * 虽然在pycharm中可以显示包,但似乎缺少了某些配置并不能调用,正在尝试修复。

    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
    ks=(4,4)  #使用4x4的卷积核
    # 建立模型
    model=Sequential()
    # 卷积层1
    model.add(Conv2D(filters=16,kernel_size=ks,padding="same",input_shape=(8,8,1),activation='relu'))
    #第一层输如数据的shape要指定外,其他层的数据shape框架会自动推导
    # 池化层1
    model.add(MaxPool2D(pool_size=(2,2)))
    # Drop层 防止过拟合
    model.add(Dropout(0.25))
    # 卷积层2
    model.add(Conv2D(filters=32,kernel_size=ks,padding='same',activation='relu'))
    # 池化层2
    model.add(MaxPool2D(pool_size=(2,2)))
    # Drop层 防止过拟合
    model.add(Dropout(0.25))
    # 卷积层3
    model.add(Conv2D(filters=64,kernel_size=ks,padding='same',activation='relu'))
    # 卷积层4
    model.add(Conv2D(filters=128,kernel_size=ks,padding='same',activation='relu'))
    # 池化层3
    model.add(MaxPool2D(pool_size=(2,2)))
    # Drop层 防止过拟合
    model.add(Dropout(0.25))
    # 平坦层
    model.add(Flatten())
    # 全连接层
    model.add(Dense(128,activation='relu'))
    # Drop层 防止过拟合
    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

  • 相关阅读:
    欧几里得证明$sqrt{2}$是无理数
    博弈论和三人决斗
    数学证明和科学证明
    导电塑料入梦来
    宋朝记载的超新星爆发和光速不变
    混合溶剂中的高分子刷
    2015年总结和2016年展望
    一步一步学Silverlight 2系列(32):图形图像综合实例—“功夫之王”剧照播放
    一步一步学Silverlight 2系列(31):图形图像综合实例—实现水中倒影效果
    一步一步学Silverlight 2系列(30):使用Transform实现更炫的效果(下)
  • 原文地址:https://www.cnblogs.com/HvYan/p/13051269.html
Copyright © 2020-2023  润新知