一、
閱讀原始碼
這個是tensorflow的
rnn原始碼,官方注釋解釋的比較清楚:
rnncell是乙個抽象類,
我們看下下它的屬性:
我們可以發現這裡用到的是python內建的
@property
裝飾器,就是負責把乙個方法變成屬性呼叫的,
很像c#中的屬性、欄位的那種概念。
state_size
和output_size
規定了隱層的大小和輸出張量的大小。
下面是重要的__call__方法,有點像usrp中的
work()
或者general_work()
的功能。這裡我們注意到輸入的引數有
inputs,
、state
,這裡其實就是指輸入層和隱層了。但是這裡有規定
inputs
的格式為(
batch_size,input_size
),state
的格式為(
batch_zie,state_size),
這很容易理解,因為我們進行訓練資料會分成很多
batch
。與普通的神經網路結構一樣,輸入層、隱層、輸出層的
size
並沒有關係,視應用場景而定。
還有乙個總要的方法是初始化方法:
basicrnncell、grucell、
basiclstmcell
、lstmcell
都是繼承於
layerrnncell
,而layerrnncell
繼承於上面講的抽象類
rnncell
,這就是
tensorflow
中rnn
的繼承關係。
這裡不做過多介紹,但是有意思的一點是這裡:
其實basicrnncell的輸出、隱層狀態是一樣的。而basiclstmcell的隱層狀態和輸出是不一樣的。
同樣rnn的隱層也可以構建多層
multirnncell
。根據原始碼可知:
隱層狀態的返回值是元組(tuple)型別。
最重要的乙個類dynamic_rnn(batch_size,time_steps,input_size),引數很好理解,但是需要強調的是
state
是最後一步的隱藏狀態,形狀是(
batch_size,cell.state_size
),time_steps
是呼叫rnncell
抽象類中
__call__()
函式的次數,
output
是所有steps
的輸出。
time_major=true
的情況下將
output
的格式中
batch_szie
和time_steps
位置交換。
AbstractCollection原始碼分析
abstractcollection抽象類提供了collection的骨架實現,collection分析請看 這裡直接看它的 是如何實現的.public abstract iterator iterator 該方法沒有實現.public abstract int size 該方法沒有實現.publi...
ThreadPoolExecutor原始碼閱讀
執行緒池解決兩個問題 一是復用執行緒,減少建立銷毀執行緒帶來系統開銷 二是限定系統資源使用邊界,避免大量執行緒消耗盡系統記憶體 適用於互不依賴,執行時間短,不需要對執行緒控制操作的執行緒 新增任務時,1.若執行緒數量小於corepoolsize,則新增執行緒執行任務 2.若執行緒數量大於等於core...
OrangePi One Android 原始碼編譯
一 系統環境搭建參照 二 lichee原始碼編譯 1.檢視help build.sh h2.配置核心 cd linux 3.4 make arch arm menuconfig 進入配置頁面,上下移動列表,空格是選擇列表,左右移動選擇退出選項 3.首次編譯執行清除 在 lichee linux3.4...