首頁>技術>

tensorflow 2系列02 影象分類(Image classification using TensorFlow 2.x)

本期文章是一個系列課程,本文是這個系列的第2篇複習筆記

(1)Build and train neural network models using TensorFlow 2.x

(2)Image classification

(3)Natural language processing(NLP)

(4)Time series, sequences and predictions

影象分類

影象分類在現有階段,幾乎全部是用神經網路來弄了,傳統的線性分類模型已經沒有了市場,特別是cnn的出現,真是大殺器一樣的存在,使得影象分類準確率提高了一個特別高的水平.

關於CNN(卷積神經)

cnn不是本文的重點,但稍微還是說一點,卷積主要是用來提提取特徵的,池化主要降維和特徵強化.具體可以參考文章 https://www.zhihu.com/question/49376084

tensorflow2中使用cnn

在tf2中使用cnn非常簡單,主要是在神經網路的輸入層構建時,使用cnn和池化做幾層的網路搭建,後面再使用傳統的Flatten層,Dense層,配合啟用函式,達到輸入一個機率值的目的.

程式碼實戰
# 卷積神經網路import matplotlib.pyplot as pltimport numpy as npimport tensorflow as tffrom tensorflow.python.keras.backend_config import epsilonif __name__ == "__main__":    (train_x,train_y),(test_x,test_y)=tf.keras.datasets.fashion_mnist.load_data()        model=tf.keras.models.Sequential([        tf.keras.layers.Conv2D(64,(3,3),activation=tf.nn.relu,input_shape=(28,28,1)),        tf.keras.layers.MaxPool2D(2,2),        tf.keras.layers.Conv2D(64,(3,3),activation=tf.nn.relu),        tf.keras.layers.MaxPool2D(2,2),        tf.keras.layers.Flatten(),        tf.keras.layers.Dense(128,activation=tf.nn.relu),        tf.keras.layers.Dense(10,activation=tf.nn.softmax)    ])    model.compile(optimizer="adam",loss=tf.keras.losses.sparse_categorical_crossentropy,metrics=["accuracy"])    model.fit((train_x/255).reshape(-1,28,28,1),train_y,epochs=2,)    model.evaluate((test_x/255).reshape(-1,28,28,1),test_y)        print(test_y[0])    print(np.argmax(model.predict((test_x[0]/255).reshape(-1,28,28,1))))    plt.imshow(test_x[0])
輸出效果總結進行特徵歸一化到0, 1之間,有利於加快訓練收斂速度和提高精度.上面的train_x/255就是為了歸一化模型的第一層一定要指定input_shape,如果是用tensorflow原生api,還得指定引數的shape,這裡是用了keras,幫我們自動推導了引數的shape損失函式的選擇,如果train_label是具體的值,預測的是機率,就選擇sparse這個開頭的損失函式.如果train label是one_hot值,就選擇不帶sparse的這個(categorical_crossentropy).這個keras的api中有詳細說明,具體後面會有再次關於損失函式的筆記,還是關於shape,輸入的資料是什麼shape,在預測階段也要保證相同的輸入shape,否則會報錯.具體的可以透過reshape來調整.神經網路主要資料和模型結構是關鍵.在資料(包含資料處理)相同的情況下,模型的結構決定了模型的精度.比如,一個簡單的二層(dense層,一個輸出層)就比cnn效果差

23
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • JavaScript物件 - 初識