tensoflow入門實操計算機視覺介紹
阿新 • • 發佈:2021-01-21
技術標籤:tesorflow入門實操
tensoflow入門實操計算機視覺介紹
import tensorflow as tf
from tensorflow import keras
fashion_mnist = keras.datasets.fashion_mnist#匯入資料集
(train_images,train_labels),(test_images,test_labels) = fashion_mnist.load_data()
print(train_images.shape)#60000張,每張28*28
import matplotlib.pyplot as plt
plt. imshow(train_images[0])
#全連線網路模型
model = keras.Sequential([
keras.layers.Flatten(input_shape = (28,28)),
keras.layers.Dense(128,activation=tf.nn.relu),
keras.layers.Dense(10,activation = tf.nn.softmax)
])
#model = keras.Sequential()
#model.add(keras.layers.Flatten(input_shape=(28,28)))
#model.add(keras.layer.Dense(128,activation =tf.nn.relu))
#model.add(keras.layer.Dense(10,activation= tf.nn.softmax))
model.summary()#100480 784畫素*128神經元=100352(因為輸入層和中間層每層都有一個bias,加上就是100480)
#1290 = (128+1)*10
#Adam()一種經常使用的優化辦法
#train_label[0] = 9,使用sparse_categorical_crossentropy作為損失函式,若[0,0,0,0,0,0,0,0,0,0,0,1](稱為ont-hot)則使用categorical_crossentropy作為損失函式
model.compile(optimizer = tf.optimizers.Adam(),loss = tf.losses.sparse_categorical_crossentropy,metrics=['accuracy'])
model.fit(train_images,train_labels,epochs=5)
#為了提高模型精確度,可以通過對原始資料進行歸一化處理再進行模型擬合
train_images = train_images/255
model.compile(optimizer = tf.optimizers.Adam(),loss = tf.losses.sparse_categorical_crossentropy,metrics=['accuracy'])
model.fit(train_images,train_labels,epochs=5)
#評估模型
test_images_scaled = test_images/255
model.evaluate(test_images_scaled,test_labels)
#預測
#教程中沒有加reshape,會報錯
model.predict([[test_images[0].reshape(1,28,28,1)/255]])
神經元網路不是訓練越多越好,越多的話會出現過擬合,也就是說對所有訓練圖片識別很好,但對新圖片識別很差,可以通過對測試LOSS和訓練LOSS進行對比,出現分叉即過擬合,tensorflow中通過callback類進行判斷及時終止訓練