カフェ深い学習データ構造(D) - データ構造blob.hppのブロブ詳細な説明

        ブロブは、/カフェ/パスを含め、この記事では、我々はブロブするために、blob.hppファイルの解釈を詳細なカフェのルートディレクトリにこのファイル内のステートメントblob.hppにおける基本的なデータ構造のカフェで私たちは、データ構造の深い理解を持っています。

#ifndef CAFFE_BLOB_HPP_
#define CAFFE_BLOB_HPP_

#include <algorithm>
#include <string>
#include <vector>

#include "caffe/common.hpp"
#include "caffe/proto/caffe.pb.h"
#include "caffe/syncedmem.hpp"

        これらの行はblob.hppファイル、ファイルが含まれているメインのヘッダファイルを始めています。

const int kMaxBlobAxes = 32;

このラインは、ブロブ寸法の最大数を表すint型の変数を定義し、カフェの古いバージョンの寸法は、4つの次元のNUM、チャネル、高さ、幅の合計が含まれている、カフェの新しいバージョンは、32件の寸法をサポートでき。

namespace caffe {

この行は、名前空間のカフェを定義します

template <typename Dtype>

これはDTYPEタイプ名として、C ++では、データタイプの様々なフロートでき、二重、等そのようなDTYPEとして、この処理方法によって達成することができる、このクラスは、その最後のカテゴリであることを示し

class Blob {
 public:
  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);

ブロブは、それぞれのデータクラス構築BLOB、NUMを使用して第1関数の2つの異なるタイプを使用して次の2行の明示的なステートメント2つのコンストラクタは、チャネルは、高さが、この情報の幅寸法は、4つのクラスブロブを構築しますINTを使用して、ベクターがブロブ形状32の形状最大寸法構成されている旧バージョンのカフェ、第二の機能との互換性を保つために使用されます。

  void Reshape(const int num, const int channels, const int height, const int width);

このラインは、その役割がNUM、チャネル、高さ、元のブロブの形状を変更するための情報の4次元の幅であり、変形関数を定義し、この機能は主にカフェの旧バージョンとの互換性のために使用されます。

  void Reshape(const vector<int>& shape);

このラインは、BLOBにより形状ベクトル形状を変更することで他の変形関数を定義します。

  void Reshape(const BlobShape& shape);

このラインは、変形関数を変形する形状情報ブロブ記述ファイルの関数で定義しています。

  void ReshapeLike(const Blob& other);

このラインは、このクラスの形状は他の形状と同じになっている、まだ変形の関数です。

  inline string shape_string() const {
    ostringstream stream;
    for (int i = 0; i < shape_.size(); ++i) {
      stream << shape_[i] << " ";
    }
    stream << "(" << count_ << ")";
    return stream.str();
  }

関数は上記で定義され、その役割は、文字列を返すにブロブ形状情報です。第一の機能に戻しストリームに取り付けられた文字列へshape_のそれぞれのループの寸法で、可変出力の流れを定義し、最後の要素の数は、文字を形成する、count_ストリームの背後に連接文字列を出力します。請求shape_ BLOBおよびcount_がメンバ変数である、shape_ショーブロブ形状ベクトル、ブロブの数がcount_ INT可変要素で表します。カフェメンバ変数を区別するために、アンダースコア、より多くの数字を末尾にされています。

  inline const vector<int>& shape() const { return shape_; }

このラインは、ブロブの形状が読み取り機能直接バックメンバ変数shape_で定義しています。

  inline int shape(int index) const {
    return shape_[CanonicalAxisIndex(index)];
  }

このラインは、読み出しサイズが関数でCanonicalAxisIndex()関数と呼ばれる一次元の関数であり、その役割は、次元の数を同定することで定義され、以下に詳細に定義され、利用できる指標です。

 

 

 

 

 

 

公開された97元の記事 ウォン称賛7 ビュー10000 +

おすすめ

転載: blog.csdn.net/bhniunan/article/details/104549698