• 卷积神经网络结构


    一、各层的意义

    输入层:将每个像素代表一个特征点输入到网络中

    卷积层:卷积运算的主要目的是使原信号特征增强,并降低噪音

    降采样层:降低网络训练参数及模型的过拟合程度

    全连接层:对生成的特征进行加权

    二、全连接层与卷积层的参数比较

    局部连接即每个卷积的输出只是与卷积核大小的部分有联系,而全连接层的每个输出都是全部输入的运算

    三、为什么使用多通道卷积

    四、池化

    平均池化:对池化区域内的像素点取均值,这种方法得到的特征数据对背景信息更加敏感

    最大池化:对池化区域内的所有像素点取最大值,这种方法得到的特征对纹理特征信息更加敏感

     通过池化,忽略不重要的特征,通过多通道卷积,提取不同的特征

    #input_shape只在第一个卷积层加即可,padding:same表示边缘填充,valid表示边缘不填充
    model.add(tf.keras.layers.Conv2D(filters = 64, kernel_size = (3, 3), input_shape = (32, 32, 3),activation = 'relu', padding = 'same' )
    #每次有百分之三十的卷积核不参与调整,防止过拟合
    model.add(tf.keras.layers.Dropout(rate = 0.3))
    
    model.add(tf.keras.layers.MaxPooling2D(pool_size = (2, 2)))

     CIFAR10

    import tensorflow as tf
    import numpy as np
    
    cifar10 = tf.keras.datasets.cifar10
    
    (train_x, train_y), (test_x, test_y) = cifar10.load_data()
    
    model = tf.keras.models.Sequential()
    model.add(tf.keras.layers.Conv2D(32, (3, 3), input_shape = (32, 32, 3), activation = 'relu', padding = "same"))
    model.add(tf.keras.layers.Dropout(0.3))
    
    model.add(tf.keras.layers.MaxPooling2D((2, 2)))
    
    model.add(tf.keras.layers.Flatten(input_shape = (32, 32)))
    model.add(tf.keras.layers.Dense(10, activation = 'softmax'))
    
    
    model.compile(optimizer = 'adam', loss =  "sparse_categorical_crossentropy", metrics = 'accuracy')
    model_h = model.fit(train_x, train_y, epochs =  5, validation_split = 0.2, batch_size = 100, verbose = 2)
    pred = model.predict_classes(test_x)
    print(pred[0])
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    web控件文本框不响应回车事件
    封装的概念
    js 中eval的使用
    C#调用存储过程
    javascript和C#对URI编码
    比较好的博客日历控件
    扩展方法实例
    C# 集合类
    数据访问层的几种数据库连接方式
    aspnetpage分页控件的使用
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15084275.html
Copyright © 2020-2023  润新知