丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給岑大師
發(fā)送

0

緊跟未來(lái)深度學(xué)習(xí)框架需求,TensorFlow推出Eager Execution

本文作者: 岑大師 2017-11-02 02:03
導(dǎo)語(yǔ):雷鋒網(wǎng)按:Google的TensorFlow是AI學(xué)習(xí)者中使用率最高、名氣也最大的深度學(xué)習(xí)框架,但由于TensorFlow最早是基于Google的需求開(kāi)發(fā)的,在

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

今天,我們?yōu)?TensorFlow 引入了“Eager Execution”,它是一個(gè)命令式、由運(yùn)行定義的接口,一旦從 Python 被調(diào)用可立即執(zhí)行操作,這使得 TensorFlow 的入門(mén)學(xué)習(xí)變的更簡(jiǎn)單,也使得研發(fā)工作變得更直觀。

Eager Execution 的優(yōu)點(diǎn)包括:

  • 可以在即時(shí)的運(yùn)行錯(cuò)誤下進(jìn)行快速調(diào)試,與 Python 工具進(jìn)行整合

  • 通過(guò)易于使用的 Python 控制流支持動(dòng)態(tài)模型

  • 為自定義和高階梯度提供強(qiáng)大支持

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

目前 Eager Execution 仍處于試用階段,因此我們也在尋求來(lái)自社區(qū)的反饋以指導(dǎo)我們的方向。

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

import tensorflow as tf

import tensorflow.contrib.eager as tfe 


tfe.enable_eager_execution() 


x = [[2.]] 

m = tf.matmul(x, x)

使用 print 或者 Python 調(diào)試器檢查中間結(jié)果也非常直接。

print(m)

# The 1x1 matrix [[4.]]

梯度與自定義梯度

大多數(shù) TensorFlow 用戶對(duì)自動(dòng)微分感興趣。因?yàn)槊看握{(diào)用期間可能會(huì)產(chǎn)生不同的運(yùn)算,因此我們將所有的正向運(yùn)算錄到一個(gè)“磁帶”上,并在計(jì)算梯度時(shí)進(jìn)行反向運(yùn)算。計(jì)算了梯度之后,這個(gè)“磁帶”就沒(méi)用了。

這一API與 autograd 包非常類(lèi)似,例子如下:

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


grad = tfe.gradients_function(square)


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

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

在這里,gradients_function 先調(diào)用了一個(gè)預(yù)先定義的 Python 函數(shù) square() 作為參數(shù),并返回一個(gè) Python 可調(diào)用函數(shù) grad 來(lái)計(jì)算相對(duì)于輸入的 square() 的偏導(dǎo)數(shù)。如以上例子中當(dāng)輸入為 3.0 時(shí), square() 的計(jì)算結(jié)果為9,而 grad(3.0) 為對(duì) square() 進(jìn)行偏導(dǎo),其計(jì)算結(jié)果為 6。

同樣,我們也可以調(diào)用 gradient_function 計(jì)算 square 的二階導(dǎo)數(shù)。

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

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

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]

上述例子中,當(dāng) x=0 時(shí),梯度計(jì)算表現(xiàn)良好。然而由于數(shù)值的不穩(wěn)定性,當(dāng) x=100 時(shí)則會(huì)返回 `nan` 。使用上述函數(shù)的自定義梯度可用于分析簡(jiǎn)化梯度表達(dá)式。 

使用 Eager 和 Graphs

Eager execution 使開(kāi)發(fā)和調(diào)試互動(dòng)性更強(qiáng),但是 TensorFlow graphs 在分布式訓(xùn)練、性能優(yōu)化和生產(chǎn)部署中也有著諸多優(yōu)勢(shì)。

當(dāng)啟用 eager execution 時(shí),執(zhí)行運(yùn)算的代碼同時(shí)還可以構(gòu)建一個(gè)描述 eager execution 未啟用狀況的計(jì)算圖。要將模型轉(zhuǎn)換成圖形,只需在新的 Python 進(jìn)程中運(yùn)行同樣的代碼即可。這一做法可以從檢查點(diǎn)保存和修復(fù)模型變量值,這允許我們?cè)?eager(命令式)和 graph(聲明式)編程之間輕松轉(zhuǎn)換。通過(guò)這種方式可以輕松地將啟用 eager execution 開(kāi)發(fā)出的模型導(dǎo)出到生產(chǎn)部署中。

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

新功能勢(shì)必帶來(lái)代碼編寫(xiě)上的變化。Google還很貼心地給出了幾個(gè)Tips:

  • 與TensorFlow一樣,我們建議,如果您還沒(méi)有從隊(duì)列切換到使用tf.data進(jìn)行輸入處理,請(qǐng)抓緊時(shí)間進(jìn)行切換,它更容易使用,也會(huì)更快。 有關(guān)幫助參閱相關(guān)博客文章文檔頁(yè)面。

  • 使用面向?qū)ο髮樱鐃f.layer.Conv2D()或Keras層;;它們可以直接存儲(chǔ)變量。

  • 你可以為大多數(shù)模型編寫(xiě)代碼,無(wú)論是執(zhí)行和圖形構(gòu)建都是一樣的。 但也有一些例外,例如使用Python控制流來(lái)改變基于輸入的計(jì)算的動(dòng)態(tài)模型。

  • 一旦你調(diào)用了tfe.enable_eager_execution(),它就不能關(guān)閉。 要獲取圖形行為,請(qǐng)啟動(dòng)一個(gè)新的Python會(huì)話。

更多內(nèi)容可參閱Google博客。


雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知

緊跟未來(lái)深度學(xué)習(xí)框架需求,TensorFlow推出Eager Execution

分享:
相關(guān)文章
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)