• 周六. 7 月 27th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

卷积神经网络结构

admin

11 月 28, 2021

一、各层的意义

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

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

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

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

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

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

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

四、池化

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

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

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

#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])
自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。

发表回复