成人av在线资源一区,亚洲av日韩av一区,欧美丰满熟妇乱XXXXX图片,狠狠做五月深爱婷婷伊人,桔子av一区二区三区,四虎国产精品永久在线网址,国产尤物精品人妻在线,中文字幕av一区二区三区欲色
    您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
    此為臨時鏈接,僅用于文章預覽,將在時失效
    人工智能 正文
    發私信給岑大師
    發送

    0

    緊跟未來深度學習框架需求,TensorFlow推出Eager Execution

    本文作者: 岑大師 2017-11-02 02:03
    導語:雷鋒網按:Google的TensorFlow是AI學習者中使用率最高、名氣也最大的深度學習框架,但由于TensorFlow最早是基于Google的需求開發的,在

    雷鋒網按:Google的TensorFlow是AI學習者中使用率最高、名氣也最大的深度學習框架,但由于TensorFlow最早是基于Google的需求開發的,在實際使用上也會存在如文檔亂、調試難等諸多缺點,而且開發時間比較早未能及時對一些新的需求進行反應(據雷鋒網了解,由于缺乏類似PyTroch、DyNet的動態圖功能,Lecun就不止一次吐槽過TensorFlow是“過時的深度學習框架”(yesterday deep learning framework)),而針對用戶的需求,Google也在對TensorFlow不斷改進。在10月31日,Google為TensorFlow引入了動態圖機制Eager Execution,而Google Brain Team的工程師Asim Shankar和Wolff Dobson也在Google官方博客發文詳細闡述了這一功能帶來的變化,雷鋒網摘編如下:

    今天,我們為 TensorFlow 引入了“Eager Execution”,它是一個命令式、由運行定義的接口,一旦從 Python 被調用可立即執行操作,這使得 TensorFlow 的入門學習變的更簡單,也使得研發工作變得更直觀。

    Eager Execution 的優點包括:

    • 可以在即時的運行錯誤下進行快速調試,與 Python 工具進行整合

    • 通過易于使用的 Python 控制流支持動態模型

    • 為自定義和高階梯度提供強大支持

    • 適用于幾乎目前所有的 TensorFlow 操作

    目前 Eager Execution 仍處于試用階段,因此我們也在尋求來自社區的反饋以指導我們的方向。

    同時Google還舉了一些使用 Eager Execution 的直觀例子,例如使用兩個矩陣相乘的代碼是這樣編寫的:

    import tensorflow as tf

    import tensorflow.contrib.eager as tfe 


    tfe.enable_eager_execution() 


    x = [[2.]] 

    m = tf.matmul(x, x)

    使用 print 或者 Python 調試器檢查中間結果也非常直接。

    print(m)

    # The 1x1 matrix [[4.]]

    梯度與自定義梯度

    大多數 TensorFlow 用戶對自動微分感興趣。因為每次調用期間可能會產生不同的運算,因此我們將所有的正向運算錄到一個“磁帶”上,并在計算梯度時進行反向運算。計算了梯度之后,這個“磁帶”就沒用了。

    這一API與 autograd 包非常類似,例子如下:

    def square(x):
     return tf.multiply(x, x)


    grad = tfe.gradients_function(square)


    print(square(3.))    # [9.]

    print(grad(3.))      # [6.]

    在這里,gradients_function 先調用了一個預先定義的 Python 函數 square() 作為參數,并返回一個 Python 可調用函數 grad 來計算相對于輸入的 square() 的偏導數。如以上例子中當輸入為 3.0 時, square() 的計算結果為9,而 grad(3.0) 為對 square() 進行偏導,其計算結果為 6。

    同樣,我們也可以調用 gradient_function 計算 square 的二階導數。

    此外,用戶也可能需要為運算或函數自定義梯度。這一功能可能有用,例如,它可以為一系列運算提供了更高效或者數值更穩定的梯度。

    以下是一個自定義梯度的例子。我們先來看函數 log(1 + e^x),它通常用于計算交叉熵和對數似然。

    def log1pexp(x):
     return tf.log(1 + tf.exp(x))

    grad_log1pexp = tfe.gradients_function(log1pexp)


    # The gradient computation works fine at x = 0.

    print(grad_log1pexp(0.)

    )# [0.5]

    # However it returns a `nan` at x = 100 due to numerical instability.print(grad_log1pexp(100.))

    # [nan]

    上述例子中,當 x=0 時,梯度計算表現良好。然而由于數值的不穩定性,當 x=100 時則會返回 `nan` 。使用上述函數的自定義梯度可用于分析簡化梯度表達式。 

    使用 Eager 和 Graphs

    Eager execution 使開發和調試互動性更強,但是 TensorFlow graphs 在分布式訓練、性能優化和生產部署中也有著諸多優勢。

    當啟用 eager execution 時,執行運算的代碼同時還可以構建一個描述 eager execution 未啟用狀況的計算圖。要將模型轉換成圖形,只需在新的 Python 進程中運行同樣的代碼即可。這一做法可以從檢查點保存和修復模型變量值,這允許我們在 eager(命令式)和 graph(聲明式)編程之間輕松轉換。通過這種方式可以輕松地將啟用 eager execution 開發出的模型導出到生產部署中。

    在不久的將來,我們將提供工具來選擇性地將模型的某些部分轉換為圖形。這樣就可以融合部分計算(如自定義RNN單元的內部),以實現高性能并同時保持 eager execution 的靈活性和可讀性。

    新功能勢必帶來代碼編寫上的變化。Google還很貼心地給出了幾個Tips:

    • 與TensorFlow一樣,我們建議,如果您還沒有從隊列切換到使用tf.data進行輸入處理,請抓緊時間進行切換,它更容易使用,也會更快。 有關幫助參閱相關博客文章文檔頁面

    • 使用面向對象層,如tf.layer.Conv2D()或Keras層;;它們可以直接存儲變量。

    • 你可以為大多數模型編寫代碼,無論是執行和圖形構建都是一樣的。 但也有一些例外,例如使用Python控制流來改變基于輸入的計算的動態模型。

    • 一旦你調用了tfe.enable_eager_execution(),它就不能關閉。 要獲取圖形行為,請啟動一個新的Python會話。

    更多內容可參閱Google博客


    雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知

    緊跟未來深度學習框架需求,TensorFlow推出Eager Execution

    分享:
    相關文章
    當月熱門文章
    最新文章
    請填寫申請人資料
    姓名
    電話
    郵箱
    微信號
    作品鏈接
    個人簡介
    為了您的賬戶安全,請驗證郵箱
    您的郵箱還未驗證,完成可獲20積分喲!
    請驗證您的郵箱
    立即驗證
    完善賬號信息
    您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
    立即設置 以后再說