Tensorflow2.0基础-笔记- CNN进行Mnist数据分类

import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np

fashion_mnist=keras.datasets.fashion_mnist
(train_images,train_labels),(test_images,test_labels)=fashion_mnist.load_data()

train_images=np.expand_dims(train_images,-1)
test_images=np.expand_dims(test_images,-1) #扩展第4维,要保存通道编号

model=tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(64,(3,3),padding='same',input_shape=(28,28,1),activation='relu'))
model.add(tf.keras.layers.MaxPool2D())
model.add(tf.keras.layers.Conv2D(128,(3,3),padding='same',activation='relu'))
model.add(tf.keras.layers.MaxPool2D())
model.add(tf.keras.layers.GlobalAveragePooling2D())
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(128,activation='relu'))
model.add(tf.keras.layers.Dense(10,activation='softmax'))
model.summary()

model.compile(
     optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['acc']
)

history=model.fit(train_images,train_labels,epochs=30,validation_data=(test_images,test_labels))

plt.plot( history.epoch, history.history.get('acc'),label='acc')
plt.plot( history.epoch, history.history.get('val_acc'),label='val_acc')
plt.legend()

plt.plot( history.epoch, history.history.get('loss'),label='loss')
plt.plot( history.epoch, history.history.get('val_loss'),label='val_loss')
plt.legend()

重点代码说明:

tf.keras.layers.Conv2D(64,(3,3),padding='same',input_shape=(28,28,1),activation='relu'))
Conv2D是进行一层卷积操作。

参数padding的两个选择:same与valid模式的区别:在卷积时,如果input与filter卷积时存在残余行列时,valid模式下会自动抛弃剩下没有卷积内容,而same模式下会自动边界填充,边界外填充0,满足卷积条件。

train_images=np.expand_dims(train_images,-1),原始数据为255*255的矩阵,在进行卷积时,一个卷积核会重新得到一个矩阵。多个卷积核就得到多个矩阵。所以先将维度扩充。最后一个维度保留为卷积核的ID,一个矩阵经过多个卷积核操作之后就需要保留原始的二维矩阵在加上一个唯一id来表明时不同的卷积核操作的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二流子学程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值