TensorFlow——基本分類問(wèn)題

本文使用的數(shù)據(jù)集名為Fashion MNIST绝葡,是一個(gè)關(guān)于衣服的分類數(shù)據(jù)集。與MNIST手寫(xiě)數(shù)據(jù)集類似,都是作為圖片分類入門(mén)的新手?jǐn)?shù)據(jù)集榜旦,包含了70000張尺寸為28*28的黑白圖片,共有十個(gè)類別。

[站外圖片上傳中...(image-1f2f91-1537627931284)]

導(dǎo)入工具

# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras

# Helper libraries
import numpy as np
import matplotlib.pyplot as plt

print(tf.__version__)
1.10.1

下載數(shù)據(jù)

TensorFlow中包含了這個(gè)數(shù)據(jù)集的API,但是很尷尬踏兜,國(guó)內(nèi)的網(wǎng)絡(luò)很難順利地通過(guò)把這個(gè)數(shù)據(jù)集下載下來(lái)昔驱,所以這里需要自行下載數(shù)據(jù)。

from tensorflow.examples.tutorials.mnist import input_data
data = input_data.read_data_sets('data/fashion')

注意檢查下載的數(shù)據(jù)格式,如果通過(guò)TensorFlow的API下載面睛,獲得的是28*28的圖片格式數(shù)據(jù),但是自行下載有可能會(huì)下載到784長(zhǎng)度的一維數(shù)組格式的數(shù)據(jù)

探索數(shù)據(jù)

(train_images,train_labels) = data.train.images,data.train.labels
train_images.shape
(55000,784)

可以看到,雖然我的數(shù)據(jù)是從教程中提供的github地址下載的茵肃,但是數(shù)據(jù)集的長(zhǎng)度和圖片格式都與教程中有所不同。

查看數(shù)據(jù)

在開(kāi)始處理數(shù)據(jù)之前,先查看一下數(shù)據(jù)的形式

import matplotlib.pyplot as plt 
%matplotlib inline
plt.imshow(train_images[0].reshape(28,28))
plt.colorbar()
plt.grid(False)
Fashion MNIST圖片
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
train_images = train_images / 255.0
# test_images = test_images / 255.0
plt.figure(figsize=(10,10))
for i in range(25):
    plt.subplot(5,5,i+1)
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(train_images[i].reshape(28,28),cmap=plt.cm.binary)
    plt.xlabel(class_names[train_labels[i]])
Fashion MNIST圖片

建立序列模型并訓(xùn)練

這里使用了TensorFlow內(nèi)嵌的keras建立了包含兩個(gè)全連接層的神經(jīng)網(wǎng)絡(luò)镣丑,因?yàn)槭欠诸悊?wèn)題,所以最后一層使用了softmax作為激活函數(shù),spare_categorical_crossentropy為損失函數(shù)跟匆。

選錯(cuò)了損失函數(shù)或者激活函數(shù)都可能導(dǎo)致模型不收斂

from tensorflow import keras
import tensorflow as tf
model = keras.Sequential([
    keras.layers.Dense(128,activation=tf.nn.relu),
    keras.layers.Dense(10,activation=tf.nn.softmax)
])
model.compile(
    optimizer = keras.optimizers.Adam(lr=0.1),
    loss = 'sparse_categorical_crossentropy',
    metrics = ['accuracy']
)
model.fit(train_images,train_labels,batch_size=100,epochs=5)
Epoch 1/5
55000/55000 [==============================] - 6s 106us/step - loss: 0.5668 - acc: 0.7905
Epoch 2/5
55000/55000 [==============================] - 4s 77us/step - loss: 0.4308 - acc: 0.8414
Epoch 3/5
55000/55000 [==============================] - 4s 77us/step - loss: 0.3967 - acc: 0.8543
Epoch 4/5
55000/55000 [==============================] - 4s 77us/step - loss: 0.3856 - acc: 0.8589
Epoch 5/5
55000/55000 [==============================] - 4s 77us/step - loss: 0.3660 - acc: 0.8640

驗(yàn)證模型

test_images,test_labels = data.test.images,data.test.labels
test_images = test_images / 255.0
test_loss,test_acc = model.evaluate(test_images,test_labels)
print("Test accuracy:",test_acc)
10000/10000 [==============================] - 1s 77us/step
Test accuracy: 0.8496

預(yù)測(cè)數(shù)據(jù)

predictions = model.predict(test_images)

展示預(yù)測(cè)結(jié)果

def plot_image(i, predictions_array, true_label, img):
  predictions_array, true_label, img = predictions_array[i], true_label[i], img[i].reshape(28,28)
  plt.grid(False)
  plt.xticks([])
  plt.yticks([])
  
  plt.imshow(img, cmap=plt.cm.binary)

  predicted_label = np.argmax(predictions_array)
  if predicted_label == true_label:
    color = 'blue'
  else:
    color = 'red' # 預(yù)測(cè)錯(cuò)誤的以紅色標(biāo)注
  
  plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],
                                100*np.max(predictions_array),
                                class_names[true_label]),
                                color=color)

def plot_value_array(i, predictions_array, true_label):
  predictions_array, true_label = predictions_array[i], true_label[i]
  plt.grid(False)
  plt.xticks([])
  plt.yticks([])
  thisplot = plt.bar(range(10), predictions_array, color="#777777")
  plt.ylim([0, 1]) 
  predicted_label = np.argmax(predictions_array)
 
  thisplot[predicted_label].set_color('red')
  thisplot[true_label].set_color('blue')
num_rows = 5
num_cols = 3
num_images = num_rows*num_cols
plt.figure(figsize=(2*2*num_cols, 2*num_rows))
for i in range(num_images):
  plt.subplot(num_rows, 2*num_cols, 2*i+1)
  plot_image(i, predictions, test_labels, test_images)
  plt.subplot(num_rows, 2*num_cols, 2*i+2)
  plot_value_array(i, predictions, test_labels)
預(yù)測(cè)結(jié)果

原文地址:https://www.tensorflow.org/tutorials/keras/basic_classification

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末糖荒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖句喷,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祭饭,死亡現(xiàn)場(chǎng)離奇詭異寺鸥,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)填帽,“玉大人嘹悼,你說(shuō)我怎么就攤上這事限匣÷屯玻” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵藐翎,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上伴网,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好迹辐,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著染苛,像睡著了一般畔师。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天葱她,我揣著相機(jī)與錄音锤灿,去河邊找鬼状囱。 笑死叨粘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恕曲。 我是一名探鬼主播瞳秽,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了婆硬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤仇参,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后喂饥,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體捞高,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了月幌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片录语。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡氮趋,死狀恐怖啊犬,靈堂內(nèi)的尸體忽然破棺而出领斥,到底是詐尸還是另有隱情,我是刑警寧澤沃暗,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布月洛,位于F島的核電站,受9級(jí)特大地震影響孽锥,放射性物質(zhì)發(fā)生泄漏嚼黔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一惜辑、第九天 我趴在偏房一處隱蔽的房頂上張望唬涧。 院中可真熱鬧,春花似錦盛撑、人聲如沸碎节。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)狮荔。三九已至,卻和暖如春介粘,著一層夾襖步出監(jiān)牢的瞬間殖氏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工姻采, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雅采,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓慨亲,卻偏偏與公主長(zhǎng)得像婚瓜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子巡雨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容