zoukankan      html  css  js  c++  java
  • 机器学习12卷积神经网络

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

    答:

    人工智能是目的,是结果;机器学习、深度学习是方法,是工具。机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。

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

      卷积神经网络也是通过一层一层的节点组织起来的。和全连接神经网络一样,卷积神经网络中的每一个节点就是一个神经元。在全连接神经网络中,每相邻两层之间的节点都有边相连,于是会将每一层的全连接层中的节点组织成一列,这样方便显示连接结构。而对于卷积神经网络,相邻两层之间只有部分节点相连,为了展示每一层神经元的维度,一般会将每一层卷积层的节点组织成一个三维矩阵。

           除了结构相似,卷积神经网络的输入输出以及训练的流程和全连接神经网络也基本一致,以图像分类为列,卷积神经网络的输入层就是图像的原始图像,而输出层中的每一个节点代表了不同类别的可信度。这和全连接神经网络的输入输出是一致的。类似的,全连接神经网络的损失函数以及参数的优化过程也都适用于卷积神经网络。因此,全连接神经网络和卷积神经网络的唯一区别就是神经网络相邻两层的连接方式

    3.理解卷积计算。

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

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

    digits = load_digits()

    import pandas as pd
    import numpy as np
    #读取load_digits()数据集
    data = pd.read_csv('test.csv', header=None)
    
    #读取卷积核权重矩阵
    data1 = pd.read_csv('test1.csv', header=None)
    data = data.values
    data1 = data1.values
    type(data)
    
    #存储特征映射内容
    test = np.zeros((len(data) - len(data1) + 1, len(data[0]) - len(data1[0]) + 1))
    
    #开始计算
    for i in range(0, len(data) - len(data1)+1):
        for y in range(0, len(data[0]) - len(data1[0]) + 1):
            # i=4
            # y=0
            #i行,y列
            x = data[i:i + len(data1), y:y + len(data1)]
            print(x)
            test[i, y] = np.sum(x * data1)
    print(test)

    数据集

    卷积核权重矩阵

     计算结果:

    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
    import matplotlib.pyplot as plt
    from scipy.signal import convolve2d
    import numpy as np
    #读取图片
    image = Image.open(r"C:UsersChen ZhenruiPycharmProjectsuntitled机器学习	est.jpg")
    plt.imshow(image)
    plt.show()
    
    #convert转换为灰色图像
    p = image.convert("L")
    plt.imshow(p)
    plt.show()
    
    #卷积核
    a1=np.array([[-1,0,1],[-2,0,2],[-1,0,1]]) #垂直边缘
    a2=np.array([[1,1,1],[0,0,0],[-1,-1,-1]]) #水平边缘
    a3=np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]]) #浮雕
    
    #卷积计算
    c1=convolve2d(p,a1,boundary='symm',mode='same')
    c2=convolve2d(p,a2,boundary='symm',mode='same')
    c3=convolve2d(p,a3,boundary='symm',mode='same')
    
    #原图
    plt.imshow(c1)
    plt.show()
    
    plt.imshow(c2)
    plt.show()
    
    plt.imshow(c3)
    plt.show()

    原图

     灰度处理

     垂直

    水平

     浮雕

  • 相关阅读:
    用Apache Kafka构建流数据平台
    kafka与传统的消息中间件对比
    Azkaban简介和使用
    kettle初探
    less命令
    spring扩展点之二:spring中关于bean初始化、销毁等使用汇总,ApplicationContextAware将ApplicationContext注入
    Spring 注释标签@Resource @Autowired 和@Inject的区别
    【MyEclipse 2015】 逆向破解实录系列【2】(纯研究)
    HDOJ 5073 Galaxy 数学 贪心
    windows 8.0上eclipse 4.4.0 配置centos 6.5 上的hadoop2.2.0开发环境
  • 原文地址:https://www.cnblogs.com/renshenbenzuig/p/13039459.html
Copyright © 2011-2022 走看看