当前位置:首页 > 知识 > 

卷积神经网络

卷积神经网络

卷积神经网络 通用用卷积神经网络来处理图片,先对图片经过几个卷积和池化层,再经过几个全连接层(全连接层就是普通的神经网络层) 卷积层获取特征,池化层突出特征 卷积网络需

卷积神经网络

通用用卷积神经网络来处理图片,先对图片经过几个卷积和池化层,再经过几个全连接层(全连接层就是普通的神经网络层)

卷积层获取特征,池化层突出特征

卷积网络需要训练的参数较少,神经网络有参数共享和稀疏连接的特性

import tensorflow as tf

import numpy as np

from tensorflow import keras

mnist = tf.keras.datasets.fashion_mnist

(training_images,training_labels),(test_images,test_labels)=mnist.load_data()

## 打印数据的维度信息

print(training_images.shape)

print(training_labels.shape)

print(test_images.shape)

print(test_labels.shape)

## 数据处理后再打印信息,明确指定维度,防止出错

training_images=training_images.reshape(60000,28,28,1)

training_images=training_images/255.0

test_images=test_images.reshape(10000,28,28,1)

test_images=test_images/255.0

print(training_images.shape)

print(training_labels.shape)

print(test_images.shape)

print(test_labels.shape)

# 网络模型设置 Conv-MaxPoolingConv-MaxPooling-Flatten-Dense-Dense

model = keras.Sequential([

keras.layers.Conv2D(64,(3,3),activation=relu,input_shape=(28,28,1)),

keras.layers.MaxPooling2D(2,2),

keras.layers.Conv2D(64,(3,3),activation=relu),

keras.layers.MaxPooling2D(2,2),

keras.layers.Flatten(),

keras.layers.Dense(128,activation=tf.nn.relu),

keras.layers.Dense(10,activation=tf.nn.softmax)

])

model@m.xunwangba.compile(optimizer=tf.optimizers.Adam(),loss=sparse_categorical_crossentropy)

# 打印模型信息

model.summary()

# 训练,评估

model.fit(training_images,training_labels,epochs=5)

test_loss = model.evaluate(test_images,test_labels)

summary输出

说明

第一层Conv2D

(28,28,1)经过 64个(3,3)过滤器,输出为(26,26,64)

训练参数个数(3*3*1+1)*64=640

第二层MaxPooling2D

(26,26,64) 经过最大池化,输出(13,13,64),池化层不需要训练参数

第三层Conv2D

(13,13,64)经过 64个(3,3)过滤器,输出为(11,11,64)

训练参数个数(3*3*64+1)*64=(3*3*64+1)*64=36928

第四层MaxPooling2D

(11,11,64) 经过最大池化,输出(5,5,64)

以下操作同普通神经网络

第五层Flatten

(5,5,64)展开为1600输出

第六层Dense

128和神经元的全连接层

训练的参数数量为1600*128+128=204 928

第七层Dense

softmax为激活函数的多分类任务

训练的参数数量为128*10+10

以上就是(卷积神经网络)全部内容,收藏起来下次访问不迷路!