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