【AI理論深度學習筆記 | 第20講:再談三大深度學習框架TensorFlow、Keras和PyTorch

      網友投稿 1044 2025-03-31

      1

      概述

      我們先來看一張柱狀圖,圖中顯示了2018年各主要深度學習框架的綜合得分排名情況:

      數據來源:https://www.kaggle.com/discdiver/deep-learning-framework-power-scores-2018

      可以看到:TensorFlow、Keras和PyTorch這三種框架分別位于排行榜前三位,其他小眾框架則影響力微弱,比如Theano雖然歷史悠久、但實在是太老了,開發團隊早已停止開發和維護了;MXNet雖然不錯,亞馬遜也在用,但相較于前三個確實小眾了很多;CNTK是微軟推出的深度學習計算框架,但一直一來所獲得的關注度也很有限;至于Caffe,由于其本身是由C++編寫,也提供了Python接口,但在最新的更新Caffe2中已經被整合進了PyTorch里面去了,所以直接用PyTorch替代即可。正是由于上述原因,筆者這里選擇TensorFlow、Keras和PyTorch作為本篇概述的主要內容。

      對于初次踏入深度學習的人員而言,選擇哪一門計算框架是一個值得思考的問題,包括小編自己也有這樣的疑問。通過這大半年以來的學習經驗,小編想說的是,如果是一定要選出一個框架作為你的深度學習入門工具,建議是Keras,Keras具備搭建神經網絡各個零部件高度集成的API,對新手非常友好,基于Keras進行一次快速的深度學習試驗幾乎是分分鐘的事情。相對熟練之后我的建議是不要繼續停留在Keras的舒適區,你應該繼續學習其他計算框架,無論是流行度第一的TensorFlow還是異軍突起的PyTorch,你都得學,包括小編自己,現在也在跟著PyTorch的文檔在深入學習。假如你只學了TensorFlow,有一個你非常感興趣的深度學習項目,結果對方是用PyTorch寫的,如果你一點也不懂PyTorch,豈不是很尷尬,再說PyTorch在2018年下半年在一段時間內的熱度已經趕超TensorFlow了。

      所以對于框架而言,筆者的建議在于:先選一門Keras作為入門,熟練之后直接學習TensorFlow和PyTorch,理論結合實踐,多動手,相信對于學習深度學習而言,工具不會是大問題。

      下面我們就再次單獨來看一下TensorFlow、Keras和PyTorch這三大深度學習計算框架。

      2

      TensorFlow

      作為Google開發維護的深度學習工具,TensorFlow應該是目前最為流行和使用率最高的深度學習計算框架了。它是用C ++ / Python編寫的,提供Python,R、Java,Go和JavaScript API。TensorFlow使用靜態計算圖,盡管最近發布的TensorFlow Fold庫也增加了對動態圖的支持。此外,從版本1.7開始,TensorFlow在動態執行方面采取了不同的步驟,并實現了可以立即評估Python代碼的急切執行,而無需構建圖形。

      另外TensorFlow也有著非常好的社區環境支持,你可以輕易的從網上找到很多有關TensorFlow使用教程、視頻,在線課程和教程等等。除了純粹的計算功能外,TensorFlow還提供了TensorBoard這樣的性能監控工具,它可以顯示計算圖,繪制關于模型訓練或推理執行的量化指標,并基本上提供調試和微調深度神經網絡所需的各種信息。

      TensorFlow雖然很棒,但對于初學者來說并不友好,初學者用TensorFlow來搭建神經網絡需要一個思維轉變,總體來說TensorFlow沒那么容易。

      基于TensorFlow搭建神經網絡的簡單例子:

      import numpy as np

      import tensorflow as tf data_size = 10

      input_size = 28 * 28

      hidden1_output = 200

      output_size = 1

      data = tf.placeholder(tf.float32, shape=(data_size, input_size)) target = tf.placeholder(tf.float32, shape=(data_size, output_size)) h1_w1 = tf.Variable(tf.random_uniform((input_size, hidden1_output))) h2_w1 = tf.Variable(tf.random_uniform((hidden1_output, output_size))) hidden1_out = tf.maximum(tf.matmul(data, h1_w1), 0) target_ = tf.matmul(hidden1_out, h2_w1) loss = tf.losses.mean_squared_error(target_, target) opt = tf.train.GradientDescentOptimizer(1e-3) upd = opt.minimize(loss)with tf.Session() as sess: ? ?sess.run(tf.global_variables_initializer()) ? ?feed = {data: np.random.randn(data_size, input_size), ? ? ? ? ? ?target: np.random.randn(data_size, output_size)}

      for step in range(100): ? ? ? ?loss_val, _ = sess.run([loss, upd], feed_dict=feed)

      3

      Keras

      再來看Keras。

      Keras是一個高層神經網絡API,Keras由純Python編寫而成并基TensorFlow、Theano以及CNTK后端。所以我們也可以直接使用TensorFlow調用Keras。Keras 為支持快速實驗而生,能夠把你的想法迅速轉換為結果,Keras的主要優點如下:

      簡易和快速的原型設計(keras具有高度模塊化,極簡,和可擴充特性)

      支持CNN和RNN,或二者的結合

      無縫CPU和GPU切換

      Keras非常易于學習和使用。無論是初學者還是不打算進行復雜研究的高級深度學習研究員,筆者都建議你使用Keras。Keras的設計原則:

      用戶友好:用戶的使用體驗始終是我們考慮的首要和中心內容。Keras遵循減少認知困難的最佳實踐:Keras提供一致而簡潔的API, 能夠極大減少一般應用下用戶的工作量,同時,Keras提供清晰和具有實踐意義的bug反饋。

      模塊性:模型可理解為一個層的序列或數據的運算圖,完全可配置的模塊可以用最少的代價自由組合在一起。具體而言,網絡層、損失函數、優化器、初始化策略、激活函數、正則化方法都是獨立的模塊,你可以使用它們來構建自己的模型。

      易擴展性:添加新模塊超級容易,只需要仿照現有的模塊編寫新的類或函數即可。創建新模塊的便利性使得Keras更適合于先進的研究工作。

      與Python協作:Keras沒有單獨的模型配置文件類型(作為對比,caffe有),模型由python代碼描述,使其更緊湊和更易debug,并提供了擴展的便利性。

      將前面TensorFlow的例子再用Keras寫一遍如下:

      import numpy as np

      from keras.layers import Dense

      from keras.models import Sequential

      from keras.optimizers import SGD data_size = 10

      input_size = 28 * 28

      hidden1_output = 200

      output_size = 1

      data = np.random.randn(data_size, input_size) target = np.random.randn(data_size, output_size) model = Sequential() model.add(Dense(hidden1_output, ? ? ? ? ? ? ? ?input_shape=(input_size,), activation=tf.nn.relu)) model.add(Dense(output_size)) model.compile(loss='mean_squared_error', ? ? ? ? ? ? ?optimizer=SGD(lr=1e-3)) model.fit(data, target, epochs=100, batch_size=data_size)

      4

      PyTorch

      最后是PyTorch。

      PyTorch是一款可以媲美于 TensorFlow 優秀的深度學習計算框架,但又相比于 TensorFlow 在語法上更具備靈活性。PyTorch原生于一款小眾語言lua,而后基于python 版本后具備了強大的生命力。作為一款基于 python 的深度學習計算庫,PyTorch提供了高于 numpy 的強大的張量計算能力和兼具靈活度和速度的深度學習研究功能。

      PyTorch已經于今年10月份發布了1.0版本,標識著PyTorch正式走向了穩定可用階段。在最新的 ICLR 2019 提交論文中,提及TensorFlow的論文數量從228升到了266,而提及PyTorch的論文數量從 2018 年的 87 激增到了252。這也從側面說明PyTorch影響力今非昔比。

      基于PyTorch搭建神經網絡示例:

      import torch

      import torch.nn as nn

      import torch.nn.functional as fun data_size = 10

      input_size = 28 * 28

      hidden1_output = 200

      output_size = 1

      data = torch.randn(data_size, input_size) target = torch.randn(data_size, output_size) model = nn.Sequential( ? ?nn.Linear(input_size, hidden1_output), ? ?nn.ReLU(), ? ?nn.Linear(hidden1_output, output_size) ) opt = torch.optim.SGD(model.parameters(), lr=1e-3)

      for step in range(100): ? ?target_ = model(data) ? ?loss = fun.mse_loss(target_, target) ? ?loss.backward() ? ?opt.step() ? ?opt.zero_grad()

      【AI理論】深度學習筆記 | 第20講:再談三大深度學習框架TensorFlow、Keras和PyTorch

      最后的結論就是:對于TensorFlow、Keras和PyTorch這三種深度學習計算框架,大家最好都要學習!

      轉自:https://mp.weixin.qq.com/s/ul4deOMigf11LttiYk1A3Q

      EI 人工智能 深度學習 AI

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:虛擬化的本質
      下一篇:單元格輸入的數字,回車后就變成小數點后兩位了,真是抓狂,為什么WPS 會這種低級又浪費別人時間的錯誤
      相關文章
      亚洲国产日韩女人aaaaaa毛片在线 | 亚洲色成人中文字幕网站| 久久精品国产亚洲AV忘忧草18| 亚洲AV无码久久寂寞少妇| 亚洲精品少妇30p| 亚洲精品自在在线观看| 中文字幕日韩亚洲| 国产亚洲成人在线播放va| 亚洲中文字幕伊人久久无码| 亚洲精品和日本精品| 亚洲午夜精品久久久久久浪潮| 亚洲精品成人久久久| 爱情岛论坛网亚洲品质自拍| 亚洲国产精品碰碰| 亚洲伊人成无码综合网 | 91亚洲va在线天线va天堂va国产| 亚洲福利在线视频| 2022年亚洲午夜一区二区福利 | 亚洲午夜电影在线观看高清| 亚洲国产亚洲综合在线尤物| 亚洲一区二区三区四区视频| 精品丝袜国产自在线拍亚洲| 亚洲性色AV日韩在线观看| 亚洲成a人片在线不卡一二三区| 亚洲国产AV一区二区三区四区| 久久亚洲精品11p| 亚洲精品NV久久久久久久久久| 亚洲男人在线无码视频| 亚洲一区无码中文字幕| 亚洲成AV人片在线观看无码| 亚洲专区在线视频| 亚洲av无码片在线观看| 亚洲午夜无码久久久久小说| 色天使色婷婷在线影院亚洲| 亚洲人午夜射精精品日韩| 久久亚洲国产欧洲精品一| 亚洲视频免费播放| 亚洲性色AV日韩在线观看| 亚洲 综合 国产 欧洲 丝袜| 亚洲综合色自拍一区| 亚洲丝袜美腿视频|