摘要:接收布爾型條件和兩個(gè)變量作為輸入。進(jìn)行元素級運(yùn)算,因此比更常用。比較懶惰,只計(jì)算滿足條件的相應(yīng)輸出變量,而計(jì)算所有的輸出變量。如果那么計(jì)算和,并輸出在這個(gè)例子中,比花費(fèi)更少的時(shí)間,因?yàn)樗挥?jì)算輸出變量中的一個(gè)。
IfElse vs Switch
IfElse接收布爾型條件和兩個(gè)變量作為輸入。
Switch接收一個(gè)張量(Tensor)以及兩個(gè)變量作為輸入。
Switch進(jìn)行元素級運(yùn)算,因此比IfElse更常用。
IfElse比較懶惰,只計(jì)算滿足條件的相應(yīng)輸出變量, 而Switch計(jì)算所有的輸出變量。
即:
ifelse(condition, output1, output2): 如果condition:1(0),那么ifelse只計(jì)算output1(output2)并輸出。
switch(condition, output1, output2): 如果condition:1(0),那么switch計(jì)算output1和output2,并輸出output1(output2)
from theano import tensor as T from theano.ifelse import ifelse import theano, time, numpy a, b = T.scalars("a", "b") x, y = T.matrices("x", "y") z_switch = T.switch(T.lt(a, b), T.mean(x), T.mean(y)) z_ifelse = ifelse(T.lt(a, b), T.mean(x), T.mean(y)) f_switch = theano.function([a, b, x, y], z_switch, mode=theano.Mode(linker="vm")) f_ifelse = theano.function([a, b, x, y], z_ifelse, mode=theano.Mode(linker="vm")) val1 = 0. val2 = 1. big_mat1 = numpy.ones((10000, 1000)) big_mat2 = numpy.ones((10000, 1000)) n_times = 10 tic = time.clock() for i in range(n_times): f_switch(val1, val2, big_mat1, big_mat2) print("time spent evaluating both values %f sec" % (time.clock() - tic)) tic = time.clock() for j in range(n_times): f_ifelse(val1, val2, big_mat1, big_mat2) print("time spent evaluating one value %f sec" % (time.clock() - tic))
在這個(gè)例子中,IfElse比Switch花費(fèi)更少的時(shí)間,因?yàn)樗挥?jì)算輸出變量中的一個(gè)。
如果不使用linker="vm"或linker="cvm",那么ifelse將會(huì)和switch一樣計(jì)算兩個(gè)輸出變量,而且花費(fèi)的時(shí)間和switch一樣多。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/38661.html
摘要:兩者取長補(bǔ)短,所以深度學(xué)習(xí)框架在年,迎來了前后端開發(fā)的黃金時(shí)代。陳天奇在今年的中,總結(jié)了計(jì)算圖優(yōu)化的三個(gè)點(diǎn)依賴性剪枝分為前向傳播剪枝,例已知,,求反向傳播剪枝例,,求,根據(jù)用戶的求解需求,可以剪掉沒有求解的圖分支。 虛擬框架殺入從發(fā)現(xiàn)問題到解決問題半年前的這時(shí)候,暑假,我在SIAT MMLAB實(shí)習(xí)??粗乱粫?huì)兒跑Torch,一會(huì)兒跑MXNet,一會(huì)兒跑Theano。SIAT的服務(wù)器一般是不...
摘要:我認(rèn)為對機(jī)器學(xué)習(xí)開發(fā)者來說,是一個(gè)了不起的工具集。這個(gè)帖子發(fā)出后得到了很多機(jī)器學(xué)習(xí)研究者和開發(fā)者的關(guān)注,他們紛紛跟貼談?wù)撟约旱南敕ê徒?jīng)驗(yàn)不只是關(guān)于和,討論中還涉及到更多工具。 Theano、TensorFlow、Torch、MXNet 再到近日比較熱門的 PyTorch 等等,深度學(xué)習(xí)框架之間的比較一直以來都是非常受人關(guān)注的熱點(diǎn)話題。機(jī)器之心也曾發(fā)表過多篇相關(guān)的介紹和對比文章,如《主流深度學(xué)...
摘要:另外,當(dāng)損失函數(shù)接近全局最小時(shí),概率會(huì)增加。降低訓(xùn)練過程中的學(xué)習(xí)率。對抗樣本的訓(xùn)練據(jù)最近信息顯示,神經(jīng)網(wǎng)絡(luò)很容易被對抗樣本戲弄。使用高度正則化會(huì)有所幫助,但會(huì)影響判斷不含噪聲圖像的準(zhǔn)確性。 由 Yoshua Bengio、 Leon Bottou 等大神組成的講師團(tuán)奉獻(xiàn)了 10 天精彩的講座,劍橋大學(xué)自然語言處理與信息檢索研究組副研究員 Marek Rei 參加了本次課程,在本文中,他精煉地...
摘要:八月初,我有幸有機(jī)會(huì)參加了蒙特利爾深度學(xué)習(xí)暑期學(xué)校的課程,由最知名的神經(jīng)網(wǎng)絡(luò)研究人員組成的為期天的講座。另外,當(dāng)損失函數(shù)接近全局最小時(shí),概率會(huì)增加。降低訓(xùn)練過程中的學(xué)習(xí)率。對抗樣本的訓(xùn)練據(jù)最近信息顯示,神經(jīng)網(wǎng)絡(luò)很容易被對抗樣本戲弄。 8月初的蒙特利爾深度學(xué)習(xí)暑期班,由Yoshua Bengio、 Leon Bottou等大神組成的講師團(tuán)奉獻(xiàn)了10天精彩的講座,劍橋大學(xué)自然語言處理與信息檢索研...
摘要:是怎么處理形狀信息在構(gòu)建圖的時(shí)候,不可能嚴(yán)格執(zhí)行變量的形狀。形狀推斷問題在圖中,將會(huì)傳播形狀的信息。以下情形是目前我們可以做到的當(dāng)調(diào)用時(shí),你可以直接把形狀信息傳遞給。例如你可以在圖的任何位置使用添加位置信息。 Theano是怎么處理形狀信息(Shape Information) 在構(gòu)建圖的時(shí)候,不可能嚴(yán)格執(zhí)行Theano變量的形狀。因?yàn)樵谶\(yùn)行的時(shí)候,傳遞給Theano函數(shù)的某一參數(shù)的值...
閱讀 2250·2023-04-25 19:06
閱讀 1448·2021-11-17 09:33
閱讀 1848·2019-08-30 15:53
閱讀 2658·2019-08-30 14:20
閱讀 3610·2019-08-29 12:58
閱讀 3614·2019-08-26 13:27
閱讀 577·2019-08-26 12:23
閱讀 551·2019-08-26 12:22