前言
深度學習和人工智慧引領了一個新的研究和發展方向,同時正在改變人類固有的處理問題的思維。現在各個領域都處於運用深度學習技術進行重大技術突破的階段,與此同時,深度學習本身也展現出巨大的發展空間。
JAX是一個用於高性能數值計算的Python函數庫,專門為深度學習領域的高性能計算而設計,其包含豐富的數值計算與科學計算函數,能夠很好地滿足使用者的計算需求,特別是其基於GPU或其他硬體加速器的能力,能夠幫助我們在現有的條件下極大地加速深度學習模型的訓練與預測。
JAX繼承了Python簡單好用的優點,給使用者提供了一個「便於入門,能夠提昇」的深度學習實現方案。JAX在程式結構上採用物件導向方法撰寫,完全模組化,並具有可擴充性,其運行機制和說明文檔都將使用者體驗和使用難度納入考慮範圍,降低了複雜演算法的實現難度。JAX的計算核心使用的是自動微分,可以支援自動模式反向傳播和正向傳播,且二者可以任意組合成任何順序。
本書由淺到深地介紹JAX框架相關的知識,重要內容均結合程式進行實戰講解,讀者透過這些實例可以深入掌握JAX程式設計的內容,並能對深度學習有進一步的了解。
? 本書特色
-- 版本新,易入門 --
本書詳細介紹JAX最新版本的安裝和使用,包括CPU版本以及GPU版本。
-- 作者經驗豐富,程式撰寫細膩 --
作者是長期在科學研究和工業界的最前線演算法設計和程式撰寫人員,實戰經驗豐富,對程式中可能會出現的各種問題和「坑」有豐富的處理經驗,能讓讀者少走很多冤枉路。
-- 理論紮實,深入淺出 --
在程式設計的基礎上,本書深入淺出地介紹深度學習需要掌握的一些基本理論知識,並透過大量的公式與圖示對理論做介紹。
-- 對比多種應用方案,實戰案例豐富 --
本書列舉了大量的實例,同時提供多個實現同類功能的解決方案,涵蓋使用JAX進行深度學習開發中常用的知識。
? 本書內容
第1章--JAX從零開始
本章介紹JAX應用於深度學習的基本理念、基礎,並透過一個真實的深度學習例子介紹深度學習的一般訓練步驟。本章是全書的基礎,讀者需要先根據本章內容架設JAX開發環境,並下載合適的IDE。
第2章--一學就會的線性回歸、多層感知機與自動微分器
本章以深度學習中最常見的線性回歸和多層感知機的程式設計為基礎,循序漸進地介紹JAX進行深度學習程式設計的基本方法和步驟。
第3章--深度學習的理論基礎
本章主要介紹深度學習的理論基礎,從BP神經網路開始,介紹神經網路兩個基礎演算法,並著重介紹反向傳播演算法的完整過程和理論,最後透過撰寫基本Python的方式實現一個完整的回饋神經網路。
第4章--XLA與JAX一般特性
本章主要介紹JAX 的一些基礎特性,例如XLA、自動微分等。讀者需要了解XLA的運行原理,以及它能給JAX帶來什麼。
第5章--JAX的高級特性
本章是基於上一章的基礎來比較JAX與NumPy,重點解釋JAX在實踐中的一些程式設計和撰寫的規範要求,並對其中的迴圈函數做一個詳盡而細緻的說明。
第6章--JAX的一些細節
本章主要介紹JAX在設計性能較優的程式時的細節問題,並介紹JAX內部一整套結構儲存方法和對模型參數的控制,這些都是為我們能撰寫出更為強大的深度學習程式打下基礎。
第7章--JAX中的卷積
卷積可以說是深度學習中使用最為廣泛的計算部件,本章主要介紹卷積的基礎知識以及相關用法,並透過一個經典的卷積神經網路VGG模型,講解卷積的應用和JAX程式設計的一些基本內容。
第8章--JAX與TensorFlow的比較與互動
本章主要介紹在一些特定情況下使用已有的TensorFlow元件的一些方法。作為深度學習經典框架,TensorFlow 有很多值得JAX 參考和利用的內容。
第9章--遵循JAX函數基本規則下的自訂函數
本章介紹JAX 創建自訂函數的基本規則,並對其中涉及的一些細節問題進行詳細講解。期望讀者能在了解和掌握如何運用這些基本規則後,去創建既滿足需求又能夠符合JAX 函數規則的自訂函數。
第10章--JAX中的高級套件
本章詳細介紹JAX中高級程式設計子套件,特別是2個非常重要的模組jax.experimental和jax.nn。這兩個套件目前仍處於測試階段,但是包含了建立深度學習模型所必需的一些基本函數。
第11章--JAX實戰—使用ResNet完成CIFAR100資料集分類
本章主要介紹在神經網路領域具有里程碑意義的模型—ResNet。它改變了人們僅依靠堆積神經網路層來獲取更高性能的做法,在一定程度上解決了梯度消失和梯度爆炸的問題。這是一項跨時代的發明。本章以一步步的方式介紹ResNet模型的撰寫和架構方法。
第12章--JAX實戰—有趣的詞嵌入
本章介紹JAX於自然語言處理的應用,透過一個完整的例子向讀者說明自然語言處理所需要的全部內容,一步步地教會讀者使用不同的架構和維度進行文字分類的方法。
第13章--JAX實戰—生成對抗網路(GAN)
本章介紹使用JAX完成生成對抗網路模型的設計,講解如何利用JAX完成更為複雜的深度學習模型設計,掌握JAX程式設計的技巧。同時也期望透過本章內容,能夠幫助讀者全面複習本書所涉及的JAX深度學習程式設計內容。
? 原始程式下載與技術支援
本書附有原始程式可供下載,請至深智數位官網下載。
【本書目標讀者】
? 人工智慧入門讀者
? 深度學習入門讀者
? 機器學習入門讀者
? 大專院校人工智慧專業的師生
? 專業教育訓練機構的師生
? 其他對智慧化、自動化感興趣的開發者
? 技術支援、勘誤和鳴謝
由於作者的能力有限,加上JAX框架的演進較快,書中難免存在疏漏之處,懇請讀者來信批評指正。本書的順利出版,首先要感謝家人的理解和支持,他們給予我莫大的動力,讓我的努力更加有意義。此外特別感謝出版社的編輯們,感謝他們在本書撰寫過程中給予的無私指導。
編者