摘要:復(fù)發(fā)的一種常用形式,可以用于循環(huán)和是的特例可以根據(jù)一些輸出序列一個(gè)函數(shù),每一步都會(huì)生成一個(gè)輸出可以查看之前步的輸出給定一個(gè)初始狀態(tài)可以通過函數(shù)計(jì)算一個(gè)列表的和通常一個(gè)循環(huán)可以用操作符進(jìn)行實(shí)現(xiàn)使用的優(yōu)點(diǎn)迭代次數(shù)為符號(hào)圖的一部分最大限度地減少傳
Scan
復(fù)發(fā)(Recurrence)的一種常用形式,可以用于循環(huán)(looping)
Reduction和map是scan的特例
可以根據(jù)一些輸出序列scan一個(gè)函數(shù)(function),每一步都會(huì)生成一個(gè)輸出
可以查看之前k步的輸出
給定一個(gè)初始狀態(tài)z=0,可以通過scan函數(shù)z + x(i)計(jì)算一個(gè)列表的和sum(a_list)
通常一個(gè)for循環(huán)可以用scan()操作符進(jìn)行實(shí)現(xiàn)
使用scan的優(yōu)點(diǎn):
迭代次數(shù)為符號(hào)圖的一部分
最大限度地減少GPU傳輸(如果用到了GPU)
通過序列步長(zhǎng)計(jì)算梯度
運(yùn)行速率比python內(nèi)置的for循環(huán)稍微快些
可以通過檢測(cè)需要的實(shí)際內(nèi)存量,來(lái)降低整體內(nèi)存使用量
例子:對(duì)應(yīng)元素計(jì)算tanh(x(t).dot(W) + b)import theano import theano.tensor as T import numpy as np # 定義張量變量 X = T.matrix("X") W = T.matrix("W") b_sym = T.vector("b_sym") results, updates = theano.scan(lambda v: T.tanh(T.dot(v, W) + b_sym), sequences=X) compute_elementwise = theano.function([X, W, b_sym], results) # 測(cè)試 x = np.eye(2, dtype=theano.config.floatX) w = np.ones((2, 2), dtype=theano.config.floatX) b = np.ones((2), dtype=theano.config.floatX) b[1] = 2 compute_elementwise(x, w, b) # 和numpy相比較 np.tanh(x.dot(w) + b)例子: 計(jì)算序列x(t) = tanh(x(t-1).dot(W) + y(t).dot(U) + p(T-t).dot(V))
import theano import theano.tensor as T import numpy as np # 定義張量變量 X = T.vector("X") W = T.matrix("W") b_sym = T.vector("b_sym") U, Y, V, P = T.matrices("U", "Y", "V", "P") result, update = theano.scan(lambda y, p, x_tml: T.tanh(T.dot(x_tml, W) + T.dot(y, U) + T.dot(p, V)), sequences=[Y, P[::-1]], outputs_info=[X]) compute_seq = theano.function(inputs=[X, W, Y, U, P, V], outputs=result) # 測(cè)試 x = np.zeros((2), dtype=theano.config.floatX) x[1] = 1 w = np.ones((2, 2), dtype=theano.config.floatX) y = np.ones((5, 2), dtype=theano.config.floatX) y[0, :] = -3 u = np.ones((2, 2), dtype=theano.config.floatX) p = np.ones((5, 2), dtype=theano.config.floatX) p[0, :] = 3 v = np.ones((2, 2), dtype=theano.config.floatX) print(compute_seq(x, w, y, u, p, v)) # 與Numpy對(duì)比 x_res = np.zeros((5, 2), dtype=theano.config.floatX) x_res[0] = np.tanh(x.dot(w) + y[0].dot(u) + p[4].dot(v)) for i in range(1, 5): x_res[i] = np.tanh(x_res[i - 1].dot(w) + y[i].dot(u) + p[4-i].dot(v)) print(x_res)例子: 計(jì)算X的行范式
import theano import theano.tensor as T import numpy as np # 定義張量變量 X = T.matrix("X") results, updates = theano.scan(lambda x_i: T.sqrt((x_i ** 2)).sum(), sequences=[X]) compute_norm_lines = theano.function(inputs=[X], outputs=results) # 測(cè)試 x = np.diag(np.arange(1, 6, dtype=theano.config.floatX), 1) print(compute_norm_lines(x)) # 和Numpy對(duì)比 print(np.sqrt((x ** 2).sum(1)))例子: 計(jì)算X的列范式
import theano import theano.tensor as T import numpy as np # 定義張量變量 X = T.matrix("X") results, updates = theano.scan(lambda x_i: T.sqrt((x_i ** 2).sum()), sequences=[X.T]) compute_norm_cols = theano.function(inputs=[X], outputs=results) # 測(cè)試 x = np.diag(np.arange(1, 6, dtype=theano.config.floatX), 1) print(compute_norm_cols(x)) # 和Numpy對(duì)比 print(np.sqrt((x ** 2).sum(0)))
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/38660.html
摘要:首先是最頂層的抽象,這個(gè)里面最基礎(chǔ)的就是和,記憶中和的抽象是類似的,將計(jì)算結(jié)果和偏導(dǎo)結(jié)果用一個(gè)抽象類來(lái)表示了。不過,本身并沒有像其它兩個(gè)庫(kù)一樣提供,等模型的抽象類,因此往往不會(huì)直接使用去寫模型。 本文將從deep learning 相關(guān)工具庫(kù)的使用者角度來(lái)介紹下github上stars數(shù)排在前面的幾個(gè)庫(kù)(tensorflow, keras, torch, theano, skflow, la...
摘要:相比于直接使用搭建卷積神經(jīng)網(wǎng)絡(luò),將作為高級(jí),并使用作為后端要簡(jiǎn)單地多。測(cè)試一學(xué)習(xí)模型的類型卷積神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)集任務(wù)小圖片數(shù)據(jù)集目標(biāo)將圖片分類為個(gè)類別根據(jù)每一個(gè)的訓(xùn)練速度,要比快那么一點(diǎn)點(diǎn)。 如果我們對(duì) Keras 在數(shù)據(jù)科學(xué)和深度學(xué)習(xí)方面的流行還有疑問,那么考慮一下所有的主流云平臺(tái)和深度學(xué)習(xí)框架的支持情況就能發(fā)現(xiàn)它的強(qiáng)大之處。目前,Keras 官方版已經(jīng)支持谷歌的 TensorFlow、微軟的...
摘要:下圖總結(jié)了絕大多數(shù)上的開源深度學(xué)習(xí)框架項(xiàng)目,根據(jù)項(xiàng)目在的數(shù)量來(lái)評(píng)級(jí),數(shù)據(jù)采集于年月初。然而,近期宣布將轉(zhuǎn)向作為其推薦深度學(xué)習(xí)框架因?yàn)樗С忠苿?dòng)設(shè)備開發(fā)。該框架可以出色完成圖像識(shí)別,欺詐檢測(cè)和自然語(yǔ)言處理任務(wù)。 很多神經(jīng)網(wǎng)絡(luò)框架已開源多年,支持機(jī)器學(xué)習(xí)和人工智能的專有解決方案也有很多。多年以來(lái),開發(fā)人員在Github上發(fā)布了一系列的可以支持圖像、手寫字、視頻、語(yǔ)音識(shí)別、自然語(yǔ)言處理、物體檢測(cè)的...
摘要:第一個(gè)主流產(chǎn)品級(jí)深度學(xué)習(xí)庫(kù),于年由啟動(dòng)。在年月日宣布,的開發(fā)將終止。張量中最基本的單位是常量變量和占位符。占位符并沒有初始值,它只會(huì)分配必要的內(nèi)存。是一個(gè)字典,在字典中需要給出每一個(gè)用到的占位符的取值。 為什么選擇 TensorFlow?在本文中,我們將對(duì)比當(dāng)前最流行的深度學(xué)習(xí)框架(包括 Caffe、Theano、PyTorch、TensorFlow 和 Keras),幫助你為應(yīng)用選擇最合適...
摘要:簡(jiǎn)稱,是基于聚焦行業(yè)應(yīng)用且提供商業(yè)支持的分布式深度學(xué)習(xí)框架,其宗旨是在合理的時(shí)間內(nèi)解決各類涉及大量數(shù)據(jù)的問題。是負(fù)責(zé)開發(fā)的用編寫,通過引擎加速的深度學(xué)習(xí)框架,是目前受關(guān)注最多的深度學(xué)習(xí)框架。 作者簡(jiǎn)介魏秀參,曠視科技 Face++ 南京研究院負(fù)責(zé)人。南京大學(xué) LAMDA 研究所博士,主要研究領(lǐng)域?yàn)橛?jì)算機(jī)視覺和機(jī)器學(xué)習(xí)。在相關(guān)領(lǐng)域較高級(jí)國(guó)際期刊如 IEEE TIP、IEEE TNNLS、Mac...
閱讀 2799·2021-11-17 09:33
閱讀 4479·2021-09-22 15:57
閱讀 2877·2019-08-30 14:16
閱讀 3140·2019-08-29 14:07
閱讀 2419·2019-08-26 11:55
閱讀 3431·2019-08-23 17:07
閱讀 1731·2019-08-23 16:50
閱讀 2543·2019-08-23 16:08