Tensorflow利用卷積神經網絡實現圖片分類


tensorflow搭建卷積神經網絡非常簡單,我們使用卷積神經網絡對fashion mnist數據集進行圖片分類,首先導包:

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

導入數據集:

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

查看圖片的shape維度:

train_image.shape

輸出:

(60000, 28, 28)

由於我們卷積神經網絡需要的是四維的數據,也就是一共需要有四個維度,分別是(圖片,橫向像素,豎直方向的像素,channel)。

這個數據集里面的圖像均為三維的矩陣,且為黑白圖片,因此channel為1,如果是RGB的彩色圖片的話,channel為3.因此我們把三維的圖片變成4維的圖片,利用numpy即可:

train_image=np.expand_dims(train_image,-1)
test_image=np.expand_dims(test_image,-1)

然后開始搭建卷積神經網絡,我試了試自己的這個模型,做出來的結果甚至比Yun lekun提出的lenet5神經網絡更好。搭建神經網絡的架構如下:

model.add(tf.keras.layers.Conv2D(32,(3,3),
                                 input_shape=train_image.shape[1:],
                                 activation="relu",
                                 padding="same"))
#添加maxpooling層是因為在之后同樣的卷積核能夠提取的特征更多,增大“感受野”
model.add(tf.keras.layers.MaxPool2D())
model.add(tf.keras.layers.Conv2D(64,(3,3),activation="relu"))
model.add(tf.keras.layers.GlobalAveragePooling2D())
model.add(tf.keras.layers.Dense(10,activation='softmax'))

編譯模型:

model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
              loss="sparse_categorical_crossentropy",
              metrics=['acc']
)

得到圖像的分類結果,並繪制loss函數變化的圖像,用來分析是否模型是否過擬合:

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

得解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM