caffe 之 proto 理解

caffe 所有層的參數全部定義在一個caffe.proto 的文件裏面,裏面有每個參數的詳細解釋,點擊打開鏈接

在protocol buffers的官網的教程中,看到了一些基本的語法和編譯使用,爲了我們更好的理解caffe

自定義一個.proto文件其實是很簡單,如下所示

syntax = "proto2";

package tutorial;

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phones = 4;
}

message AddressBook {
  repeated Person people = 1;
}

首先是指定systax 是多少,目前有proto2 和proto3, caffe.proto 用的是proto2

然後是定義package, 這個是爲了防止多個.protot 引起衝突,所以每個.proto要聲明一個package,類似我們建的工程項目名

接下就是寫message,message裏面有三個修飾符,分別爲required,optional 和 repeated

required: 這個參數必須要存在,而且只有一個

optional: 這個參數可以有也可以無,但是不超過一個

repeated: 這個參數可以重複多次

每個參數後面會有="1","2","3"... 這是爲了標識這些參數,在進行編碼時

當編寫完.protot文件時,我們可以使用protoc 來編譯

protoc -I=. --cpp_out=. ./addressbook.proto

在當前目錄下會產生兩個文件


如果要使用這裏面的函數,將頭文件include進去就可以了.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章