Blob的基本用法

2021-08-16 19:56:24 字數 1352 閱讀 1249

blob簡介

在caffe中blob相當於tensorflow的tensor,即張量,是caffe框架中資料流的基本儲存單位,caffe中關於資料的運算和儲存都是基於blob進行的。

blob的使用

blob是乙個模板類,在建立物件時需要制定模板引數,例如:

blob a;//宣告乙個blob物件a

cout<<"size: "

如:size: 123

4(24)表示num channels height width 和元素總數.

a.reshape(1,2,3,4,);//設定該物件的大小

float* p = a.mutable_cpu_data();//獲得a的data指標

float* q = a.mutable_cpu_diff()//獲得a的diff(誤差)指標

a.update();//執行update操作,將diff與data融合,做data = data - diff計算,是權值更新的最終實施者。

a.num(),a.channels(),a.height(),a.width(),分別表示物件a中不同維度中的元素數量

a.data_at(n,c,h,w);//表示取a中位置為(n,c,h,w)處的資料

a.asum_data()用於計算並返回絕對值之和(l1範數)

a.sunsq_data()用於計算並返回平方和(l2範數)

blob的強大之處在於可以同步cpu/gpu上的資料。

blob的內部值儲存到磁碟

#include//需要包含標頭檔案

blobproto bp;//構造乙個blobproto物件

a.toproto(&bp,true);//將a序列化,連同diff(預設不帶)

writeprototobinaryfile(bp,"a.blob");//寫入磁碟檔案「a.blob」

blobproto bp2;

readprotofrombinaryfileordie("a.blob",&bp2);//從序列化檔案中讀取磁碟檔案

blob b;//建立乙個blob物件

b.fromproto(bp2,true);//從序列化物件中轉殖b(連同形狀)

//然後就可以使用迴圈將b的內容列印出來

from(int n = 0;nfrom(int c = 0;c < b.channels();c++)

from(int h=0; hfrom(int w = 0;w < b.width();w++)

cout<<"b["

<"]["

<"]["

<"]["

<""]《由此可見,blobproto物件實現了磁碟、記憶體之間的資料通訊。這對於儲存、載入訓練好的模型權值非常使用。

Blob工具基本使用

面積 質心周長主軸 適用場景 1.物件在尺寸 形狀 方向上有很大差異 很難或不可能訓練模型 2.在背景中沒有明顯灰度陰影的物件 3.物件沒有重疊或者連線 典型應用案例 1.檢測點膠的數量,尺寸,形狀 2.檢測不良晶元上墨水點的位置和大小 3.監測藥片的破碎及大小 4.根據物件的大小,形狀和位置等進行...

mysql 的基本用法 mysql基本用法

mysql 5.1 中文參考手冊 show databases 顯示資料庫 drop database 資料庫名 刪除資料庫 set names utf8 設定資料庫編碼為utf 8 source x 資料庫名.sql 匯入乙個資料庫 use 資料庫名 嘗試訪問資料庫 create database...

mysql 的基本用法 mysql基本用法

mysql 5.1 中文參考手冊 show databases 顯示資料庫 drop database 資料庫名 刪除資料庫 set names utf8 設定資料庫編碼為utf 8 source x 資料庫名.sql 匯入乙個資料庫 use 資料庫名 嘗試訪問資料庫 create database...