精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

谷歌推出開源 Python 庫“Tangent”,支持前向模式自動微分

責任編輯:editor007

2017-11-09 20:39:27

摘自:雷鋒網

Tangent 是一個全新的免費開源 Python 庫,可以用于自動微分。現有的庫通過跟蹤程序的執行過程來實現自動微分(如 TF Eager, PyTorch 和 Autograd),或者通過構建動態數據流圖來進行微分(如 TensorFlow)。

Tangent 是一個全新的免費開源 Python 庫,可以用于自動微分。與其他現有的機器學習庫相比,Tangent屬于源到源(source-to-source)系統,可以用 Python f 函數調用新的 Python 函數,計算出 f 的梯度。對用戶來說,這大大改善了梯度計算的可見性,更易于編輯和調試。當調試和設計機器學習模型時,Tangent 增加了許多新功能:

易于調試反向傳遞(backward pass)

快速進行梯度surgery

前向模式自動微分

高效的Hessian-vector product

代碼優化

本文概述了Tangent API接口,包括如何使用Tangent 來生成易于解釋、調試和修改的Python梯度代碼。

在圖像、視頻、音頻和文本機器學習模型中,神經網絡(NNs)的出現帶來了巨大的進步。其實在這些任務中,訓練神經網絡的基本概念已經存在30年了,我們通常稱之為反向模式自動微分(reverse-mode automatic differentiation)或者反向傳播(backpropagation)。它包括在神經網絡中的兩次傳遞:首先運行“前向傳遞(forward pass)”來計算每個節點的輸出值,然后再運行“反向傳遞”來計算一系列的導數,從而確定如何更新權重,以提高模型的準確度。

在訓練神經網絡、研究新的架構的過程中,我們要能正確、高效、輕松地計算出導數值。此外,當模型還沒訓練好或者想要構建一些連自己都不太理解的新東西時,也要能夠調試這些導數。自動微分也稱為“autodiff”,是一種計算電腦程序導數(數學上的函數)的技術,幾乎所有的機器學習庫都會用到它。

現有的庫通過跟蹤程序的執行過程來實現自動微分(如 TF Eager, PyTorch 和 Autograd),或者通過構建動態數據流圖來進行微分(如 TensorFlow)。與此相反, Tangent 可以通過 Python 源代碼提前自動微分,還可以生成Python源代碼作為輸出。

谷歌推出開源 Python 庫“Tangent”,支持前向模式自動微分

因此,你最終能像讀取程序的剩余部分一樣讀取自動微分代碼。對那些既想用 Python 編寫模型,又想在讀取和調試自動微分代碼時不犧牲速度和靈活性的研究人員和學生來說,Tangent 非常有用。

在Tangent 中構建模型不需要特殊的工具或間接方法,非常易于檢查和調試。Tangent 基于一個非常大并且正在增長的 Python 子集,能支持其他 Python 深度學習庫所不具備的自動微分特性,性能高效,并能與 TensorFlow 和 NumPy 兼容。

Python代碼自動微分

如何自動生成Python代碼的導數? 像 tf.exp 和 tf.log 這些數學函數已經含有能幫助我們建立反向傳遞的導數了,同樣,子程序、條件和循環等句段也具有反向傳遞版本。Tangent 支持為每個 Python 句法生成導數代碼,也能調用許多 NumPy 和 TensorFlow 函數。

Tangent 具備單一功能 API:

谷歌推出開源 Python 庫“Tangent”,支持前向模式自動微分

  下面是一張動圖,它描述了調用 tangent.grad 之后執行的操作。

谷歌推出開源 Python 庫“Tangent”,支持前向模式自動微分

  可以運行如下代碼輸出求導結果:

谷歌推出開源 Python 庫“Tangent”,支持前向模式自動微分

執行命令后,tangent.grad 首先抓取傳來的 Python 函數源代碼。Tangent 有一個龐大的 Python 句法求導方法庫,類似于 TensorFlow Eager 函數。然后,tangent.grad 函數會反向走查代碼,查找匹配的反向傳遞方法,并將其添加到導函數的末尾。這種反序處理過程所用的技術就叫反向模式自動微分(reverse-mode automatic differentiation)。

上面的 df 函數只適用于標量(非數組)輸入。Tangent 也支持以下功能:

使用 TensorFlow Eager 函數處理陣列

子程序

控制流

雖然一開始就能利用 TensorFlow Eager,但 Tangent 并沒有與數值庫相關聯,我們也很樂意看到 PyTorch 或 MXNet 求導方法的添加請求。

下一步

Tangent現在已經在github.com/google/tangent開源了,大家可以點擊下載,按照說明安裝。因為仍在實驗階段,所以難免有一些 bug。如果大家發現了 bug 并在 GitHub 上說明,我們會盡快解決。

我們正從 Python 的多個層面為 Tangent 提供支持(例如閉包、內聯函數定義、類、更多的 NumPy 和 TensorFlow 函數)。我們還希望在未來添加更高級的自動微分和編譯器功能,比如在內存和計算之間自動平衡(Griewank and Walther 2000;Gruslys et al., 2016)、更高效的優化、lambda lifting等。

我們希望能將Tangent社群發展壯大,歡迎大家踴躍提出修補和新特性的方面的需求。

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 前郭尔| 宜良县| 苏尼特左旗| 香港| 宁夏| 上栗县| 黄龙县| 正宁县| 西青区| 商都县| 新建县| 屯留县| 墨江| 吴旗县| 怀集县| 武隆县| 繁昌县| 吉木萨尔县| 论坛| 景泰县| 巴中市| 徐水县| 德州市| 日喀则市| 涡阳县| 雅安市| 丰镇市| 法库县| 衢州市| 当阳市| 蒙山县| 汝南县| 桂阳县| 茌平县| 景德镇市| 扶余县| 弥勒县| 溧水县| 长沙县| 阿瓦提县| 福鼎市|