iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 3
0
Google Developers Machine Learning

透視Google Machine Learning的奧秘系列 第 3

[Day03] How Google does Machine Learning介紹

  • 分享至 

  • xImage
  •  

機器學習在GCP上運作的流程

第一堂課一開始先帶你認識機器學習在GCP平台上是如何運用的,它可以幫助我們解決哪些問題?就如同標題所寫,這節的重點在於機器學習在Google上的應用,將會協助你掌握像是BigQuery和Tensorflow等機器學習關鍵技術,讓使用者學會建立機器學習模型,應用在工作上或是推動你的公司轉型,機器學習在GCP上運作的流程大致上可以用這張圖表示:
機器學習在GCP上運作的流程

1.了解機器學習如何在google上運作
2.學習用Tensorflow來試著建立你的機器學習模型
3.進行機器學習的特徵工程
4.以分佈式的方式端到端建立機器學習模型
5.機器學習的應用技巧,運用在處理圖像或文本、序列模型或是分類模型,甚至是建立個性化推薦系統等

一開始建立模型時效果比較不好,在這當中還會做特徵工程、調參數提高模型準確率。

而為什麼是運用Tensorflow建立機器學習模型我想大家應該都知道Tensorflow是Google大腦團隊開發的,許多Google的應用程式都有用到它,那Tensorflow跟我們平常聽到的keras和pytorch有什麼區別?我該用哪一種?我們來比較一下。

Tensorflow

Tensorflow使用開源的方式讓大家都能使用,加速整個深度學習的發展,Tensorflow可以使用在CPU、GPU、TPU上面,Tensorflow是利用資料流程圖來表達數值運算的開放式原始碼函式庫,可以拆分成Tensor與Flow兩種來解釋:

  • Tensor:張量,是一個n維度的陣列或列表,一維Tensor是向量,二維Tensor是矩陣
  • Flow:指Graph運算過程中的資料流

運作方式是先建立運算圖再進行運算。
Tensorflow流程圖

hello world

import tensorflow as tf
hello = tf.constant('Hello World')
sess = tf.Session()
sess.run(hello)

兩個矩陣相乘

import tensorflow as tf
c = tf.constant([[1.0, 2.0], [3.0, 4.0]])
d = tf.constant([[1.0, 1.0], [0.0, 1.0]])
e = tf.matmul(c, d)
with tf.Session() as sess:
  result = sess.run(e)
print(result)

Keras

Keras也是和Tensorflow在同一年出現,它可以接合Tensorflow或Theano等等深度學習框架後端,簡單直觀易上手的特性深受大眾喜愛,使用者很容易用幾行程式就能建立神經網路,相比Tensorflow來得簡單許多。

from keras.models import Sequential
from keras.layers import Dense, Activation
model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))
model.compile(optimizer='rmsprop',
              loss='mse')

Pytorch

有人說Tensorflow太複雜, 一個神經網路模型需要大量代碼才能寫好,運算圖的邏輯複雜,需要花費許多力氣才能弄懂,Keras雖然容易使用但是想要自定義太難,那我選擇折衷方案Pytorch好了,Pytorch也是近年正在崛起的深度學習框架,提供使用者相對低層的環境,使用者可以自由的自定義層和查看入數值優化任務的底層,這樣比較彈性的做法讓難易度和程式的可讀性介於Tensorflow和Keras之間,而且也有大量的社群支援文檔和討論區。

class Net(nn.Module):
    def __init__(self):
    super(Net, self).__init__() 
    self.conv1 = nn.Conv2d(3, 32, 3) 
    self.conv2 = nn.Conv2d(32, 16, 3) 
    self.fc1 = nn.Linear(16 * 6 * 6, 10) 
    self.pool = nn.MaxPool2d(2, 2) 
    def forward(self, x): 
    x = self.pool(F.relu(self.conv1(x))) 
    x = self.pool(F.relu(self.conv2(x))) 
    x = x.view(-1, 16 * 6 * 6) 
    x = F.log_softmax(self.fc1(x), dim=-1) 
    return x 
model = Net()

但這不代表說Tensorflow不好用,或是用Pytorch比較好,使用每一種框架都有它的優缺點,這就要端看使用者今天所要開發的項目是大型專案還是小應用,建議初學者可以先用Keras上手,等到建立模型和深度學習神經網路相關概念熟悉後再使用Tensorflow就比較容易上手。

這次的線上課程主要是用到Tensorflow建立機器學習模型,之後的課程也會慢慢介紹到它,那我們就拭目以待囉!

參考資料與圖片來源


上一篇
[Day02] 認識 ML Study Jam 機器學習培訓計劃
下一篇
[Day04] 機器學習流程與架構、Google產品是如何運用機器學習的?
系列文
透視Google Machine Learning的奧秘30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言