Ceil mode from experimental version of Caffe, https://github.com/BVLC/caffe/pull/3057

This commit is contained in:
Dmitry Kurtaev 2017-10-16 15:43:28 +03:00
parent 1563300197
commit b903ff8992
4 changed files with 275 additions and 156 deletions

View File

@ -1212,7 +1212,7 @@ void protobuf_AssignDesc_caffe_2eproto() {
sizeof(ParameterParameter), sizeof(ParameterParameter),
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ParameterParameter, _internal_metadata_)); GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ParameterParameter, _internal_metadata_));
PoolingParameter_descriptor_ = file->message_type(48); PoolingParameter_descriptor_ = file->message_type(48);
static const int PoolingParameter_offsets_[12] = { static const int PoolingParameter_offsets_[13] = {
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, pool_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, pool_),
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, pad_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, pad_),
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, pad_h_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, pad_h_),
@ -1225,6 +1225,7 @@ void protobuf_AssignDesc_caffe_2eproto() {
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, stride_w_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, stride_w_),
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, engine_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, engine_),
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, global_pooling_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, global_pooling_),
GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PoolingParameter, ceil_mode_),
}; };
PoolingParameter_reflection_ = PoolingParameter_reflection_ =
::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection( ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection(
@ -2384,7 +2385,7 @@ void protobuf_AddDesc_caffe_2eproto_impl() {
"rameter\022 \n\022normalize_variance\030\001 \001(\010:\004tru" "rameter\022 \n\022normalize_variance\030\001 \001(\010:\004tru"
"e\022\036\n\017across_channels\030\002 \001(\010:\005false\022\022\n\003eps" "e\022\036\n\017across_channels\030\002 \001(\010:\005false\022\022\n\003eps"
"\030\003 \001(\002:\0051e-09\"5\n\022ParameterParameter\022\037\n\005s" "\030\003 \001(\002:\0051e-09\"5\n\022ParameterParameter\022\037\n\005s"
"hape\030\001 \001(\0132\020.caffe.BlobShape\"\242\003\n\020Pooling" "hape\030\001 \001(\0132\020.caffe.BlobShape\"\273\003\n\020Pooling"
"Parameter\0225\n\004pool\030\001 \001(\0162\".caffe.PoolingP" "Parameter\0225\n\004pool\030\001 \001(\0162\".caffe.PoolingP"
"arameter.PoolMethod:\003MAX\022\016\n\003pad\030\004 \001(\r:\0010" "arameter.PoolMethod:\003MAX\022\016\n\003pad\030\004 \001(\r:\0010"
"\022\020\n\005pad_h\030\t \001(\r:\0010\022\020\n\005pad_w\030\n \001(\r:\0010\022\023\n\013" "\022\020\n\005pad_h\030\t \001(\r:\0010\022\020\n\005pad_w\030\n \001(\r:\0010\022\023\n\013"
@ -2392,158 +2393,159 @@ void protobuf_AddDesc_caffe_2eproto_impl() {
"ernel_w\030\006 \001(\r\022\021\n\006stride\030\003 \001(\r:\0011\022\020\n\010stri" "ernel_w\030\006 \001(\r\022\021\n\006stride\030\003 \001(\r:\0011\022\020\n\010stri"
"de_h\030\007 \001(\r\022\020\n\010stride_w\030\010 \001(\r\0227\n\006engine\030\013" "de_h\030\007 \001(\r\022\020\n\010stride_w\030\010 \001(\r\0227\n\006engine\030\013"
" \001(\0162\036.caffe.PoolingParameter.Engine:\007DE" " \001(\0162\036.caffe.PoolingParameter.Engine:\007DE"
"FAULT\022\035\n\016global_pooling\030\014 \001(\010:\005false\".\n\n" "FAULT\022\035\n\016global_pooling\030\014 \001(\010:\005false\022\027\n\t"
"PoolMethod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOCHAST" "ceil_mode\030\r \001(\010:\004true\".\n\nPoolMethod\022\007\n\003M"
"IC\020\002\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t" "AX\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOCHASTIC\020\002\"+\n\006Engine\022"
"\n\005CUDNN\020\002\"F\n\016PowerParameter\022\020\n\005power\030\001 \001" "\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"F\n\016Po"
"(\002:\0011\022\020\n\005scale\030\002 \001(\002:\0011\022\020\n\005shift\030\003 \001(\002:\001" "werParameter\022\020\n\005power\030\001 \001(\002:\0011\022\020\n\005scale\030"
"0\"g\n\017PythonParameter\022\016\n\006module\030\001 \001(\t\022\r\n\005" "\002 \001(\002:\0011\022\020\n\005shift\030\003 \001(\002:\0010\"g\n\017PythonPara"
"layer\030\002 \001(\t\022\023\n\tparam_str\030\003 \001(\t:\000\022 \n\021shar" "meter\022\016\n\006module\030\001 \001(\t\022\r\n\005layer\030\002 \001(\t\022\023\n\t"
"e_in_parallel\030\004 \001(\010:\005false\"\300\001\n\022Recurrent" "param_str\030\003 \001(\t:\000\022 \n\021share_in_parallel\030\004"
"Parameter\022\025\n\nnum_output\030\001 \001(\r:\0010\022-\n\rweig" " \001(\010:\005false\"\300\001\n\022RecurrentParameter\022\025\n\nnu"
"ht_filler\030\002 \001(\0132\026.caffe.FillerParameter\022" "m_output\030\001 \001(\r:\0010\022-\n\rweight_filler\030\002 \001(\013"
"+\n\013bias_filler\030\003 \001(\0132\026.caffe.FillerParam" "2\026.caffe.FillerParameter\022+\n\013bias_filler\030"
"eter\022\031\n\ndebug_info\030\004 \001(\010:\005false\022\034\n\rexpos" "\003 \001(\0132\026.caffe.FillerParameter\022\031\n\ndebug_i"
"e_hidden\030\005 \001(\010:\005false\"\255\001\n\022ReductionParam" "nfo\030\004 \001(\010:\005false\022\034\n\rexpose_hidden\030\005 \001(\010:"
"eter\022=\n\toperation\030\001 \001(\0162%.caffe.Reductio" "\005false\"\255\001\n\022ReductionParameter\022=\n\toperati"
"nParameter.ReductionOp:\003SUM\022\017\n\004axis\030\002 \001(" "on\030\001 \001(\0162%.caffe.ReductionParameter.Redu"
"\005:\0010\022\020\n\005coeff\030\003 \001(\002:\0011\"5\n\013ReductionOp\022\007\n" "ctionOp:\003SUM\022\017\n\004axis\030\002 \001(\005:\0010\022\020\n\005coeff\030\003"
"\003SUM\020\001\022\010\n\004ASUM\020\002\022\t\n\005SUMSQ\020\003\022\010\n\004MEAN\020\004\"\215\001" " \001(\002:\0011\"5\n\013ReductionOp\022\007\n\003SUM\020\001\022\010\n\004ASUM\020"
"\n\rReLUParameter\022\031\n\016negative_slope\030\001 \001(\002:" "\002\022\t\n\005SUMSQ\020\003\022\010\n\004MEAN\020\004\"\215\001\n\rReLUParameter"
"\0010\0224\n\006engine\030\002 \001(\0162\033.caffe.ReLUParameter" "\022\031\n\016negative_slope\030\001 \001(\002:\0010\0224\n\006engine\030\002 "
".Engine:\007DEFAULT\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022" "\001(\0162\033.caffe.ReLUParameter.Engine:\007DEFAUL"
"\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"Z\n\020ReshapeParamete" "T\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005C"
"r\022\037\n\005shape\030\001 \001(\0132\020.caffe.BlobShape\022\017\n\004ax" "UDNN\020\002\"Z\n\020ReshapeParameter\022\037\n\005shape\030\001 \001("
"is\030\002 \001(\005:\0010\022\024\n\010num_axes\030\003 \001(\005:\002-1\"\245\001\n\016Sc" "\0132\020.caffe.BlobShape\022\017\n\004axis\030\002 \001(\005:\0010\022\024\n\010"
"aleParameter\022\017\n\004axis\030\001 \001(\005:\0011\022\023\n\010num_axe" "num_axes\030\003 \001(\005:\002-1\"\245\001\n\016ScaleParameter\022\017\n"
"s\030\002 \001(\005:\0011\022&\n\006filler\030\003 \001(\0132\026.caffe.Fille" "\004axis\030\001 \001(\005:\0011\022\023\n\010num_axes\030\002 \001(\005:\0011\022&\n\006f"
"rParameter\022\030\n\tbias_term\030\004 \001(\010:\005false\022+\n\013" "iller\030\003 \001(\0132\026.caffe.FillerParameter\022\030\n\tb"
"bias_filler\030\005 \001(\0132\026.caffe.FillerParamete" "ias_term\030\004 \001(\010:\005false\022+\n\013bias_filler\030\005 \001"
"r\"x\n\020SigmoidParameter\0227\n\006engine\030\001 \001(\0162\036." "(\0132\026.caffe.FillerParameter\"x\n\020SigmoidPar"
"caffe.SigmoidParameter.Engine:\007DEFAULT\"+" "ameter\0227\n\006engine\030\001 \001(\0162\036.caffe.SigmoidPa"
"\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDN" "rameter.Engine:\007DEFAULT\"+\n\006Engine\022\013\n\007DEF"
"N\020\002\"L\n\016SliceParameter\022\017\n\004axis\030\003 \001(\005:\0011\022\023" "AULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"L\n\016SlicePar"
"\n\013slice_point\030\002 \003(\r\022\024\n\tslice_dim\030\001 \001(\r:\001" "ameter\022\017\n\004axis\030\003 \001(\005:\0011\022\023\n\013slice_point\030\002"
"1\"\211\001\n\020SoftmaxParameter\0227\n\006engine\030\001 \001(\0162\036" " \003(\r\022\024\n\tslice_dim\030\001 \001(\r:\0011\"\211\001\n\020SoftmaxPa"
".caffe.SoftmaxParameter.Engine:\007DEFAULT\022" "rameter\0227\n\006engine\030\001 \001(\0162\036.caffe.SoftmaxP"
"\017\n\004axis\030\002 \001(\005:\0011\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022" "arameter.Engine:\007DEFAULT\022\017\n\004axis\030\002 \001(\005:\001"
"\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"r\n\rTanHParameter\0224" "1\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005C"
"\n\006engine\030\001 \001(\0162\033.caffe.TanHParameter.Eng" "UDNN\020\002\"r\n\rTanHParameter\0224\n\006engine\030\001 \001(\0162"
"ine:\007DEFAULT\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005C" "\033.caffe.TanHParameter.Engine:\007DEFAULT\"+\n"
"AFFE\020\001\022\t\n\005CUDNN\020\002\"/\n\rTileParameter\022\017\n\004ax" "\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN"
"is\030\001 \001(\005:\0011\022\r\n\005tiles\030\002 \001(\005\"*\n\022ThresholdP" "\020\002\"/\n\rTileParameter\022\017\n\004axis\030\001 \001(\005:\0011\022\r\n\005"
"arameter\022\024\n\tthreshold\030\001 \001(\002:\0010\"\301\002\n\023Windo" "tiles\030\002 \001(\005\"*\n\022ThresholdParameter\022\024\n\tthr"
"wDataParameter\022\016\n\006source\030\001 \001(\t\022\020\n\005scale\030" "eshold\030\001 \001(\002:\0010\"\301\002\n\023WindowDataParameter\022"
"\002 \001(\002:\0011\022\021\n\tmean_file\030\003 \001(\t\022\022\n\nbatch_siz" "\016\n\006source\030\001 \001(\t\022\020\n\005scale\030\002 \001(\002:\0011\022\021\n\tmea"
"e\030\004 \001(\r\022\024\n\tcrop_size\030\005 \001(\r:\0010\022\025\n\006mirror\030" "n_file\030\003 \001(\t\022\022\n\nbatch_size\030\004 \001(\r\022\024\n\tcrop"
"\006 \001(\010:\005false\022\031\n\014fg_threshold\030\007 \001(\002:\0030.5\022" "_size\030\005 \001(\r:\0010\022\025\n\006mirror\030\006 \001(\010:\005false\022\031\n"
"\031\n\014bg_threshold\030\010 \001(\002:\0030.5\022\031\n\013fg_fractio" "\014fg_threshold\030\007 \001(\002:\0030.5\022\031\n\014bg_threshold"
"n\030\t \001(\002:\0040.25\022\026\n\013context_pad\030\n \001(\r:\0010\022\027\n" "\030\010 \001(\002:\0030.5\022\031\n\013fg_fraction\030\t \001(\002:\0040.25\022\026"
"\tcrop_mode\030\013 \001(\t:\004warp\022\033\n\014cache_images\030\014" "\n\013context_pad\030\n \001(\r:\0010\022\027\n\tcrop_mode\030\013 \001("
" \001(\010:\005false\022\025\n\013root_folder\030\r \001(\t:\000\"\353\001\n\014S" "\t:\004warp\022\033\n\014cache_images\030\014 \001(\010:\005false\022\025\n\013"
"PPParameter\022\026\n\016pyramid_height\030\001 \001(\r\0221\n\004p" "root_folder\030\r \001(\t:\000\"\353\001\n\014SPPParameter\022\026\n\016"
"ool\030\002 \001(\0162\036.caffe.SPPParameter.PoolMetho" "pyramid_height\030\001 \001(\r\0221\n\004pool\030\002 \001(\0162\036.caf"
"d:\003MAX\0223\n\006engine\030\006 \001(\0162\032.caffe.SPPParame" "fe.SPPParameter.PoolMethod:\003MAX\0223\n\006engin"
"ter.Engine:\007DEFAULT\".\n\nPoolMethod\022\007\n\003MAX" "e\030\006 \001(\0162\032.caffe.SPPParameter.Engine:\007DEF"
"\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOCHASTIC\020\002\"+\n\006Engine\022\013\n" "AULT\".\n\nPoolMethod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\n"
"\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"\340\023\n\020V1L" "STOCHASTIC\020\002\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005C"
"ayerParameter\022\016\n\006bottom\030\002 \003(\t\022\013\n\003top\030\003 \003" "AFFE\020\001\022\t\n\005CUDNN\020\002\"\340\023\n\020V1LayerParameter\022\016"
"(\t\022\014\n\004name\030\004 \001(\t\022$\n\007include\030 \003(\0132\023.caff" "\n\006bottom\030\002 \003(\t\022\013\n\003top\030\003 \003(\t\022\014\n\004name\030\004 \001("
"e.NetStateRule\022$\n\007exclude\030! \003(\0132\023.caffe." "\t\022$\n\007include\030 \003(\0132\023.caffe.NetStateRule\022"
"NetStateRule\022/\n\004type\030\005 \001(\0162!.caffe.V1Lay" "$\n\007exclude\030! \003(\0132\023.caffe.NetStateRule\022/\n"
"erParameter.LayerType\022\037\n\005blobs\030\006 \003(\0132\020.c" "\004type\030\005 \001(\0162!.caffe.V1LayerParameter.Lay"
"affe.BlobProto\022\016\n\005param\030\351\007 \003(\t\022>\n\017blob_s" "erType\022\037\n\005blobs\030\006 \003(\0132\020.caffe.BlobProto\022"
"hare_mode\030\352\007 \003(\0162$.caffe.V1LayerParamete" "\016\n\005param\030\351\007 \003(\t\022>\n\017blob_share_mode\030\352\007 \003("
"r.DimCheckMode\022\020\n\010blobs_lr\030\007 \003(\002\022\024\n\014weig" "\0162$.caffe.V1LayerParameter.DimCheckMode\022"
"ht_decay\030\010 \003(\002\022\023\n\013loss_weight\030# \003(\002\0220\n\016a" "\020\n\010blobs_lr\030\007 \003(\002\022\024\n\014weight_decay\030\010 \003(\002\022"
"ccuracy_param\030\033 \001(\0132\030.caffe.AccuracyPara" "\023\n\013loss_weight\030# \003(\002\0220\n\016accuracy_param\030\033"
"meter\022,\n\014argmax_param\030\027 \001(\0132\026.caffe.ArgM" " \001(\0132\030.caffe.AccuracyParameter\022,\n\014argmax"
"axParameter\022,\n\014concat_param\030\t \001(\0132\026.caff" "_param\030\027 \001(\0132\026.caffe.ArgMaxParameter\022,\n\014"
"e.ConcatParameter\022\?\n\026contrastive_loss_pa" "concat_param\030\t \001(\0132\026.caffe.ConcatParamet"
"ram\030( \001(\0132\037.caffe.ContrastiveLossParamet" "er\022\?\n\026contrastive_loss_param\030( \001(\0132\037.caf"
"er\0226\n\021convolution_param\030\n \001(\0132\033.caffe.Co" "fe.ContrastiveLossParameter\0226\n\021convoluti"
"nvolutionParameter\022(\n\ndata_param\030\013 \001(\0132\024" "on_param\030\n \001(\0132\033.caffe.ConvolutionParame"
".caffe.DataParameter\022.\n\rdropout_param\030\014 " "ter\022(\n\ndata_param\030\013 \001(\0132\024.caffe.DataPara"
"\001(\0132\027.caffe.DropoutParameter\0223\n\020dummy_da" "meter\022.\n\rdropout_param\030\014 \001(\0132\027.caffe.Dro"
"ta_param\030\032 \001(\0132\031.caffe.DummyDataParamete" "poutParameter\0223\n\020dummy_data_param\030\032 \001(\0132"
"r\022.\n\reltwise_param\030\030 \001(\0132\027.caffe.Eltwise" "\031.caffe.DummyDataParameter\022.\n\reltwise_pa"
"Parameter\022&\n\texp_param\030) \001(\0132\023.caffe.Exp" "ram\030\030 \001(\0132\027.caffe.EltwiseParameter\022&\n\tex"
"Parameter\0221\n\017hdf5_data_param\030\r \001(\0132\030.caf" "p_param\030) \001(\0132\023.caffe.ExpParameter\0221\n\017hd"
"fe.HDF5DataParameter\0225\n\021hdf5_output_para" "f5_data_param\030\r \001(\0132\030.caffe.HDF5DataPara"
"m\030\016 \001(\0132\032.caffe.HDF5OutputParameter\0223\n\020h" "meter\0225\n\021hdf5_output_param\030\016 \001(\0132\032.caffe"
"inge_loss_param\030\035 \001(\0132\031.caffe.HingeLossP" ".HDF5OutputParameter\0223\n\020hinge_loss_param"
"arameter\0223\n\020image_data_param\030\017 \001(\0132\031.caf" "\030\035 \001(\0132\031.caffe.HingeLossParameter\0223\n\020ima"
"fe.ImageDataParameter\0229\n\023infogain_loss_p" "ge_data_param\030\017 \001(\0132\031.caffe.ImageDataPar"
"aram\030\020 \001(\0132\034.caffe.InfogainLossParameter" "ameter\0229\n\023infogain_loss_param\030\020 \001(\0132\034.ca"
"\0229\n\023inner_product_param\030\021 \001(\0132\034.caffe.In" "ffe.InfogainLossParameter\0229\n\023inner_produ"
"nerProductParameter\022&\n\tlrn_param\030\022 \001(\0132\023" "ct_param\030\021 \001(\0132\034.caffe.InnerProductParam"
".caffe.LRNParameter\0225\n\021memory_data_param" "eter\022&\n\tlrn_param\030\022 \001(\0132\023.caffe.LRNParam"
"\030\026 \001(\0132\032.caffe.MemoryDataParameter\022&\n\tmv" "eter\0225\n\021memory_data_param\030\026 \001(\0132\032.caffe."
"n_param\030\" \001(\0132\023.caffe.MVNParameter\022.\n\rpo" "MemoryDataParameter\022&\n\tmvn_param\030\" \001(\0132\023"
"oling_param\030\023 \001(\0132\027.caffe.PoolingParamet" ".caffe.MVNParameter\022.\n\rpooling_param\030\023 \001"
"er\022*\n\013power_param\030\025 \001(\0132\025.caffe.PowerPar" "(\0132\027.caffe.PoolingParameter\022*\n\013power_par"
"ameter\022(\n\nrelu_param\030\036 \001(\0132\024.caffe.ReLUP" "am\030\025 \001(\0132\025.caffe.PowerParameter\022(\n\nrelu_"
"arameter\022.\n\rsigmoid_param\030& \001(\0132\027.caffe." "param\030\036 \001(\0132\024.caffe.ReLUParameter\022.\n\rsig"
"SigmoidParameter\022.\n\rsoftmax_param\030\' \001(\0132" "moid_param\030& \001(\0132\027.caffe.SigmoidParamete"
"\027.caffe.SoftmaxParameter\022*\n\013slice_param\030" "r\022.\n\rsoftmax_param\030\' \001(\0132\027.caffe.Softmax"
"\037 \001(\0132\025.caffe.SliceParameter\022(\n\ntanh_par" "Parameter\022*\n\013slice_param\030\037 \001(\0132\025.caffe.S"
"am\030% \001(\0132\024.caffe.TanHParameter\0222\n\017thresh" "liceParameter\022(\n\ntanh_param\030% \001(\0132\024.caff"
"old_param\030\031 \001(\0132\031.caffe.ThresholdParamet" "e.TanHParameter\0222\n\017threshold_param\030\031 \001(\013"
"er\0225\n\021window_data_param\030\024 \001(\0132\032.caffe.Wi" "2\031.caffe.ThresholdParameter\0225\n\021window_da"
"ndowDataParameter\0227\n\017transform_param\030$ \001" "ta_param\030\024 \001(\0132\032.caffe.WindowDataParamet"
"(\0132\036.caffe.TransformationParameter\022(\n\nlo" "er\0227\n\017transform_param\030$ \001(\0132\036.caffe.Tran"
"ss_param\030* \001(\0132\024.caffe.LossParameter\022&\n\005" "sformationParameter\022(\n\nloss_param\030* \001(\0132"
"layer\030\001 \001(\0132\027.caffe.V0LayerParameter\"\330\004\n" "\024.caffe.LossParameter\022&\n\005layer\030\001 \001(\0132\027.c"
"\tLayerType\022\010\n\004NONE\020\000\022\n\n\006ABSVAL\020#\022\014\n\010ACCU" "affe.V0LayerParameter\"\330\004\n\tLayerType\022\010\n\004N"
"RACY\020\001\022\n\n\006ARGMAX\020\036\022\010\n\004BNLL\020\002\022\n\n\006CONCAT\020\003" "ONE\020\000\022\n\n\006ABSVAL\020#\022\014\n\010ACCURACY\020\001\022\n\n\006ARGMA"
"\022\024\n\020CONTRASTIVE_LOSS\020%\022\017\n\013CONVOLUTION\020\004\022" "X\020\036\022\010\n\004BNLL\020\002\022\n\n\006CONCAT\020\003\022\024\n\020CONTRASTIVE"
"\010\n\004DATA\020\005\022\021\n\rDECONVOLUTION\020\'\022\013\n\007DROPOUT\020" "_LOSS\020%\022\017\n\013CONVOLUTION\020\004\022\010\n\004DATA\020\005\022\021\n\rDE"
"\006\022\016\n\nDUMMY_DATA\020 \022\022\n\016EUCLIDEAN_LOSS\020\007\022\013\n" "CONVOLUTION\020\'\022\013\n\007DROPOUT\020\006\022\016\n\nDUMMY_DATA"
"\007ELTWISE\020\031\022\007\n\003EXP\020&\022\013\n\007FLATTEN\020\010\022\r\n\tHDF5" "\020 \022\022\n\016EUCLIDEAN_LOSS\020\007\022\013\n\007ELTWISE\020\031\022\007\n\003E"
"_DATA\020\t\022\017\n\013HDF5_OUTPUT\020\n\022\016\n\nHINGE_LOSS\020\034" "XP\020&\022\013\n\007FLATTEN\020\010\022\r\n\tHDF5_DATA\020\t\022\017\n\013HDF5"
"\022\n\n\006IM2COL\020\013\022\016\n\nIMAGE_DATA\020\014\022\021\n\rINFOGAIN" "_OUTPUT\020\n\022\016\n\nHINGE_LOSS\020\034\022\n\n\006IM2COL\020\013\022\016\n"
"_LOSS\020\r\022\021\n\rINNER_PRODUCT\020\016\022\007\n\003LRN\020\017\022\017\n\013M" "\nIMAGE_DATA\020\014\022\021\n\rINFOGAIN_LOSS\020\r\022\021\n\rINNE"
"EMORY_DATA\020\035\022\035\n\031MULTINOMIAL_LOGISTIC_LOS" "R_PRODUCT\020\016\022\007\n\003LRN\020\017\022\017\n\013MEMORY_DATA\020\035\022\035\n"
"S\020\020\022\007\n\003MVN\020\"\022\013\n\007POOLING\020\021\022\t\n\005POWER\020\032\022\010\n\004" "\031MULTINOMIAL_LOGISTIC_LOSS\020\020\022\007\n\003MVN\020\"\022\013\n"
"RELU\020\022\022\013\n\007SIGMOID\020\023\022\036\n\032SIGMOID_CROSS_ENT" "\007POOLING\020\021\022\t\n\005POWER\020\032\022\010\n\004RELU\020\022\022\013\n\007SIGMO"
"ROPY_LOSS\020\033\022\013\n\007SILENCE\020$\022\013\n\007SOFTMAX\020\024\022\020\n" "ID\020\023\022\036\n\032SIGMOID_CROSS_ENTROPY_LOSS\020\033\022\013\n\007"
"\014SOFTMAX_LOSS\020\025\022\t\n\005SPLIT\020\026\022\t\n\005SLICE\020!\022\010\n" "SILENCE\020$\022\013\n\007SOFTMAX\020\024\022\020\n\014SOFTMAX_LOSS\020\025"
"\004TANH\020\027\022\017\n\013WINDOW_DATA\020\030\022\r\n\tTHRESHOLD\020\037\"" "\022\t\n\005SPLIT\020\026\022\t\n\005SLICE\020!\022\010\n\004TANH\020\027\022\017\n\013WIND"
"*\n\014DimCheckMode\022\n\n\006STRICT\020\000\022\016\n\nPERMISSIV" "OW_DATA\020\030\022\r\n\tTHRESHOLD\020\037\"*\n\014DimCheckMode"
"E\020\001\"\375\007\n\020V0LayerParameter\022\014\n\004name\030\001 \001(\t\022\014" "\022\n\n\006STRICT\020\000\022\016\n\nPERMISSIVE\020\001\"\375\007\n\020V0Layer"
"\n\004type\030\002 \001(\t\022\022\n\nnum_output\030\003 \001(\r\022\026\n\010bias" "Parameter\022\014\n\004name\030\001 \001(\t\022\014\n\004type\030\002 \001(\t\022\022\n"
"term\030\004 \001(\010:\004true\022-\n\rweight_filler\030\005 \001(\0132" "\nnum_output\030\003 \001(\r\022\026\n\010biasterm\030\004 \001(\010:\004tru"
"\026.caffe.FillerParameter\022+\n\013bias_filler\030\006" "e\022-\n\rweight_filler\030\005 \001(\0132\026.caffe.FillerP"
" \001(\0132\026.caffe.FillerParameter\022\016\n\003pad\030\007 \001(" "arameter\022+\n\013bias_filler\030\006 \001(\0132\026.caffe.Fi"
"\r:\0010\022\022\n\nkernelsize\030\010 \001(\r\022\020\n\005group\030\t \001(\r:" "llerParameter\022\016\n\003pad\030\007 \001(\r:\0010\022\022\n\nkernels"
"\0011\022\021\n\006stride\030\n \001(\r:\0011\0225\n\004pool\030\013 \001(\0162\".ca" "ize\030\010 \001(\r\022\020\n\005group\030\t \001(\r:\0011\022\021\n\006stride\030\n "
"ffe.V0LayerParameter.PoolMethod:\003MAX\022\032\n\r" "\001(\r:\0011\0225\n\004pool\030\013 \001(\0162\".caffe.V0LayerPara"
"dropout_ratio\030\014 \001(\002:\0030.5\022\025\n\nlocal_size\030\r" "meter.PoolMethod:\003MAX\022\032\n\rdropout_ratio\030\014"
" \001(\r:\0015\022\020\n\005alpha\030\016 \001(\002:\0011\022\022\n\004beta\030\017 \001(\002:" " \001(\002:\0030.5\022\025\n\nlocal_size\030\r \001(\r:\0015\022\020\n\005alph"
"\0040.75\022\014\n\001k\030\026 \001(\002:\0011\022\016\n\006source\030\020 \001(\t\022\020\n\005s" "a\030\016 \001(\002:\0011\022\022\n\004beta\030\017 \001(\002:\0040.75\022\014\n\001k\030\026 \001("
"cale\030\021 \001(\002:\0011\022\020\n\010meanfile\030\022 \001(\t\022\021\n\tbatch" "\002:\0011\022\016\n\006source\030\020 \001(\t\022\020\n\005scale\030\021 \001(\002:\0011\022\020"
"size\030\023 \001(\r\022\023\n\010cropsize\030\024 \001(\r:\0010\022\025\n\006mirro" "\n\010meanfile\030\022 \001(\t\022\021\n\tbatchsize\030\023 \001(\r\022\023\n\010c"
"r\030\025 \001(\010:\005false\022\037\n\005blobs\0302 \003(\0132\020.caffe.Bl" "ropsize\030\024 \001(\r:\0010\022\025\n\006mirror\030\025 \001(\010:\005false\022"
"obProto\022\020\n\010blobs_lr\0303 \003(\002\022\024\n\014weight_deca" "\037\n\005blobs\0302 \003(\0132\020.caffe.BlobProto\022\020\n\010blob"
"y\0304 \003(\002\022\024\n\trand_skip\0305 \001(\r:\0010\022\035\n\020det_fg_" "s_lr\0303 \003(\002\022\024\n\014weight_decay\0304 \003(\002\022\024\n\trand"
"threshold\0306 \001(\002:\0030.5\022\035\n\020det_bg_threshold" "_skip\0305 \001(\r:\0010\022\035\n\020det_fg_threshold\0306 \001(\002"
"\0307 \001(\002:\0030.5\022\035\n\017det_fg_fraction\0308 \001(\002:\0040." ":\0030.5\022\035\n\020det_bg_threshold\0307 \001(\002:\0030.5\022\035\n\017"
"25\022\032\n\017det_context_pad\030: \001(\r:\0010\022\033\n\rdet_cr" "det_fg_fraction\0308 \001(\002:\0040.25\022\032\n\017det_conte"
"op_mode\030; \001(\t:\004warp\022\022\n\007new_num\030< \001(\005:\0010\022" "xt_pad\030: \001(\r:\0010\022\033\n\rdet_crop_mode\030; \001(\t:\004"
"\027\n\014new_channels\030= \001(\005:\0010\022\025\n\nnew_height\030>" "warp\022\022\n\007new_num\030< \001(\005:\0010\022\027\n\014new_channels"
" \001(\005:\0010\022\024\n\tnew_width\030\? \001(\005:\0010\022\035\n\016shuffle" "\030= \001(\005:\0010\022\025\n\nnew_height\030> \001(\005:\0010\022\024\n\tnew_"
"_images\030@ \001(\010:\005false\022\025\n\nconcat_dim\030A \001(\r" "width\030\? \001(\005:\0010\022\035\n\016shuffle_images\030@ \001(\010:\005"
":\0011\0226\n\021hdf5_output_param\030\351\007 \001(\0132\032.caffe." "false\022\025\n\nconcat_dim\030A \001(\r:\0011\0226\n\021hdf5_out"
"HDF5OutputParameter\".\n\nPoolMethod\022\007\n\003MAX" "put_param\030\351\007 \001(\0132\032.caffe.HDF5OutputParam"
"\020\000\022\007\n\003AVE\020\001\022\016\n\nSTOCHASTIC\020\002\"W\n\016PReLUPara" "eter\".\n\nPoolMethod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\n"
"meter\022&\n\006filler\030\001 \001(\0132\026.caffe.FillerPara" "STOCHASTIC\020\002\"W\n\016PReLUParameter\022&\n\006filler"
"meter\022\035\n\016channel_shared\030\002 \001(\010:\005false\"\207\001\n" "\030\001 \001(\0132\026.caffe.FillerParameter\022\035\n\016channe"
"\016NormalizedBBox\022\014\n\004xmin\030\001 \001(\002\022\014\n\004ymin\030\002 " "l_shared\030\002 \001(\010:\005false\"\207\001\n\016NormalizedBBox"
"\001(\002\022\014\n\004xmax\030\003 \001(\002\022\014\n\004ymax\030\004 \001(\002\022\r\n\005label" "\022\014\n\004xmin\030\001 \001(\002\022\014\n\004ymin\030\002 \001(\002\022\014\n\004xmax\030\003 \001"
"\030\005 \001(\005\022\021\n\tdifficult\030\006 \001(\010\022\r\n\005score\030\007 \001(\002" "(\002\022\014\n\004ymax\030\004 \001(\002\022\r\n\005label\030\005 \001(\005\022\021\n\tdiffi"
"\022\014\n\004size\030\010 \001(\002*=\n\004Type\022\n\n\006DOUBLE\020\000\022\t\n\005FL" "cult\030\006 \001(\010\022\r\n\005score\030\007 \001(\002\022\014\n\004size\030\010 \001(\002*"
"OAT\020\001\022\013\n\007FLOAT16\020\002\022\007\n\003INT\020\003\022\010\n\004UINT\020\004*\034\n" "=\n\004Type\022\n\n\006DOUBLE\020\000\022\t\n\005FLOAT\020\001\022\013\n\007FLOAT1"
"\005Phase\022\t\n\005TRAIN\020\000\022\010\n\004TEST\020\001", 17027); "6\020\002\022\007\n\003INT\020\003\022\010\n\004UINT\020\004*\034\n\005Phase\022\t\n\005TRAIN"
"\020\000\022\010\n\004TEST\020\001", 17052);
::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
"caffe.proto", &protobuf_RegisterTypes); "caffe.proto", &protobuf_RegisterTypes);
::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_caffe_2eproto); ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_caffe_2eproto);
@ -37422,6 +37424,7 @@ const int PoolingParameter::kStrideHFieldNumber;
const int PoolingParameter::kStrideWFieldNumber; const int PoolingParameter::kStrideWFieldNumber;
const int PoolingParameter::kEngineFieldNumber; const int PoolingParameter::kEngineFieldNumber;
const int PoolingParameter::kGlobalPoolingFieldNumber; const int PoolingParameter::kGlobalPoolingFieldNumber;
const int PoolingParameter::kCeilModeFieldNumber;
#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 #endif // !defined(_MSC_VER) || _MSC_VER >= 1900
PoolingParameter::PoolingParameter() PoolingParameter::PoolingParameter()
@ -37447,6 +37450,7 @@ void PoolingParameter::SharedCtor() {
::memset(&pool_, 0, reinterpret_cast<char*>(&global_pooling_) - ::memset(&pool_, 0, reinterpret_cast<char*>(&global_pooling_) -
reinterpret_cast<char*>(&pool_) + sizeof(global_pooling_)); reinterpret_cast<char*>(&pool_) + sizeof(global_pooling_));
stride_ = 1u; stride_ = 1u;
ceil_mode_ = true;
} }
PoolingParameter::~PoolingParameter() { PoolingParameter::~PoolingParameter() {
@ -37504,7 +37508,10 @@ void PoolingParameter::Clear() {
ZR_(pool_, kernel_w_); ZR_(pool_, kernel_w_);
stride_ = 1u; stride_ = 1u;
} }
ZR_(stride_h_, global_pooling_); if (_has_bits_[8 / 32] & 7936u) {
ZR_(stride_h_, global_pooling_);
ceil_mode_ = true;
}
#undef ZR_HELPER_ #undef ZR_HELPER_
#undef ZR_ #undef ZR_
@ -37710,6 +37717,21 @@ bool PoolingParameter::MergePartialFromCodedStream(
} else { } else {
goto handle_unusual; goto handle_unusual;
} }
if (input->ExpectTag(104)) goto parse_ceil_mode;
break;
}
// optional bool ceil_mode = 13 [default = true];
case 13: {
if (tag == 104) {
parse_ceil_mode:
set_has_ceil_mode();
DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
input, &ceil_mode_)));
} else {
goto handle_unusual;
}
if (input->ExpectAtEnd()) goto success; if (input->ExpectAtEnd()) goto success;
break; break;
} }
@ -37801,6 +37823,11 @@ void PoolingParameter::SerializeWithCachedSizes(
::google::protobuf::internal::WireFormatLite::WriteBool(12, this->global_pooling(), output); ::google::protobuf::internal::WireFormatLite::WriteBool(12, this->global_pooling(), output);
} }
// optional bool ceil_mode = 13 [default = true];
if (has_ceil_mode()) {
::google::protobuf::internal::WireFormatLite::WriteBool(13, this->ceil_mode(), output);
}
if (_internal_metadata_.have_unknown_fields()) { if (_internal_metadata_.have_unknown_fields()) {
::google::protobuf::internal::WireFormat::SerializeUnknownFields( ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
unknown_fields(), output); unknown_fields(), output);
@ -37874,6 +37901,11 @@ void PoolingParameter::SerializeWithCachedSizes(
target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(12, this->global_pooling(), target); target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(12, this->global_pooling(), target);
} }
// optional bool ceil_mode = 13 [default = true];
if (has_ceil_mode()) {
target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(13, this->ceil_mode(), target);
}
if (_internal_metadata_.have_unknown_fields()) { if (_internal_metadata_.have_unknown_fields()) {
target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
unknown_fields(), target); unknown_fields(), target);
@ -37943,7 +37975,7 @@ size_t PoolingParameter::ByteSizeLong() const {
} }
} }
if (_has_bits_[8 / 32] & 3840u) { if (_has_bits_[8 / 32] & 7936u) {
// optional uint32 stride_h = 7; // optional uint32 stride_h = 7;
if (has_stride_h()) { if (has_stride_h()) {
total_size += 1 + total_size += 1 +
@ -37969,6 +38001,11 @@ size_t PoolingParameter::ByteSizeLong() const {
total_size += 1 + 1; total_size += 1 + 1;
} }
// optional bool ceil_mode = 13 [default = true];
if (has_ceil_mode()) {
total_size += 1 + 1;
}
} }
if (_internal_metadata_.have_unknown_fields()) { if (_internal_metadata_.have_unknown_fields()) {
total_size += total_size +=
@ -38047,6 +38084,9 @@ void PoolingParameter::UnsafeMergeFrom(const PoolingParameter& from) {
if (from.has_global_pooling()) { if (from.has_global_pooling()) {
set_global_pooling(from.global_pooling()); set_global_pooling(from.global_pooling());
} }
if (from.has_ceil_mode()) {
set_ceil_mode(from.ceil_mode());
}
} }
if (from._internal_metadata_.have_unknown_fields()) { if (from._internal_metadata_.have_unknown_fields()) {
::google::protobuf::UnknownFieldSet::MergeToInternalMetdata( ::google::protobuf::UnknownFieldSet::MergeToInternalMetdata(
@ -38090,6 +38130,7 @@ void PoolingParameter::InternalSwap(PoolingParameter* other) {
std::swap(stride_w_, other->stride_w_); std::swap(stride_w_, other->stride_w_);
std::swap(engine_, other->engine_); std::swap(engine_, other->engine_);
std::swap(global_pooling_, other->global_pooling_); std::swap(global_pooling_, other->global_pooling_);
std::swap(ceil_mode_, other->ceil_mode_);
std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_has_bits_[0], other->_has_bits_[0]);
_internal_metadata_.Swap(&other->_internal_metadata_); _internal_metadata_.Swap(&other->_internal_metadata_);
std::swap(_cached_size_, other->_cached_size_); std::swap(_cached_size_, other->_cached_size_);
@ -38396,6 +38437,30 @@ void PoolingParameter::set_global_pooling(bool value) {
// @@protoc_insertion_point(field_set:caffe.PoolingParameter.global_pooling) // @@protoc_insertion_point(field_set:caffe.PoolingParameter.global_pooling)
} }
// optional bool ceil_mode = 13 [default = true];
bool PoolingParameter::has_ceil_mode() const {
return (_has_bits_[0] & 0x00001000u) != 0;
}
void PoolingParameter::set_has_ceil_mode() {
_has_bits_[0] |= 0x00001000u;
}
void PoolingParameter::clear_has_ceil_mode() {
_has_bits_[0] &= ~0x00001000u;
}
void PoolingParameter::clear_ceil_mode() {
ceil_mode_ = true;
clear_has_ceil_mode();
}
bool PoolingParameter::ceil_mode() const {
// @@protoc_insertion_point(field_get:caffe.PoolingParameter.ceil_mode)
return ceil_mode_;
}
void PoolingParameter::set_ceil_mode(bool value) {
set_has_ceil_mode();
ceil_mode_ = value;
// @@protoc_insertion_point(field_set:caffe.PoolingParameter.ceil_mode)
}
inline const PoolingParameter* PoolingParameter::internal_default_instance() { inline const PoolingParameter* PoolingParameter::internal_default_instance() {
return &PoolingParameter_default_instance_.get(); return &PoolingParameter_default_instance_.get();
} }

View File

@ -9035,6 +9035,13 @@ class PoolingParameter : public ::google::protobuf::Message /* @@protoc_insertio
bool global_pooling() const; bool global_pooling() const;
void set_global_pooling(bool value); void set_global_pooling(bool value);
// optional bool ceil_mode = 13 [default = true];
bool has_ceil_mode() const;
void clear_ceil_mode();
static const int kCeilModeFieldNumber = 13;
bool ceil_mode() const;
void set_ceil_mode(bool value);
// @@protoc_insertion_point(class_scope:caffe.PoolingParameter) // @@protoc_insertion_point(class_scope:caffe.PoolingParameter)
private: private:
inline void set_has_pool(); inline void set_has_pool();
@ -9061,6 +9068,8 @@ class PoolingParameter : public ::google::protobuf::Message /* @@protoc_insertio
inline void clear_has_engine(); inline void clear_has_engine();
inline void set_has_global_pooling(); inline void set_has_global_pooling();
inline void clear_has_global_pooling(); inline void clear_has_global_pooling();
inline void set_has_ceil_mode();
inline void clear_has_ceil_mode();
::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
::google::protobuf::internal::HasBits<1> _has_bits_; ::google::protobuf::internal::HasBits<1> _has_bits_;
@ -9077,6 +9086,7 @@ class PoolingParameter : public ::google::protobuf::Message /* @@protoc_insertio
int engine_; int engine_;
bool global_pooling_; bool global_pooling_;
::google::protobuf::uint32 stride_; ::google::protobuf::uint32 stride_;
bool ceil_mode_;
friend void protobuf_InitDefaults_caffe_2eproto_impl(); friend void protobuf_InitDefaults_caffe_2eproto_impl();
friend void protobuf_AddDesc_caffe_2eproto_impl(); friend void protobuf_AddDesc_caffe_2eproto_impl();
friend void protobuf_AssignDesc_caffe_2eproto(); friend void protobuf_AssignDesc_caffe_2eproto();
@ -23544,6 +23554,30 @@ inline void PoolingParameter::set_global_pooling(bool value) {
// @@protoc_insertion_point(field_set:caffe.PoolingParameter.global_pooling) // @@protoc_insertion_point(field_set:caffe.PoolingParameter.global_pooling)
} }
// optional bool ceil_mode = 13 [default = true];
inline bool PoolingParameter::has_ceil_mode() const {
return (_has_bits_[0] & 0x00001000u) != 0;
}
inline void PoolingParameter::set_has_ceil_mode() {
_has_bits_[0] |= 0x00001000u;
}
inline void PoolingParameter::clear_has_ceil_mode() {
_has_bits_[0] &= ~0x00001000u;
}
inline void PoolingParameter::clear_ceil_mode() {
ceil_mode_ = true;
clear_has_ceil_mode();
}
inline bool PoolingParameter::ceil_mode() const {
// @@protoc_insertion_point(field_get:caffe.PoolingParameter.ceil_mode)
return ceil_mode_;
}
inline void PoolingParameter::set_ceil_mode(bool value) {
set_has_ceil_mode();
ceil_mode_ = value;
// @@protoc_insertion_point(field_set:caffe.PoolingParameter.ceil_mode)
}
inline const PoolingParameter* PoolingParameter::internal_default_instance() { inline const PoolingParameter* PoolingParameter::internal_default_instance() {
return &PoolingParameter_default_instance_.get(); return &PoolingParameter_default_instance_.get();
} }

View File

@ -1093,6 +1093,9 @@ message PoolingParameter {
// If global_pooling then it will pool over the size of the bottom by doing // If global_pooling then it will pool over the size of the bottom by doing
// kernel_h = bottom->height and kernel_w = bottom->width // kernel_h = bottom->height and kernel_w = bottom->width
optional bool global_pooling = 12 [default = false]; optional bool global_pooling = 12 [default = false];
// Specify floor/ceil mode
// source: https://github.com/BVLC/caffe/pull/3057
optional bool ceil_mode = 13 [default = true];
} }
message PowerParameter { message PowerParameter {

View File

@ -234,4 +234,21 @@ TEST(Reproducibility_Colorization, Accuracy)
normAssert(out, ref, "", l1, lInf); normAssert(out, ref, "", l1, lInf);
} }
TEST(Reproducibility_DenseNet_121, Accuracy)
{
const string proto = findDataFile("dnn/DenseNet_121.prototxt", false);
const string model = findDataFile("dnn/DenseNet_121.caffemodel", false);
Mat inp = imread(_tf("dog416.png"));
inp = blobFromImage(inp, 1.0 / 255, Size(224, 224));
Mat ref = blobFromNPY(_tf("densenet_121_output.npy"));
Net net = readNetFromCaffe(proto, model);
net.setInput(inp);
Mat out = net.forward();
normAssert(out, ref);
}
} }