Caffeでネットワーク定義する際に、どういったレイヤーが用意されているのかを知っておく必要がある。
(無ければ作る必要があるし)
ということで、一覧表を作ってみる。
レイヤーパラメータ
まずはじめに、直接は関係ありませんが、各レイヤー共通のパラメータは以下の通り。
変数名 | 意味 |
---|---|
name | レイヤー名 |
type | レイヤー種類(下表の「type」を指定) |
bottom | 下層のブロブの名前 |
top | 上層のブロブの名前 |
loss_weight | 目的の中の各トップブロブを割り当てるためのウェイトの量 各レイヤーは、各トップブロブにデフォルト値(通常0または1のいずれか)を割り当てます |
param | トレーニングパラメータ(グローバル学習定数の乗数、およびウェイト共有に使用される名前やその他の設定) |
blobs | レイヤの数値パラメータを含むブロブ |
include | 現在のNetStateに基づいて、ネットワークにレイヤーが含まれているかどうかを制御するルール 0以外の数を指定できますが、include/exclude両方に設定することはできません ルールが指定されていない場合、レイヤーは常に含まれます 現在のNetStateが指定されたルールのANY(すなわち、1つまたは複数)を満たす場合、そのレイヤーは包含されます |
exclude | 現在のNetStateに基づいて、ネットワークにレイヤーが含まれているかどうかを制御するルール 0以外の数を指定できますが、include/exclude両方に設定することはできません ルールが指定されていない場合、レイヤーは常に含まれます 現在のNetStateが指定されたルールのANY(すなわち、1つまたは複数)を満たす場合、そのレイヤーは除外されます |
phase | 計算のためのトレーニング/テストフェーズ |
propagate_down | サイズは、0または底部の数と同じでなければなりません |
※データはbottomからtopに流れていくので要注意 |
レイヤー種類
レイヤーの種類とパラメータは以下の通り。
レイヤー名 | type | パラメータ名 | 変数名 |
---|---|---|---|
AbsValLayer | AbsVal | ||
AccuracyLayer | Accuracy | AccuracyParameter | top_k axis ignore_label |
ArgMaxLayer | ArgMax | ArgMaxParameter | out_max_val top_k axis |
BaseConvolutionLayer | × | ||
BaseDataLayer | × | ||
BasePrefetchingDataLayer | × | ||
BatchNormLayer | BatchNorm | BatchNormParameter | use_global_stats moving_average_fraction eps |
BatchReindexLayer | BatchReindex | ||
BiasLayer | Bias | BiasParameter | axis num_axes filler |
BNLLLayer | BNLL | ||
ConcatLayer | Concat | ConcatParameter | concat_dim axis |
ContrastiveLossLayer | ContrastiveLoss | ContrastiveLossParameter | margin legacy_version |
ConvolutionLayer | Convolution | ConvolutionParameter | num_output bias_term pad kernel_size group stride weight_filler bias_filler pad_h pad_w kernel_h kernel_w stride_h stride_w engine axis force_nd_im2col |
CropLayer | Crop | CropParameter | axis offset |
CuDNNConvolutionLayer | × | ||
CuDNNLCNLayer | × | ||
CuDNNLRNLayer | × | ||
CuDNNPoolingLayer | × | ||
CuDNNReLULayer | × | ||
CuDNNSigmoidLayer | × | ||
CuDNNSoftmaxLayer | × | ||
CuDNNTanHLayer | × | ||
DataLayer | Data | DataParameter | source scale mean_file batch_size crop_size mirror rand_skip backend force_encoded_color prefetch |
DeconvolutionLayer | Deconvolution | ||
DropoutLayer | Dropout | DropoutParameter | dropout_ratio |
DummyDataLayer | DummyData | DummyDataParameter | data_filler num channels height width shape |
EltwiseLayer | Eltwise | EltwiseParameter | operation coeff stable_prod_grad |
ELULayer | ELU | ELUParameter | alpha |
EmbedLayer | Embed | EmbedParameter | num_output input_dim bias_term weight_filler bias_filler |
EuclideanLossLayer | EuclideanLoss | ||
ExpLayer | Exp | ExpParameter | base scale shift |
FilterLayer | Filter | ||
FlattenLayer | Flatten | FlattenParameter | axis end_axis |
HDF5DataLayer | HDF5Data | HDF5DataParameter | source batch_size shuffle |
HDF5OutputLayer | HDF5Output | HDF5OutputParameter | file_name |
HingeLossLayer | HingeLoss | HingeLossParameter | norm |
Im2colLayer | Im2col | ||
ImageDataLayer | ImageData | ImageDataParameter | source scale mean_file batch_size crop_size mirror rand_skip shuffle new_height new_width is_color root_folder |
InfogainLossLayer | InfogainLoss | InfogainLossParameter | source |
InnerProductLayer | InnerProduct | InnerProductParameter | num_output bias_term weight_filler bias_filler axis transpose |
InputLayer | Input | InputParameter | shape |
LogLayer | Log | LogParameter | base scale shift |
LossLayer | × | ||
LRNLayer | LRN | LRNParameter | local_size alpha beta norm_region k engine |
LSTMLayer | LSTM | ||
LSTMUnitLayer | LSTMUnit | ||
MemoryDataLayer | MemoryData | MemoryDataParameter | batch_size channels height width |
MultinomialLogisticLossLayer | MultinomialLogisticLoss | ||
MVNLayer | MVN | MVNParameter | normalize_variance across_channels eps |
NeuronLayer | × | ||
ParameterLayer | Parameter | ParameterParameter | shape |
PoolingLayer | Pooling | PoolingParameter | pool kernel_size stride pad kernel_h kernel_w stride_h stride_w pad_h pad_w engine global_pooling |
PowerLayer | Power | PowerParameter | power scale shift |
PReLULayer | PReLU | ||
PythonLayer | Python | PythonParameter | module layer param_str share_in_parallel |
RecurrentLayer | Recurrent | RecurrentParameter | num_output weight_filler bias_filler debug_info expose_hidden |
ReductionLayer | Reduction | ReductionParameter | operation axis coeff |
ReLULayer | ReLU | ReLUParameter | negative_slope engine |
ReshapeLayer | Reshape | ReshapeParameter | shape axis num_axes |
RNNLayer | RNN | ||
ScaleLayer | Scale | ScaleParameter | axis num_axes filler bias_term bias_filler |
SigmoidLayer | Sigmoid | SigmoidParameter | engine |
SigmoidCrossEntropyLossLayer | SigmoidCrossEntropyLoss | ||
SilenceLayer | Silence | ||
SliceLayer | Slice | SliceParameter | slice_dim slice_point axis |
SoftmaxLayer | Softmax | SoftmaxParameter | engine axis |
SoftmaxWithLossLayer | SoftmaxWithLoss | ||
SplitLayer | Split | ||
SPPLayer | SPP | ||
TanHLayer | TanH | TanHParameter | engine |
ThresholdLayer | Threshold | ThresholdParameter | threshold |
TileLayer | Tile | TileParameter | axis tiles |
WindowDataLayer | WindowData | WindowDataParameter | source scale mean_file batch_size crop_size mirror fg_threshold bg_threshold fg_fraction context_pad crop_mode cache_images root_folder |
×:prototxtで指定できないレイヤー(親クラスだったり、派生だったり) |