Caffe的blob.hpp解读
blob.hpp
namespace caffe { class Blob{} }
public:
- 
    
Blob构造函数
- Blob(): data_(), diff_(), count_(0), capacity_(0) {} Blob的构造函数
 - explicit Blob( const int num, const int channels, const int height, const int width)
 - explicit Blob( const vector< int>& shape)
 
 - 
    
Reshape() 调整shape函数
- void Reshape( const int num, const int channels, const int height, const int width)
 - void Reshape(const vector< int>& shape) 改变blob的维数,如果需要则分配新的内存。该函数可被用做创建初始内存的分配,与在Reshape或Forward过程中,调整top blob的维数
 - void Reshape( const vector< int>& shape)
 - void Reshape( const BlobShape& shape)
 
 - 
    
void ReshapeLike( const Blob& other)
 - 
    
inline string shape_string() const {} 返回shape的具体参数
 - 
    
inline const vector< int>& shape() const {} 返回shape参数
 - 
    
inline int shape( int index) const{} 返回第index下标的维数
 - 
    
inline int num_axes() const {}
 - 
    
count() 返回总数
- inline int count() const {}
 - inline int count( int start_axis, int end_axis) const{} 计算slice的volume,即在坐标中的维数乘积
 - inline int count( int start_axies) const {} 计算slice的volume,从特定的第一个到最后一个
 - inline int CanonicalAxisIndex( int axis_index) const{}
 
 - 
    
返回shape[i]具体参数
- inline int num() const{}
 - inline int channels() const{}
 - inline int height() const{}
 - inline int width() const{}
 
 - 
    
inline int LegacyShape( int index) const {}
 - 
    
offset() 返回偏移量
- inline int offset( const int n, const int c=0, const int h=0, const int w=0) const {}
 - inline int offset( const vector< int>& indices) const{}
 
 - 
    
void CopyFrom( const Blob< Dtype>& source, bool copy_diff=false, bool reshape=false) 从source Blob复制。如果copy_diff为false,复制data,否则复制diff;如果reshape为true,Reshape这blob为其他shape
 - 
    
data_at()与diff_at()的表达
- inline Dtype data_at( const int n, const int c, const int h,const int w) const {}
 - inline Dtype diff_at( const int n, const int c, const int h,const int w) const {}
 - inline Dtype data_at( const vector< int>& index) const {}
 - inline Dtype diff_at( const vector< int>& index) const {}
 
 - 
    
data()与diff()在内存的形式
- inline const shared_ptr< SyncedMemory>& data() const {}
 - inline cosnt shared_ptr< SyncedMemory>& diff() const{}
 
 - 
    
cpu与gpu中,data()与diff()表达
- const Dtype* cpu_data() const -void set_cpu_date( Dtype* data)
 - const Dtype* gpu_data() const
 - const Dtype* cpu_diff() const
 - const Dtype* gpu_diff() const
 
 - 
    
mutable_data()与mutable_diff()
- Dtype* mutable_cpu_data()
 - Dtype* mutable_gpu_data()
 - Dtype* mutable_cpu_diff()
 - Dtype* mutable_gpu_diff()
 
 - 
    
void Update() 更新网络参数
 - 
    
void FromProto( const BlobProto& proto, bool reshape=true) 将配置参数从proto buffer中读取
 - 
    
void ToProto( BlobProto* proto, bool write_diff=false) const{} 将配置参数写进proto buffer中
 - 
    
asum_data()与asum_diff()
- Dtype asum_data() const 计算data的绝对值之和(L1 norm)
 - Dtype asum_diff() const 计算diff的绝对值之和(L1 norm)
 - Dtype sumsq_data() const 计算data的平方和(L2 norm squared)
 - Dtype sumsq_diff() const 计算diff的平方和(L2 norm squared)
 
 - 
    
scale_data()与scale_diff()
- void scale_data( Dtype scale_factor) 用固定系数scale data
 - void scale_diff( Dtype scale_factor) 用固定系数scale diff
 
 - 
    
void ShareData( const Blob& other) 设置data_为shared_ptr指向SyncedMemory,其保存Blob的data_
 - 
    
void ShareDiff( const Blob& other) 设置data_为shared_ptr指向SyncedMemory,其保存Blob的data_
 - 
    
bool ShapeEquals( const BlobProto& other)
 
protected:
- 
    
shared_ptr< SyncedMemory> data_ 数据保存在data_中
 - 
    
shared_ptr
diff_ 误差保存在diff_中  - 
    
vector
shape_ 具体参数保存在shape_  - 
    
int count_ 需要总数目count_
 - 
    
int capacity_ 容量capacity_