Caffeが生成したデータセットをTheano上で直接実行できるようにする(一)--lmdbとprotobuf
どのようなフレームワークを使用してCNNSトレーニングを行うかにかかわらず、3つのデータセットがあります.
Training Setはネットワークのトレーニングに使用されます.
Validation Setは、トレーニング時にネットワークの精度をテストするために使用されます.
Test Setは、ネットワークトレーニングが完了した後の最終的な正解率をテストするために使用される.
Caffeが生成したデータは,LmdbとLeveldbの2つの形式に分けられる.
これらは、キー/値ペア(Key/Value Pair)埋め込み型データベース管理システムプログラミングライブラリです.
lmdbのメモリ消費量はleveldbの1.1倍であるが、lmdbの速度はleveldbより10%〜15%速く、さらに重要なのはlmdbが複数のトレーニングモデルが同じデータセットのセットを同時に読み取ることを可能にすることである.
したがってlmdbはleveldbに代わってCaffeのデフォルトのデータセット生成フォーマットとなる.
Google Protocol Bufferのインストール
Protocol BufferはXMLと同様にデータをシーケンス化するための自動メカニズムである.
まずProtocol Buffersで最新バージョンをダウンロードします.
https://developers.google.com/protocol-buffers/docs/downloads
解凍後に実行:
ダイナミックリンクライブラリの追加
Lmdbのインストール
parse(解析)protobufタイプのデータを解析するには、まず、コンピュータにこのprotobufデータの内部がどのようなフォーマットであるか(どのような項目があり、これらの項目がそれぞれどのようなデータタイプなのかによって何バイトを占有するかを決定し、これらの項目が繰り返して、何回繰り返されるかを決定する)、protobufというmoduleをインストールしてprotobuf専用の構文でこれらのフォーマット(これは.protoファイル)を定義し、protocでこれをコンパイルすることができます.protoファイルは、必要なターゲットファイルを生成します.
自分を定義したい.protoファイルをお読みください:
https://developers.google.com/protocol-buffers/docs/proto?hl=zh-cn
コンパイルprotoファイル
--proto_pathは-Iと略記することもできる.protoが存在するパス
出力パス:
--cpp_out C++で利用可能なヘッダファイルを生成するには、それぞれ***.pb.h(申明類を含む)***.pb.cc(実行可能クラスを含む)は、include"**.pb.h"
--java_out javaで使用可能なヘッダファイルの生成
--python_out pythonで使用可能なヘッダファイルを生成します.pb2.py、使用時import**pb2.pyでいい
最後のパラメータはあなたのです.protoファイルのフルパス.
ディスカッションに参加して、このブログと微博、および個人のホームページの後続内容に注目して更新を続けてください.
転載は作者の労働を尊重して、上述の文字と文章のリンクを完全に保留して、あなたの支持に感謝します!
Training Setはネットワークのトレーニングに使用されます.
Validation Setは、トレーニング時にネットワークの精度をテストするために使用されます.
Test Setは、ネットワークトレーニングが完了した後の最終的な正解率をテストするために使用される.
Caffeが生成したデータは,LmdbとLeveldbの2つの形式に分けられる.
これらは、キー/値ペア(Key/Value Pair)埋め込み型データベース管理システムプログラミングライブラリです.
lmdbのメモリ消費量はleveldbの1.1倍であるが、lmdbの速度はleveldbより10%〜15%速く、さらに重要なのはlmdbが複数のトレーニングモデルが同じデータセットのセットを同時に読み取ることを可能にすることである.
したがってlmdbはleveldbに代わってCaffeのデフォルトのデータセット生成フォーマットとなる.
Google Protocol Bufferのインストール
Protocol BufferはXMLと同様にデータをシーケンス化するための自動メカニズムである.
まずProtocol Buffersで最新バージョンをダウンロードします.
https://developers.google.com/protocol-buffers/docs/downloads
解凍後に実行:
./configure
$ make
$ make check
$ make install
pip installprotobuf
ダイナミックリンクライブラリの追加
exportLD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
Lmdbのインストール
pip install lmdb
parse(解析)protobufタイプのデータを解析するには、まず、コンピュータにこのprotobufデータの内部がどのようなフォーマットであるか(どのような項目があり、これらの項目がそれぞれどのようなデータタイプなのかによって何バイトを占有するかを決定し、これらの項目が繰り返して、何回繰り返されるかを決定する)、protobufというmoduleをインストールしてprotobuf専用の構文でこれらのフォーマット(これは.protoファイル)を定義し、protocでこれをコンパイルすることができます.protoファイルは、必要なターゲットファイルを生成します.
自分を定義したい.protoファイルをお読みください:
https://developers.google.com/protocol-buffers/docs/proto?hl=zh-cn
コンパイルprotoファイル
protoc--proto_path=IMPORT_PATH --cpp_out=DST_DIR --java_out=DST_DIR--python_out=DST_DIR path/to/file.proto
--proto_pathは-Iと略記することもできる.protoが存在するパス
出力パス:
--cpp_out C++で利用可能なヘッダファイルを生成するには、それぞれ***.pb.h(申明類を含む)***.pb.cc(実行可能クラスを含む)は、include"**.pb.h"
--java_out javaで使用可能なヘッダファイルの生成
--python_out pythonで使用可能なヘッダファイルを生成します.pb2.py、使用時import**pb2.pyでいい
最後のパラメータはあなたのです.protoファイルのフルパス.
ディスカッションに参加して、このブログと微博、および個人のホームページの後続内容に注目して更新を続けてください.
転載は作者の労働を尊重して、上述の文字と文章のリンクを完全に保留して、あなたの支持に感謝します!