Fashion MNIST 数据集分类训练

首先之前的文章记录了MNIST简单的分类玩法。目前这个以及没有挑战性,作为它的代替者Fashion MNIST 。我们当然要玩一玩了

它长这样,同样有10类。和MNIST分类图片大小张数都一样

实现代码:本人用jupyter。上篇博文发的安装的tf2.6.0环境下写的

import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#首先导入所需包
#加载数据集,这里可以自己引入,不需要下载,为了速度快,可以下载好几个文件,放到对应jupyter存放文件位置,本人放的看下面图,文件评论里有分享
(train_image, train_lable), (test_image, test_label) = tf.keras.datasets.fashion_mnist.load_data()

#下面不是必须的,这个是看看数据集里内容
train_image.shape,train_lable.shape,test_image.shape, test_label.shape
plt.imshow(train_image[1])

#接下来归一化
train_image = train_image/255
test_image = test_image/255        #归一化
#创建模型,此部分可以根据自己增加层数等搞复杂点
model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))  
# 28*28 拉平
model.add(tf.keras.layers.Dense(128, activation='relu')) 
# 128个隐藏层单元个数,太大容易过拟合,太小容易遗漏信息
model.add(tf.keras.layers.Dense(10, activation='softmax'))
#输出层,10个概率
model.summary()

'''
model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))  # 28*28
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(10, activation='softmax'))
'''

#最后选择优化器adam,损失函数
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',  
              metrics=['acc']
)
#开始训练,这个我用epochs=5。50的时候可以达到96%多
model.fit(train_image, train_lable, epochs=5)

 数据集有60000张28*28的训练集,和10000张测试集

取出训练集的第二张看看是这个样子

 模型内容这样:

 加了隐藏层模型内容这样:

 5个epochs时准去率acc=89.18%

  50个epochs时准去率acc=96.76%

 附加:完整干净的百分之96.75的简单的代码

import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

(train_image, train_lable), (test_image, test_label) = tf.keras.datasets.fashion_mnist.load_data()

train_image = train_image/255
test_image = test_image/255        #归一化

model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))  # 28*28 拉平
model.add(tf.keras.layers.Dense(128, activation='relu')) # 128个隐藏层单元个数
model.add(tf.keras.layers.Dense(10, activation='softmax'))#输出层,10个概率

model.summary()

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

model.fit(train_image, train_lable, epochs=50)

猜你喜欢

转载自blog.csdn.net/m0_63172128/article/details/124340008