• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python深度学习之实现卷积神经网络

    一、卷积神经网络

    Yann LeCun 和Yoshua Bengio在1995年引入了卷积神经网络,也称为卷积网络或CNN。CNN是一种特殊的多层神经网络,用于处理具有明显网格状拓扑的数据。其网络的基础基于称为卷积的数学运算。

    卷积神经网络(CNN)的类型

    以下是一些不同类型的CNN:

    二、网络架构

    以下是CNN中不同层的网络架构:

    CNN架构的完整概述

    三、卷积

    卷积是对名为fg的两个函数的数学计算,得出第三个函数(f * g)。第三个功能揭示了一个形状如何被另一个形状修改。其数学公式如下:

    h ( x , y ) = f ( x , y ) ∗ g ( x , y ) h(x,y)=f(x,y)*g(x,y) h(x,y)=f(x,y)∗g(x,y)

    卷积有几个非常重要的概念:遮罩。

    图中的黄色的部分的就是遮罩

    四、卷积层

    卷积层是CNN的核心构建块。CNN是具有一些卷积层和其他一些层的神经网络。卷积层具有几个进行卷积运算的过滤器。卷积层应用于二维输入,由于其出色的图像分类工作性能而非常著名。它们基于具有二维输入的小核k的离散卷积,并且该输入可以是另一个卷积层的输出。

    五、在Keras中构建卷积层

    from keras.models import Sequential
    from keras.layers.convolutional import Conv2D
    model = Sequential()
    model.add(Conv2D(32, (3, 3), input_shape=(32, 32, 3), padding='same', activation='relu'))
    

    上面的代码实现说明:

    接下来,使用不同的参数值构建一个卷积层,如下所示

    六、池化层

    池化层它的功能是减少参数的数量,并减小网络中的空间大小。我们可以通过两种方式实现池化:

    上图显示了带有步幅为2的2X2滤波器的MaxPool池化层。

    在Keras中实现Max Pool层,如下所示:

    model.add(MaxPooling2D(pool_size =(2,2)))

    七、全连接层

    全连接层是确定最终预测的所有输入和权重的总和,代表最后一个合并层的输出。它将一层中的每个神经元连接到另一层中的每个神经元

    全连接层的主要职责是进行分类。它与softmax激活函数一起使用以得到结果。

    用于多类的激活函数是softmax函数,该函数以0和1(总计为1)的概率对完全连接的层进行规范化。

    带有非线性函数“ Softmax”的Keras代码如下:

    model.add(Dense(10, activation='softmax'))

    八、Python实现卷积神经网络

    环境Google Colab

    导入所有必需的库

    import numpy as np
    import pandas as pd
    from keras.optimizers import SGD
    from keras.datasets import cifar10
    from keras.models import Sequential
    from keras.utils import np_utils as utils
    from keras.layers import Dropout, Dense, Flatten
    from keras.layers.convolutional import Conv2D, MaxPooling2D
    

    加载cifar10数据:

    (X, y), (X_test, y_test) = cifar10.load_data()
    # 规范化数据
    X,X_test = X.astype('float32')/ 255.0,X_test.astype('float32')/ 255.0
    

    转换为分类:

    y,y_test = utils.to_categorical(y,10),u.to_categorical(y_test,10)

    初始化模型:

    model = Sequential()

    使用以下参数添加卷积层:

    model.add(Conv2D(32, (3, 3), input_shape=(32, 32, 3), padding='same', activation='relu'))
    # Dropout
    model.add(Dropout(0.2))
    # 添加另一个卷积层 padding ='valid'表示输出尺寸可以采用任何形式
    model.add(Conv2D(32,(3,3),activation ='relu',padding ='valid'))
    # 添加一个最大池化层
    model.add(MaxPooling2D(pool_size =(2,2)))
    # 展平
    model.add(Flatten())
    # Dense层 隐藏单元数为521
    model.add(Dense(512, activation='relu'))
    # Dropout
    model.add(Dropout(0.3))
    #output 
    model.add(Dense(10, activation='softmax'))
    # 编译模型 激活器选择SGD
    model.compile(loss='categorical_crossentropy',             optimizer=SGD(momentum=0.5, decay=0.0004), metrics=['accuracy'])
    

    25个epochs

    model.fit(X, y, validation_data=(X_test, y_test), epochs=25,          batch_size=512)

    九、总结

    卷积神经网络是一种特殊的多层神经网络,主要用于提取特征。CNN使用称为卷积和池化的两个操作将图像缩小为其基本特征,并使用这些特征适当地理解和分类图像

    到此这篇关于Python深度学习之实现卷积神经网络的文章就介绍到这了,更多相关Python实现卷积神经网络内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • python 使用Tensorflow训练BP神经网络实现鸢尾花分类
    • python神经网络编程之手写数字识别
    • Python利用numpy实现三层神经网络的示例代码
    • python机器学习之神经网络
    • Python如何使用神经网络进行简单文本分类
    • Python创建简单的神经网络实例讲解
    • 如何用Python 实现全连接神经网络(Multi-layer Perceptron)
    • Python实现Keras搭建神经网络训练分类模型教程
    • python神经网络编程实现手写数字识别
    • python实现BP神经网络回归预测模型
    • 用python搭建一个花卉识别系统
    上一篇:python opencv通过4坐标剪裁图片
    下一篇:Python OpenCV 彩色与灰度图像的转换实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python深度学习之实现卷积神经网络 Python,深度,学,习之,实现,