Posts

Showing posts from June, 2018

Deep Learning 開發框架 Tensorflow vs Keras vs PyTorch 我應該學哪個?

Deep Learning 開發框架 Tensorflow vs Keras vs PyTorch 我應該學哪個? 簡答(2018-06-05) 基礎或入門:Keras。用 Keras 感覺一下 Deep Learning 的威力,Keras 的好處就是對於現成的架構、資料集可以很簡單幾十行程式碼就能實現,不過因為Keras是高層的API,無法方便的對架構微調、實驗新的架構,要做這些事請考慮用Pytorch或Tensorflow 研究與快速開發:Pytorch。 向人群靠攏:Tensorflow。因為開發的比PyTorch早,很多專案都是用Tensorflow寫的。 PyTorch與Tensorflow的設計原則差異 PyTorch與Tensorflow的設計原則上,就差在PyTorch是「Define-by-Run」而Tensorflow是「Define-and-Run」。 兩者各是什麼意思,而實驗寫作起來又會有什麼差呢?要回答這個問題,我們直接以有DL界Hello World的MNIST為範例。 PyTorch MNIST Tensorflow MNIST 在看PyTorch MNIST時,你可以用一般解讀Python程式的順序: Line 109 : main() Line 58 : def main () : Line 104 : model = Net().to(device) #定義模型,這時會呼叫class Net(nn.Module)的__init__函式,初始化網路架構 Line 104 : train(args, model, device, train_loader, optimizer, epoch) #把模型丟進train函式裡 Line 27 : def train (args, model, device, train_loader, optimizer, epoch) : Line 32 : output = model(data) #實際把data輸入模型當中,這時會呼叫class Net(nn.Module)的forward函式,計算完網路forward後回傳softmax結果 … 看完這個流程,你或許會認為,這樣的流程不是理所當然嗎? 我們再來看Tenso