卷积神经网络
卷积神经网络 通用用卷积神经网络来处理图片,先对图片经过几个卷积和池化层,再经过几个全连接层(全连接层就是普通的神经网络层) 卷积层获取特征,池化层突出特征 卷积网络需
卷积神经网络
通用用卷积神经网络来处理图片,先对图片经过几个卷积和池化层,再经过几个全连接层(全连接层就是普通的神经网络层)
卷积层获取特征,池化层突出特征
卷积网络需要训练的参数较少,神经网络有参数共享和稀疏连接的特性
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
以上就是(卷积神经网络)全部内容,收藏起来下次访问不迷路!