blob與tensorflow中的tensor類似,都是用來在節點之間傳遞資料所用,介面也類似,常規的dimension是 資料量n x 通道k x 高度h x 寬度w
blob內部存有data和diff兩大塊。前者是傳遞的資料,後者是計算的梯度。
由於blob同時存在cpu和gpu,所以有兩種方式來訪問他們:
const dtype* cpu_data() const;
dtype* mutable_cpu_data();
要使用合適的方式來訪問blob變數,主要是因為blob具有cpu和gpu同步功能,會進行cpu和gpu的通訊。所以如果不想更改值的話,最好使用const來呼叫,以減小通訊開銷。並且blob的指標不要存在自己的物件中,而使用函式來獲取指標,因為syncedmem需要函式的呼叫來確定什麼時候複製資料。
cpu 和 gpu 之間的轉換?
layer是模型的本質與計算的基本單元。包括卷積、池化、內積、sigmoid等。
每個layer包括了三個重要的計算:設定、前向傳輸、後向傳輸(setup, forward, backward)
net是乙個layer連線的組合,組成了乙個有向無環圖。
這樣進行定義:
name: "logreg"
layer
}layer
}layer
forward 與 backward 的傳輸是net的重要計算。
forward計算:
backward計算:
普通:
layer
loss weight:
layer
最後可根據所有loss進行加權相加計算:
loss := 0
for layer in layers:
for top, loss_weight in layer.tops, layer.loss_weights:
loss += loss_weight * sum(top)
各種用於計算梯度與loss的方法。
//todo
可利用設定transformationparameter來進行輸入的預處理(mean subtraction, scaling, random cropping, and mirroring)
當transformationparameter失效時,可利用 bias, scale, and crop層進行處理。
有以下幾種data layers:
以images為輸入,以images為輸出。
有以下幾種vision layers:
in:
layer
# common data transformations
transform_param
}
out:
layer
}
筆記 python模組速覽
有些東西,可能不經常用,尤其對於像我這種剛學的小夥伴來說更是如此。對於這部分內容可以不會用,但是一定要了解有這個東西,知道這個東西是什麼,能幹什麼,當我需要的時候可以想到,這個東西可以派上用場,到時再深入學習也為時不晚。目錄 常用內建模組 datetime collections base64 st...
Git命令速覽 git筆記
版本控制系統 vcs 在 git 中的絕大多數操作都只需要訪問本地檔案和資源,不用連網。但如果用 cvcs 的話,差不多所有操作都需要連線網路。因為 git 在本地磁碟上就儲存著所有當前專案的歷史更新,所以處理起來速度飛快。對於任何乙個檔案,在 git 內都只有三種狀態 已提交 committed ...
筆記速覽 訊息佇列的問題
總結自 中華石衫 如何保證訊息佇列的高可用啊?缺點 導致系統可用性降低 就kafka來說 ha機制,就是replica副本機制 isr leader 掛了咋辦?broker掛了咋辦?controller掛了咋辦?訊息佇列重複消費?如何保證訊息不被重複消費啊 如何保證訊息消費時的冪等性 原因 任務重啟...