caffeModelSummarizer¶
概要¶
caffeModelSummarizerは、DNN開発プラットフォームcaffeがネットワークの定義ファイルとして読み込むprototxtを読み込んで、 ネットワーク構造をサマライズするためのユーティリティです。 CSV形式のExcel等で読み込めるサマリファイル以外に、その情報をGraphvizで描画可能なダイアグラムとしても出力することができます。 DNNネットワークを画像化できる他ツールも存在しますが、本ツールの特徴は各レイヤの係数量、ops値なども表示されることです。
リビジョン¶
caffeModelSummarizer.py v01r02
コマンドライン¶
python caffeModelSummarizer.py [option [option_parameter]]...
以下のようなオプションをつけて動作させることで所望の結果を得ることができます。
コマンドラインオプション
オプション 意味 -h ヘルプ表示 –PROT pt 入力であるprototxtファイル名を指定 –CSV csv レイヤ毎の集計出力ファイル名 –DOT d Graphviz用描画スクリプト –ICH i 入力チャネルサイズ指定 –IH h 入力縦サイズ –IW w 入力横サイズ –NAME n Graph Name指定(prototxt内不在の時) -v 処理の途中経過を詳細に出力 -V バージョンのみ表示して終了 -d デバッグ用オプション
構造¶
-
class
caffeModelSummarizer.
caffeProtoTxtReader
(pfnam)[ソース]¶ caffe protoTxt Reader Class.
caffe prototxtを読み取ってデータベース化するクラス
-
class
caffeModelSummarizer.
csvFileWriter
(onam, hDic, aDic, lDic, lLst, bt, ch, w, h)[ソース]¶ CSV File Writer Class.
データベースをCSVファイルに吐き出す
-
grouping
()[ソース]¶ grouping method
タイプ毎に分類して属性リストを作成するメソッド .. 0 1 2 3 4 5 6 7 8 9 10 11 12 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH
-
procBatchNorm
(nam, v)[ソース]¶ BatchNormレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact 過学習を防ぐためのレイヤなので nElem = 0, ops = 0とする 固有パラメータ とりあえずなし[]
-
procConcat
(nam, v)[ソース]¶ Concatレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact データを結合するだけのレイヤなので nElem = 0, ops = 0とする 固有パラメータ [axis]
-
procConvolution
(nam, v)[ソース]¶ Convolutionレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact 固有パラメータ [M, N, K]
-
procDropout
(nam, v)[ソース]¶ Dropoutレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact oCH<-iCH 過学習を防ぐためのレイヤなので nElem = 0, ops = 0とする 固有パラメータは[ドロップアウトレシオ]
-
procEltwise
(nam, v)[ソース]¶ Eltwiseレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact 要素毎処理レイヤなので nElem = 0, ops = iCH * iW * iH とする 固有パラメータなし []
-
procFlatten
(nam, v)[ソース]¶ Flattenレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact シェープを変更するだけのレイヤなので、nElem = 0, ops = 0 固有パラメータなし []
-
procInnerProduct
(nam, v)[ソース]¶ procInnerProduct:
InnterProductレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact 固有パラメータ [M, N, K, weight_filler_type, bias_filler_type, bias_filler_value]
-
procInput
(nam, v)[ソース]¶ Inputレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact 入力レイヤ、ここでは無視 固有パラメータなし
-
procLRN
(nam, v)[ソース]¶ LRNレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact データを平均化するレイヤ nElem = 0, ops = local_size * 要素数 * 2とする 固有パラメータ [local_size, alpha, beta, norm_region]
-
procMainDB
(num, typ, layer, param)[ソース]¶ 共通処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact
-
procPooling
(nam, v)[ソース]¶ Poolingレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact 固有パラメータ [pool]
-
procReLU
(nam, v)[ソース]¶ ReLUレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact oCH<-iCH 本来レイヤではなく活性化関数 nElem = 0, ops = iCH * iW * iH とする 固有パラメータなし []
-
procScale
(nam, v)[ソース]¶ Scaleレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact oCH<-iCH RELU同様の関数 nElem = 0, ops = iCH * iW * iH とする 固有パラメータは[bias_term]
-
procSoftmax
(nam, v)[ソース]¶ Softmaxレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact 確率を求めるレイヤ nElem = num_output, ops = num_output * 3とする 固有パラメータなし
-
procSoftmaxWithLoss
(nam, v)[ソース]¶ SoftmaxWithLossレイヤ処理 .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact 学習用のレイヤなので nElem = 1, ops= 0とする 固有パラメータなし []
-
-
class
caffeModelSummarizer.
DOTwriterDNNdataFlow
(fname, hDic, mDic, bt, lLst, ch, w, h, gn)[ソース]¶ DOT Writer DNN Data Flow Graph Class.
DOT言語(GraphVizの入力言語)を生成するクラス DNN Data flow Graph生成用
-
makeNODE
()[ソース]¶ make NODE.
グラフのノード部分を生成する .. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 レイヤ名対 レイヤ番号, type, bottom, top, pad, kernel_size, stride, num_output, oW, oH, iCH, iW, iH, nElem, ops, nFact
-