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()
得解,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/10854.html
標籤:其他
上一篇:NLP中的標識化
下一篇:求windriver 序列號
