- 飛槳PaddlePaddle深度學習實戰
- 劉祥龍等編著
- 9字
- 2020-09-28 17:21:36
2.6 深度學習框架簡介
2.6.1 深度學習框架的優勢
深度學習憑借著強大的功能和出色的表現吸引了大量程序員前來學習,對于學習者來說除了硬件(GPU)的基礎環境外,與開發相關的軟件資源也尤為重要。在這一浪潮下各大公司和高校紛紛開源了自己的深度學習框架,這些深度學習框架被應用于計算機視覺、語音識別、自然語言處理等領域,并獲得了極好的效果。本節將首先為大家介紹深度學習框架的主要優勢。
1.簡化計算圖的搭建
計算圖(Computation Graph)可以看作一種描述函數的語言。圖中的節點代表函數的輸入,邊代表這個函數的操作。計算圖本質上是一個有向無環圖,它可以被用于大部分基礎表達式建模。
在深度學習框架中包含許多張量和基于張量的各種操作,隨著操作種類的增多,多個操作之間的執行關系變得十分復雜。計算圖可以更加精確地描述網絡中的參數傳播過程,自己編寫代碼來搭建計算圖需要程序員學習大量的知識,并且會耗費很多時間,而深度學習框架可以幫助你很容易地搭建計算圖。這是人們使用深度學習框架進行開發的一個重要原因。
2.簡化偏導計算
深度學習框架的另一個好處是讓求導計算變得更加簡便。在深度學習的模型搭建過程中,不可避免地要計算損失函數,這就需要不停地做微分計算。有了深度學習框架,程序員不再需要自己反復編寫微分計算的復雜代碼。神經網絡可以被視為由許多非線性過程組成的復雜函數體,而計算圖則以模塊化的方式完整表達了這一函數體的內部邏輯關系,因此對這一復雜函數體求模型梯度就變成了在計算圖中簡單地從輸入到輸出進行一次完整遍歷的過程。相比傳統的微分計算,這一方法大大簡化了計算過程。自2012年后,絕大多數的深度學習框架都選擇了基于計算圖的聲明式求解。用計算圖求偏導過程如圖2-14所示。
圖2-14 用計算圖求偏導
3.高效運行
深度學習框架的另一個重要的優勢是具有靈活的移植性,可以將同一份代碼幾乎不經過修改地部署到GPU或CPU上,程序員不必將精力消耗在處理內存轉移等問題上。目前對于大規模的深度學習來說,巨大的數據量使得單機很難在有限的時間內完成訓練。這就需要使用集群分布式并行計算或使用多卡GPU計算,因此使用具有分布式性能的深度學習框架可以使模型訓練更加高效。
- Java多線程編程實戰指南:設計模式篇(第2版)
- HTML5移動Web開發技術
- Learning Cython Programming
- 高效微控制器C語言編程
- Raspberry Pi for Secret Agents(Third Edition)
- Python高級編程
- Mastering PHP Design Patterns
- Practical Game Design
- Ext JS 4 Web Application Development Cookbook
- Python完全自學教程
- Rust Essentials(Second Edition)
- Visual C#.NET程序設計
- 前端HTML+CSS修煉之道(視頻同步+直播)
- HTML 5與CSS 3權威指南(第3版·上冊)
- Learning Modular Java Programming