iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 23
0
自我挑戰組

Machine Learning 學習筆記系列 第 23

[第23天] Tensorflow MNIST練習(1)

在練習手寫變識前先認識一下幾種常用的optimizer
參考網站1 參考網站2
Yes

幾種常用的optimizer數學的個過程就不推導在裡面都有詳盡解說。直接來看結果如下GIF圖:
https://images2018.cnblogs.com/blog/1192699/201803/1192699-20180311110108768-2113908893.gif
https://images2018.cnblogs.com/blog/1192699/201803/1192699-20180311105558593-251578131.gif
可以發現雖然SGD很常用但他可能會停在鞍點上,可以試看看其他optimizer~

MNIST 變識練習

MNIST是機器學習裡面非常重要的手寫數字資料集,如今車牌變識已經如此廣泛!這裡參考R 語言使用者的 Python 學習筆記tensorflow學習筆記莫凡的PYTHON跟著做一遍~

MNIST 資料集分成三個部分
55,000 筆的 training data (mnist.train)
10,000 筆的 test data (mnist.test)
5,000 筆的 validation data (mnist.validation)

首先先從scikit-learn網站載入MNIST:

from tensorflow.examples.tutorials.mnist import input_data
import numpy as np

# 讀入 MNIST
mnist = input_data.read_data_sets("MNIST_data/", one_hot = True)
x_train = mnist.train.images
y_train = mnist.train.labels
x_test = mnist.test.images
y_test = mnist.test.labels

# 檢視結構
print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)
print("---")

# 檢視一個觀測值
#print(x_train[1, :])
print(np.argmax(y_train[1, :])) # 第一張訓練圖片的真實答案

#3

把第一張圖片畫出來

from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline

# 讀入 MNIST
mnist = input_data.read_data_sets("MNIST_data/", one_hot = True)
x_train = mnist.train.images

# 印出來看看
first_train_img = np.reshape(x_train[1, :], (28, 28))
plt.matshow(first_train_img, cmap = plt.get_cmap('gray'))
plt.show()

https://ithelp.ithome.com.tw/upload/images/20181106/2011230337ZUhjV2xm.png

我們把 mnist.train.images 稱作一個 tensor(他其實就是一個 n-dimensional array.而 tensor + flow = tensorflow,也就是指這個 n-dimensional array 變化流動的意思)這個 tensor 形狀為 [55000, 784].第一個維度指的是圖片的 index,第二個則是每個圖片的 pixel 點,這個 pixel 點是一個介於 0 到 1 的值,來表示 pixel 點的強度.one_hot=Treu,因為每個 MNIST 中的圖片都有一個對應的 label 也就是從 0 到 9 的數值.在這裡每個 label 都是一個 one-hot vectors. one-hot vector 是指說只有一個維度是 1 其他都是 0.在這裡數字 n 表示一個只有在第 n 維度(從 0 開始)數字為 1 的 10 維向量.例如 label 3 的表示法就是([0, 0, 0, 1, 0, 0, 0, 0, 0, 0]).因此,mnist.train.labels 是一個 [55000, 10] 的矩陣.
https://ithelp.ithome.com.tw/upload/images/20181106/20112303qqBnNCAs9j.pnghttps://ithelp.ithome.com.tw/upload/images/20181106/20112303VsiGAjWthQ.png

Softmax

因為我們的輸出結果會是選1~9的機率看誰最大然後決定變識的結果,因此我們就需要用到softmax這個函數。這個函數先前在學感知器的時候已經有提過一次~
https://ithelp.ithome.com.tw/upload/images/20181106/201123031LSUft6znK.png

今天先學到這,明天再來train model~


上一篇
[第22天] Tensorflow 練習5
下一篇
[第24天] Tensorflow MNIST練習(2)
系列文
Machine Learning 學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
huang_doubaw
iT邦新手 5 級 ‧ 2019-12-13 20:59:50

不好意思 想請問假如不想用mnist 想用其他tensorflow datasets的資料庫的圖片做測試 有什麼方法可以導入 我目前是使用

import tensorflow_datasets as tfds
mnist_data = tfds.load("cars196")
mnist_train, mnist_test = mnist_data["train"], mnist_data["test"]

但是這樣好像抓不到維度

我要留言

立即登入留言