You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@singa.apache.org by wa...@apache.org on 2015/05/27 16:39:15 UTC

[14/22] incubator-singa git commit: add scripts for running singa job; it start/stop zookeeper service automatically;

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/9827f4f6/src/proto/model.pb.h
----------------------------------------------------------------------
diff --git a/src/proto/model.pb.h b/src/proto/model.pb.h
index 9ac1e54..6f1dc1d 100644
--- a/src/proto/model.pb.h
+++ b/src/proto/model.pb.h
@@ -8,12 +8,12 @@
 
 #include <google/protobuf/stubs/common.h>
 
-#if GOOGLE_PROTOBUF_VERSION < 2005000
+#if GOOGLE_PROTOBUF_VERSION < 2006000
 #error This file was generated by a newer version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please update
 #error your headers.
 #endif
-#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
+#if 2006000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
 #error This file was generated by an older version of protoc which is
 #error incompatible with your Protocol Buffer headers.  Please
 #error regenerate this file with a newer version of protoc.
@@ -360,7 +360,6 @@ class ModelProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -627,13 +626,15 @@ class ModelProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::std::string* name_;
-  ::std::string* train_folder_;
   static ::std::string* _default_train_folder_;
-  ::std::string* test_folder_;
+  ::std::string* train_folder_;
   static ::std::string* _default_test_folder_;
-  ::std::string* validation_folder_;
+  ::std::string* test_folder_;
   static ::std::string* _default_validation_folder_;
+  ::std::string* validation_folder_;
   ::google::protobuf::int32 display_after_steps_;
   ::google::protobuf::int32 display_frequency_;
   ::google::protobuf::int32 validation_after_steps_;
@@ -653,10 +654,6 @@ class ModelProto : public ::google::protobuf::Message {
   int alg_;
   ::singa::NetProto* neuralnet_;
   ::google::protobuf::int32 warmup_steps_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(23 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -713,7 +710,6 @@ class NetProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -746,12 +742,10 @@ class NetProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::RepeatedPtrField< ::singa::LayerProto > layer_;
   int partition_type_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -808,7 +802,6 @@ class ParamProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -983,6 +976,8 @@ class ParamProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::std::string* name_;
   ::google::protobuf::RepeatedField< ::google::protobuf::int32 > shape_;
   ::google::protobuf::int32 id_;
@@ -997,10 +992,6 @@ class ParamProto : public ::google::protobuf::Message {
   float std_;
   float learning_rate_multiplier_;
   float weight_decay_multiplier_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(14 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -1057,7 +1048,6 @@ class BlobProtos : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -1109,13 +1099,11 @@ class BlobProtos : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::RepeatedPtrField< ::singa::BlobProto > blobs_;
   ::google::protobuf::RepeatedField< ::google::protobuf::int32 > ids_;
   ::google::protobuf::RepeatedPtrField< ::std::string> names_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -1172,7 +1160,6 @@ class LayerProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -1489,6 +1476,8 @@ class LayerProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::std::string* name_;
   ::std::string* type_;
   ::google::protobuf::RepeatedPtrField< ::std::string> srclayers_;
@@ -1515,10 +1504,6 @@ class LayerProto : public ::google::protobuf::Message {
   ::singa::SoftmaxLossProto* softmaxloss_param_;
   ::singa::TanhProto* tanh_param_;
   int partition_type_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(26 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -1575,7 +1560,6 @@ class RGBImage : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -1628,14 +1612,12 @@ class RGBImage : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   float scale_;
   ::google::protobuf::int32 cropsize_;
   ::std::string* meanfile_;
   bool mirror_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -1692,7 +1674,6 @@ class SplitProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -1713,11 +1694,9 @@ class SplitProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
-  ::google::protobuf::int32 num_splits_;
-
+  ::google::protobuf::uint32 _has_bits_[1];
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
-
+  ::google::protobuf::int32 num_splits_;
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -1774,7 +1753,6 @@ class TanhProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -1804,12 +1782,10 @@ class TanhProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   float outer_scale_;
   float inner_scale_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -1866,7 +1842,6 @@ class SoftmaxLossProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -1896,12 +1871,10 @@ class SoftmaxLossProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::int32 topk_;
   float scale_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -1958,7 +1931,6 @@ class ConvolutionProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -2015,15 +1987,13 @@ class ConvolutionProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::uint32 num_filters_;
   bool bias_term_;
   ::google::protobuf::uint32 pad_;
   ::google::protobuf::uint32 stride_;
   ::google::protobuf::uint32 kernel_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -2080,7 +2050,6 @@ class ConcateProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -2110,12 +2079,10 @@ class ConcateProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::int32 concate_dimension_;
   ::google::protobuf::int32 concate_num_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -2172,7 +2139,6 @@ class DataProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -2230,14 +2196,12 @@ class DataProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::std::string* source_;
   ::std::string* path_;
   ::google::protobuf::uint32 batchsize_;
   ::google::protobuf::uint32 random_skip_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -2294,7 +2258,6 @@ class MnistProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -2387,6 +2350,8 @@ class MnistProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::int32 kernel_;
   float sigma_;
   float alpha_;
@@ -2396,10 +2361,6 @@ class MnistProto : public ::google::protobuf::Message {
   ::google::protobuf::int32 elastic_freq_;
   float norm_a_;
   float norm_b_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(9 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -2456,7 +2417,6 @@ class DropoutProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -2477,11 +2437,9 @@ class DropoutProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
-  float dropout_ratio_;
-
+  ::google::protobuf::uint32 _has_bits_[1];
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
-
+  float dropout_ratio_;
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -2538,7 +2496,6 @@ class InnerProductProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -2568,12 +2525,10 @@ class InnerProductProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::uint32 num_output_;
   bool bias_term_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -2630,7 +2585,6 @@ class LRNProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -2711,15 +2665,13 @@ class LRNProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::uint32 local_size_;
   float alpha_;
   float beta_;
   int norm_region_;
   float knorm_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -2776,7 +2728,6 @@ class PoolingProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -2848,14 +2799,12 @@ class PoolingProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   int pool_;
   ::google::protobuf::uint32 kernel_;
   ::google::protobuf::uint32 pad_;
   ::google::protobuf::uint32 stride_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -2912,7 +2861,6 @@ class SliceProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -2942,12 +2890,10 @@ class SliceProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::int32 slice_dimension_;
   ::google::protobuf::int32 slice_num_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -3004,7 +2950,6 @@ class ReLUProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -3025,11 +2970,9 @@ class ReLUProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
-  float negative_slope_;
-
+  ::google::protobuf::uint32 _has_bits_[1];
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
-
+  float negative_slope_;
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -3086,7 +3029,6 @@ class Record : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -3141,12 +3083,10 @@ class Record : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::singa::SingleLabelImageRecord* image_;
   int type_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -3203,7 +3143,6 @@ class Datum : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -3286,6 +3225,8 @@ class Datum : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::int32 channels_;
   ::google::protobuf::int32 height_;
   ::std::string* data_;
@@ -3293,10 +3234,6 @@ class Datum : public ::google::protobuf::Message {
   ::google::protobuf::int32 label_;
   ::google::protobuf::RepeatedField< float > float_data_;
   bool encoded_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -3353,7 +3290,6 @@ class SingleLabelImageRecord : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -3412,14 +3348,12 @@ class SingleLabelImageRecord : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::RepeatedField< ::google::protobuf::int32 > shape_;
   ::std::string* pixel_;
   ::google::protobuf::RepeatedField< float > data_;
   ::google::protobuf::int32 label_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -3476,7 +3410,6 @@ class UpdaterProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -3663,6 +3596,8 @@ class UpdaterProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   float momentum_;
   float weight_decay_;
   float gamma_;
@@ -3675,14 +3610,10 @@ class UpdaterProto : public ::google::protobuf::Message {
   int learning_rate_change_method_;
   ::google::protobuf::int32 sync_frequency_;
   float moving_rate_;
-  ::std::string* param_type_;
   static ::std::string* _default_param_type_;
+  ::std::string* param_type_;
   ::google::protobuf::RepeatedField< ::google::protobuf::int32 > step_;
   ::google::protobuf::RepeatedField< float > step_lr_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(15 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -3739,7 +3670,6 @@ class BlobProto : public ::google::protobuf::Message {
   void SharedDtor();
   void SetCachedSize(int size) const;
   public:
-
   ::google::protobuf::Metadata GetMetadata() const;
 
   // nested types ----------------------------------------------------
@@ -3811,6 +3741,8 @@ class BlobProto : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::uint32 _has_bits_[1];
+  mutable int _cached_size_;
   ::google::protobuf::int32 num_;
   ::google::protobuf::int32 channels_;
   ::google::protobuf::int32 height_;
@@ -3819,10 +3751,6 @@ class BlobProto : public ::google::protobuf::Message {
   mutable int _data_cached_byte_size_;
   ::google::protobuf::RepeatedField< float > diff_;
   mutable int _diff_cached_byte_size_;
-
-  mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32];
-
   friend void  protobuf_AddDesc_model_2eproto();
   friend void protobuf_AssignDesc_model_2eproto();
   friend void protobuf_ShutdownFile_model_2eproto();
@@ -3848,54 +3776,59 @@ inline void ModelProto::clear_has_name() {
   _has_bits_[0] &= ~0x00000001u;
 }
 inline void ModelProto::clear_name() {
-  if (name_ != &::google::protobuf::internal::kEmptyString) {
+  if (name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_->clear();
   }
   clear_has_name();
 }
 inline const ::std::string& ModelProto::name() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.name)
   return *name_;
 }
 inline void ModelProto::set_name(const ::std::string& value) {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
   name_->assign(value);
+  // @@protoc_insertion_point(field_set:singa.ModelProto.name)
 }
 inline void ModelProto::set_name(const char* value) {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
   name_->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.ModelProto.name)
 }
 inline void ModelProto::set_name(const char* value, size_t size) {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
   name_->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.ModelProto.name)
 }
 inline ::std::string* ModelProto::mutable_name() {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
+  // @@protoc_insertion_point(field_mutable:singa.ModelProto.name)
   return name_;
 }
 inline ::std::string* ModelProto::release_name() {
   clear_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     return NULL;
   } else {
     ::std::string* temp = name_;
-    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
     return temp;
   }
 }
 inline void ModelProto::set_allocated_name(::std::string* name) {
-  if (name_ != &::google::protobuf::internal::kEmptyString) {
+  if (name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     delete name_;
   }
   if (name) {
@@ -3903,8 +3836,9 @@ inline void ModelProto::set_allocated_name(::std::string* name) {
     name_ = name;
   } else {
     clear_has_name();
-    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.ModelProto.name)
 }
 
 // optional string train_folder = 2 [default = "train"];
@@ -3924,6 +3858,7 @@ inline void ModelProto::clear_train_folder() {
   clear_has_train_folder();
 }
 inline const ::std::string& ModelProto::train_folder() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.train_folder)
   return *train_folder_;
 }
 inline void ModelProto::set_train_folder(const ::std::string& value) {
@@ -3932,6 +3867,7 @@ inline void ModelProto::set_train_folder(const ::std::string& value) {
     train_folder_ = new ::std::string;
   }
   train_folder_->assign(value);
+  // @@protoc_insertion_point(field_set:singa.ModelProto.train_folder)
 }
 inline void ModelProto::set_train_folder(const char* value) {
   set_has_train_folder();
@@ -3939,6 +3875,7 @@ inline void ModelProto::set_train_folder(const char* value) {
     train_folder_ = new ::std::string;
   }
   train_folder_->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.ModelProto.train_folder)
 }
 inline void ModelProto::set_train_folder(const char* value, size_t size) {
   set_has_train_folder();
@@ -3946,12 +3883,14 @@ inline void ModelProto::set_train_folder(const char* value, size_t size) {
     train_folder_ = new ::std::string;
   }
   train_folder_->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.ModelProto.train_folder)
 }
 inline ::std::string* ModelProto::mutable_train_folder() {
   set_has_train_folder();
   if (train_folder_ == _default_train_folder_) {
     train_folder_ = new ::std::string(*_default_train_folder_);
   }
+  // @@protoc_insertion_point(field_mutable:singa.ModelProto.train_folder)
   return train_folder_;
 }
 inline ::std::string* ModelProto::release_train_folder() {
@@ -3975,6 +3914,7 @@ inline void ModelProto::set_allocated_train_folder(::std::string* train_folder)
     clear_has_train_folder();
     train_folder_ = const_cast< ::std::string*>(_default_train_folder_);
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.ModelProto.train_folder)
 }
 
 // optional string test_folder = 3 [default = "test"];
@@ -3994,6 +3934,7 @@ inline void ModelProto::clear_test_folder() {
   clear_has_test_folder();
 }
 inline const ::std::string& ModelProto::test_folder() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.test_folder)
   return *test_folder_;
 }
 inline void ModelProto::set_test_folder(const ::std::string& value) {
@@ -4002,6 +3943,7 @@ inline void ModelProto::set_test_folder(const ::std::string& value) {
     test_folder_ = new ::std::string;
   }
   test_folder_->assign(value);
+  // @@protoc_insertion_point(field_set:singa.ModelProto.test_folder)
 }
 inline void ModelProto::set_test_folder(const char* value) {
   set_has_test_folder();
@@ -4009,6 +3951,7 @@ inline void ModelProto::set_test_folder(const char* value) {
     test_folder_ = new ::std::string;
   }
   test_folder_->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.ModelProto.test_folder)
 }
 inline void ModelProto::set_test_folder(const char* value, size_t size) {
   set_has_test_folder();
@@ -4016,12 +3959,14 @@ inline void ModelProto::set_test_folder(const char* value, size_t size) {
     test_folder_ = new ::std::string;
   }
   test_folder_->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.ModelProto.test_folder)
 }
 inline ::std::string* ModelProto::mutable_test_folder() {
   set_has_test_folder();
   if (test_folder_ == _default_test_folder_) {
     test_folder_ = new ::std::string(*_default_test_folder_);
   }
+  // @@protoc_insertion_point(field_mutable:singa.ModelProto.test_folder)
   return test_folder_;
 }
 inline ::std::string* ModelProto::release_test_folder() {
@@ -4045,6 +3990,7 @@ inline void ModelProto::set_allocated_test_folder(::std::string* test_folder) {
     clear_has_test_folder();
     test_folder_ = const_cast< ::std::string*>(_default_test_folder_);
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.ModelProto.test_folder)
 }
 
 // optional string validation_folder = 4 [default = "validation"];
@@ -4064,6 +4010,7 @@ inline void ModelProto::clear_validation_folder() {
   clear_has_validation_folder();
 }
 inline const ::std::string& ModelProto::validation_folder() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.validation_folder)
   return *validation_folder_;
 }
 inline void ModelProto::set_validation_folder(const ::std::string& value) {
@@ -4072,6 +4019,7 @@ inline void ModelProto::set_validation_folder(const ::std::string& value) {
     validation_folder_ = new ::std::string;
   }
   validation_folder_->assign(value);
+  // @@protoc_insertion_point(field_set:singa.ModelProto.validation_folder)
 }
 inline void ModelProto::set_validation_folder(const char* value) {
   set_has_validation_folder();
@@ -4079,6 +4027,7 @@ inline void ModelProto::set_validation_folder(const char* value) {
     validation_folder_ = new ::std::string;
   }
   validation_folder_->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.ModelProto.validation_folder)
 }
 inline void ModelProto::set_validation_folder(const char* value, size_t size) {
   set_has_validation_folder();
@@ -4086,12 +4035,14 @@ inline void ModelProto::set_validation_folder(const char* value, size_t size) {
     validation_folder_ = new ::std::string;
   }
   validation_folder_->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.ModelProto.validation_folder)
 }
 inline ::std::string* ModelProto::mutable_validation_folder() {
   set_has_validation_folder();
   if (validation_folder_ == _default_validation_folder_) {
     validation_folder_ = new ::std::string(*_default_validation_folder_);
   }
+  // @@protoc_insertion_point(field_mutable:singa.ModelProto.validation_folder)
   return validation_folder_;
 }
 inline ::std::string* ModelProto::release_validation_folder() {
@@ -4115,6 +4066,7 @@ inline void ModelProto::set_allocated_validation_folder(::std::string* validatio
     clear_has_validation_folder();
     validation_folder_ = const_cast< ::std::string*>(_default_validation_folder_);
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.ModelProto.validation_folder)
 }
 
 // optional int32 display_after_steps = 6 [default = 0];
@@ -4132,11 +4084,13 @@ inline void ModelProto::clear_display_after_steps() {
   clear_has_display_after_steps();
 }
 inline ::google::protobuf::int32 ModelProto::display_after_steps() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.display_after_steps)
   return display_after_steps_;
 }
 inline void ModelProto::set_display_after_steps(::google::protobuf::int32 value) {
   set_has_display_after_steps();
   display_after_steps_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.display_after_steps)
 }
 
 // optional int32 display_frequency = 7 [default = 0];
@@ -4154,11 +4108,13 @@ inline void ModelProto::clear_display_frequency() {
   clear_has_display_frequency();
 }
 inline ::google::protobuf::int32 ModelProto::display_frequency() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.display_frequency)
   return display_frequency_;
 }
 inline void ModelProto::set_display_frequency(::google::protobuf::int32 value) {
   set_has_display_frequency();
   display_frequency_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.display_frequency)
 }
 
 // optional int32 validation_after_steps = 10 [default = 0];
@@ -4176,11 +4132,13 @@ inline void ModelProto::clear_validation_after_steps() {
   clear_has_validation_after_steps();
 }
 inline ::google::protobuf::int32 ModelProto::validation_after_steps() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.validation_after_steps)
   return validation_after_steps_;
 }
 inline void ModelProto::set_validation_after_steps(::google::protobuf::int32 value) {
   set_has_validation_after_steps();
   validation_after_steps_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.validation_after_steps)
 }
 
 // optional int32 validation_frequency = 11 [default = 0];
@@ -4198,11 +4156,13 @@ inline void ModelProto::clear_validation_frequency() {
   clear_has_validation_frequency();
 }
 inline ::google::protobuf::int32 ModelProto::validation_frequency() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.validation_frequency)
   return validation_frequency_;
 }
 inline void ModelProto::set_validation_frequency(::google::protobuf::int32 value) {
   set_has_validation_frequency();
   validation_frequency_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.validation_frequency)
 }
 
 // optional int32 test_after_steps = 13 [default = 0];
@@ -4220,11 +4180,13 @@ inline void ModelProto::clear_test_after_steps() {
   clear_has_test_after_steps();
 }
 inline ::google::protobuf::int32 ModelProto::test_after_steps() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.test_after_steps)
   return test_after_steps_;
 }
 inline void ModelProto::set_test_after_steps(::google::protobuf::int32 value) {
   set_has_test_after_steps();
   test_after_steps_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.test_after_steps)
 }
 
 // optional int32 test_frequency = 14 [default = 0];
@@ -4242,11 +4204,13 @@ inline void ModelProto::clear_test_frequency() {
   clear_has_test_frequency();
 }
 inline ::google::protobuf::int32 ModelProto::test_frequency() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.test_frequency)
   return test_frequency_;
 }
 inline void ModelProto::set_test_frequency(::google::protobuf::int32 value) {
   set_has_test_frequency();
   test_frequency_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.test_frequency)
 }
 
 // optional int32 checkpoint_after_steps = 15 [default = 0];
@@ -4264,11 +4228,13 @@ inline void ModelProto::clear_checkpoint_after_steps() {
   clear_has_checkpoint_after_steps();
 }
 inline ::google::protobuf::int32 ModelProto::checkpoint_after_steps() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.checkpoint_after_steps)
   return checkpoint_after_steps_;
 }
 inline void ModelProto::set_checkpoint_after_steps(::google::protobuf::int32 value) {
   set_has_checkpoint_after_steps();
   checkpoint_after_steps_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.checkpoint_after_steps)
 }
 
 // optional int32 checkpoint_frequency = 16 [default = 0];
@@ -4286,11 +4252,13 @@ inline void ModelProto::clear_checkpoint_frequency() {
   clear_has_checkpoint_frequency();
 }
 inline ::google::protobuf::int32 ModelProto::checkpoint_frequency() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.checkpoint_frequency)
   return checkpoint_frequency_;
 }
 inline void ModelProto::set_checkpoint_frequency(::google::protobuf::int32 value) {
   set_has_checkpoint_frequency();
   checkpoint_frequency_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.checkpoint_frequency)
 }
 
 // optional bool prefetch = 18 [default = true];
@@ -4308,11 +4276,13 @@ inline void ModelProto::clear_prefetch() {
   clear_has_prefetch();
 }
 inline bool ModelProto::prefetch() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.prefetch)
   return prefetch_;
 }
 inline void ModelProto::set_prefetch(bool value) {
   set_has_prefetch();
   prefetch_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.prefetch)
 }
 
 // optional int32 train_steps = 20;
@@ -4330,11 +4300,13 @@ inline void ModelProto::clear_train_steps() {
   clear_has_train_steps();
 }
 inline ::google::protobuf::int32 ModelProto::train_steps() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.train_steps)
   return train_steps_;
 }
 inline void ModelProto::set_train_steps(::google::protobuf::int32 value) {
   set_has_train_steps();
   train_steps_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.train_steps)
 }
 
 // optional int32 validation_steps = 21;
@@ -4352,11 +4324,13 @@ inline void ModelProto::clear_validation_steps() {
   clear_has_validation_steps();
 }
 inline ::google::protobuf::int32 ModelProto::validation_steps() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.validation_steps)
   return validation_steps_;
 }
 inline void ModelProto::set_validation_steps(::google::protobuf::int32 value) {
   set_has_validation_steps();
   validation_steps_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.validation_steps)
 }
 
 // optional int32 test_steps = 22;
@@ -4374,11 +4348,13 @@ inline void ModelProto::clear_test_steps() {
   clear_has_test_steps();
 }
 inline ::google::protobuf::int32 ModelProto::test_steps() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.test_steps)
   return test_steps_;
 }
 inline void ModelProto::set_test_steps(::google::protobuf::int32 value) {
   set_has_test_steps();
   test_steps_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.test_steps)
 }
 
 // optional int32 step = 29 [default = 0];
@@ -4396,11 +4372,13 @@ inline void ModelProto::clear_step() {
   clear_has_step();
 }
 inline ::google::protobuf::int32 ModelProto::step() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.step)
   return step_;
 }
 inline void ModelProto::set_step(::google::protobuf::int32 value) {
   set_has_step();
   step_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.step)
 }
 
 // optional .singa.UpdaterProto updater = 31;
@@ -4418,11 +4396,13 @@ inline void ModelProto::clear_updater() {
   clear_has_updater();
 }
 inline const ::singa::UpdaterProto& ModelProto::updater() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.updater)
   return updater_ != NULL ? *updater_ : *default_instance_->updater_;
 }
 inline ::singa::UpdaterProto* ModelProto::mutable_updater() {
   set_has_updater();
   if (updater_ == NULL) updater_ = new ::singa::UpdaterProto;
+  // @@protoc_insertion_point(field_mutable:singa.ModelProto.updater)
   return updater_;
 }
 inline ::singa::UpdaterProto* ModelProto::release_updater() {
@@ -4439,6 +4419,7 @@ inline void ModelProto::set_allocated_updater(::singa::UpdaterProto* updater) {
   } else {
     clear_has_updater();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.ModelProto.updater)
 }
 
 // optional .singa.ModelProto.GradCalcAlg alg = 32 [default = kBackPropagation];
@@ -4456,12 +4437,14 @@ inline void ModelProto::clear_alg() {
   clear_has_alg();
 }
 inline ::singa::ModelProto_GradCalcAlg ModelProto::alg() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.alg)
   return static_cast< ::singa::ModelProto_GradCalcAlg >(alg_);
 }
 inline void ModelProto::set_alg(::singa::ModelProto_GradCalcAlg value) {
   assert(::singa::ModelProto_GradCalcAlg_IsValid(value));
   set_has_alg();
   alg_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.alg)
 }
 
 // optional bool hogwild = 33 [default = false];
@@ -4479,11 +4462,13 @@ inline void ModelProto::clear_hogwild() {
   clear_has_hogwild();
 }
 inline bool ModelProto::hogwild() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.hogwild)
   return hogwild_;
 }
 inline void ModelProto::set_hogwild(bool value) {
   set_has_hogwild();
   hogwild_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.hogwild)
 }
 
 // optional .singa.NetProto neuralnet = 40;
@@ -4501,11 +4486,13 @@ inline void ModelProto::clear_neuralnet() {
   clear_has_neuralnet();
 }
 inline const ::singa::NetProto& ModelProto::neuralnet() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.neuralnet)
   return neuralnet_ != NULL ? *neuralnet_ : *default_instance_->neuralnet_;
 }
 inline ::singa::NetProto* ModelProto::mutable_neuralnet() {
   set_has_neuralnet();
   if (neuralnet_ == NULL) neuralnet_ = new ::singa::NetProto;
+  // @@protoc_insertion_point(field_mutable:singa.ModelProto.neuralnet)
   return neuralnet_;
 }
 inline ::singa::NetProto* ModelProto::release_neuralnet() {
@@ -4522,6 +4509,7 @@ inline void ModelProto::set_allocated_neuralnet(::singa::NetProto* neuralnet) {
   } else {
     clear_has_neuralnet();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.ModelProto.neuralnet)
 }
 
 // optional bool debug = 41 [default = false];
@@ -4539,11 +4527,13 @@ inline void ModelProto::clear_debug() {
   clear_has_debug();
 }
 inline bool ModelProto::debug() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.debug)
   return debug_;
 }
 inline void ModelProto::set_debug(bool value) {
   set_has_debug();
   debug_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.debug)
 }
 
 // optional int32 warmup_steps = 50 [default = 0];
@@ -4561,11 +4551,13 @@ inline void ModelProto::clear_warmup_steps() {
   clear_has_warmup_steps();
 }
 inline ::google::protobuf::int32 ModelProto::warmup_steps() const {
+  // @@protoc_insertion_point(field_get:singa.ModelProto.warmup_steps)
   return warmup_steps_;
 }
 inline void ModelProto::set_warmup_steps(::google::protobuf::int32 value) {
   set_has_warmup_steps();
   warmup_steps_ = value;
+  // @@protoc_insertion_point(field_set:singa.ModelProto.warmup_steps)
 }
 
 // -------------------------------------------------------------------
@@ -4580,20 +4572,25 @@ inline void NetProto::clear_layer() {
   layer_.Clear();
 }
 inline const ::singa::LayerProto& NetProto::layer(int index) const {
+  // @@protoc_insertion_point(field_get:singa.NetProto.layer)
   return layer_.Get(index);
 }
 inline ::singa::LayerProto* NetProto::mutable_layer(int index) {
+  // @@protoc_insertion_point(field_mutable:singa.NetProto.layer)
   return layer_.Mutable(index);
 }
 inline ::singa::LayerProto* NetProto::add_layer() {
+  // @@protoc_insertion_point(field_add:singa.NetProto.layer)
   return layer_.Add();
 }
 inline const ::google::protobuf::RepeatedPtrField< ::singa::LayerProto >&
 NetProto::layer() const {
+  // @@protoc_insertion_point(field_list:singa.NetProto.layer)
   return layer_;
 }
 inline ::google::protobuf::RepeatedPtrField< ::singa::LayerProto >*
 NetProto::mutable_layer() {
+  // @@protoc_insertion_point(field_mutable_list:singa.NetProto.layer)
   return &layer_;
 }
 
@@ -4612,12 +4609,14 @@ inline void NetProto::clear_partition_type() {
   clear_has_partition_type();
 }
 inline ::singa::PartitionType NetProto::partition_type() const {
+  // @@protoc_insertion_point(field_get:singa.NetProto.partition_type)
   return static_cast< ::singa::PartitionType >(partition_type_);
 }
 inline void NetProto::set_partition_type(::singa::PartitionType value) {
   assert(::singa::PartitionType_IsValid(value));
   set_has_partition_type();
   partition_type_ = value;
+  // @@protoc_insertion_point(field_set:singa.NetProto.partition_type)
 }
 
 // -------------------------------------------------------------------
@@ -4635,54 +4634,59 @@ inline void ParamProto::clear_has_name() {
   _has_bits_[0] &= ~0x00000001u;
 }
 inline void ParamProto::clear_name() {
-  if (name_ != &::google::protobuf::internal::kEmptyString) {
+  if (name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_->clear();
   }
   clear_has_name();
 }
 inline const ::std::string& ParamProto::name() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.name)
   return *name_;
 }
 inline void ParamProto::set_name(const ::std::string& value) {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
   name_->assign(value);
+  // @@protoc_insertion_point(field_set:singa.ParamProto.name)
 }
 inline void ParamProto::set_name(const char* value) {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
   name_->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.ParamProto.name)
 }
 inline void ParamProto::set_name(const char* value, size_t size) {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
   name_->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.ParamProto.name)
 }
 inline ::std::string* ParamProto::mutable_name() {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
+  // @@protoc_insertion_point(field_mutable:singa.ParamProto.name)
   return name_;
 }
 inline ::std::string* ParamProto::release_name() {
   clear_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     return NULL;
   } else {
     ::std::string* temp = name_;
-    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
     return temp;
   }
 }
 inline void ParamProto::set_allocated_name(::std::string* name) {
-  if (name_ != &::google::protobuf::internal::kEmptyString) {
+  if (name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     delete name_;
   }
   if (name) {
@@ -4690,8 +4694,9 @@ inline void ParamProto::set_allocated_name(::std::string* name) {
     name_ = name;
   } else {
     clear_has_name();
-    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.ParamProto.name)
 }
 
 // optional int32 id = 2;
@@ -4709,11 +4714,13 @@ inline void ParamProto::clear_id() {
   clear_has_id();
 }
 inline ::google::protobuf::int32 ParamProto::id() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.id)
   return id_;
 }
 inline void ParamProto::set_id(::google::protobuf::int32 value) {
   set_has_id();
   id_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.id)
 }
 
 // repeated int32 shape = 3;
@@ -4724,20 +4731,25 @@ inline void ParamProto::clear_shape() {
   shape_.Clear();
 }
 inline ::google::protobuf::int32 ParamProto::shape(int index) const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.shape)
   return shape_.Get(index);
 }
 inline void ParamProto::set_shape(int index, ::google::protobuf::int32 value) {
   shape_.Set(index, value);
+  // @@protoc_insertion_point(field_set:singa.ParamProto.shape)
 }
 inline void ParamProto::add_shape(::google::protobuf::int32 value) {
   shape_.Add(value);
+  // @@protoc_insertion_point(field_add:singa.ParamProto.shape)
 }
 inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
 ParamProto::shape() const {
+  // @@protoc_insertion_point(field_list:singa.ParamProto.shape)
   return shape_;
 }
 inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
 ParamProto::mutable_shape() {
+  // @@protoc_insertion_point(field_mutable_list:singa.ParamProto.shape)
   return &shape_;
 }
 
@@ -4756,11 +4768,13 @@ inline void ParamProto::clear_split_threshold() {
   clear_has_split_threshold();
 }
 inline ::google::protobuf::int32 ParamProto::split_threshold() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.split_threshold)
   return split_threshold_;
 }
 inline void ParamProto::set_split_threshold(::google::protobuf::int32 value) {
   set_has_split_threshold();
   split_threshold_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.split_threshold)
 }
 
 // optional int32 partition_dim = 5 [default = -1];
@@ -4778,11 +4792,13 @@ inline void ParamProto::clear_partition_dim() {
   clear_has_partition_dim();
 }
 inline ::google::protobuf::int32 ParamProto::partition_dim() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.partition_dim)
   return partition_dim_;
 }
 inline void ParamProto::set_partition_dim(::google::protobuf::int32 value) {
   set_has_partition_dim();
   partition_dim_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.partition_dim)
 }
 
 // optional int32 owner = 6;
@@ -4800,11 +4816,13 @@ inline void ParamProto::clear_owner() {
   clear_has_owner();
 }
 inline ::google::protobuf::int32 ParamProto::owner() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.owner)
   return owner_;
 }
 inline void ParamProto::set_owner(::google::protobuf::int32 value) {
   set_has_owner();
   owner_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.owner)
 }
 
 // optional .singa.ParamProto.InitMethod init_method = 7 [default = kConstant];
@@ -4822,12 +4840,14 @@ inline void ParamProto::clear_init_method() {
   clear_has_init_method();
 }
 inline ::singa::ParamProto_InitMethod ParamProto::init_method() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.init_method)
   return static_cast< ::singa::ParamProto_InitMethod >(init_method_);
 }
 inline void ParamProto::set_init_method(::singa::ParamProto_InitMethod value) {
   assert(::singa::ParamProto_InitMethod_IsValid(value));
   set_has_init_method();
   init_method_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.init_method)
 }
 
 // optional float value = 8 [default = 1];
@@ -4845,11 +4865,13 @@ inline void ParamProto::clear_value() {
   clear_has_value();
 }
 inline float ParamProto::value() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.value)
   return value_;
 }
 inline void ParamProto::set_value(float value) {
   set_has_value();
   value_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.value)
 }
 
 // optional float low = 9 [default = -1];
@@ -4867,11 +4889,13 @@ inline void ParamProto::clear_low() {
   clear_has_low();
 }
 inline float ParamProto::low() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.low)
   return low_;
 }
 inline void ParamProto::set_low(float value) {
   set_has_low();
   low_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.low)
 }
 
 // optional float high = 10 [default = 1];
@@ -4889,11 +4913,13 @@ inline void ParamProto::clear_high() {
   clear_has_high();
 }
 inline float ParamProto::high() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.high)
   return high_;
 }
 inline void ParamProto::set_high(float value) {
   set_has_high();
   high_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.high)
 }
 
 // optional float mean = 11 [default = 0];
@@ -4911,11 +4937,13 @@ inline void ParamProto::clear_mean() {
   clear_has_mean();
 }
 inline float ParamProto::mean() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.mean)
   return mean_;
 }
 inline void ParamProto::set_mean(float value) {
   set_has_mean();
   mean_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.mean)
 }
 
 // optional float std = 12 [default = 1];
@@ -4933,11 +4961,13 @@ inline void ParamProto::clear_std() {
   clear_has_std();
 }
 inline float ParamProto::std() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.std)
   return std_;
 }
 inline void ParamProto::set_std(float value) {
   set_has_std();
   std_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.std)
 }
 
 // optional float learning_rate_multiplier = 13 [default = 1];
@@ -4955,11 +4985,13 @@ inline void ParamProto::clear_learning_rate_multiplier() {
   clear_has_learning_rate_multiplier();
 }
 inline float ParamProto::learning_rate_multiplier() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.learning_rate_multiplier)
   return learning_rate_multiplier_;
 }
 inline void ParamProto::set_learning_rate_multiplier(float value) {
   set_has_learning_rate_multiplier();
   learning_rate_multiplier_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.learning_rate_multiplier)
 }
 
 // optional float weight_decay_multiplier = 14 [default = 1];
@@ -4977,11 +5009,13 @@ inline void ParamProto::clear_weight_decay_multiplier() {
   clear_has_weight_decay_multiplier();
 }
 inline float ParamProto::weight_decay_multiplier() const {
+  // @@protoc_insertion_point(field_get:singa.ParamProto.weight_decay_multiplier)
   return weight_decay_multiplier_;
 }
 inline void ParamProto::set_weight_decay_multiplier(float value) {
   set_has_weight_decay_multiplier();
   weight_decay_multiplier_ = value;
+  // @@protoc_insertion_point(field_set:singa.ParamProto.weight_decay_multiplier)
 }
 
 // -------------------------------------------------------------------
@@ -4996,20 +5030,25 @@ inline void BlobProtos::clear_blobs() {
   blobs_.Clear();
 }
 inline const ::singa::BlobProto& BlobProtos::blobs(int index) const {
+  // @@protoc_insertion_point(field_get:singa.BlobProtos.blobs)
   return blobs_.Get(index);
 }
 inline ::singa::BlobProto* BlobProtos::mutable_blobs(int index) {
+  // @@protoc_insertion_point(field_mutable:singa.BlobProtos.blobs)
   return blobs_.Mutable(index);
 }
 inline ::singa::BlobProto* BlobProtos::add_blobs() {
+  // @@protoc_insertion_point(field_add:singa.BlobProtos.blobs)
   return blobs_.Add();
 }
 inline const ::google::protobuf::RepeatedPtrField< ::singa::BlobProto >&
 BlobProtos::blobs() const {
+  // @@protoc_insertion_point(field_list:singa.BlobProtos.blobs)
   return blobs_;
 }
 inline ::google::protobuf::RepeatedPtrField< ::singa::BlobProto >*
 BlobProtos::mutable_blobs() {
+  // @@protoc_insertion_point(field_mutable_list:singa.BlobProtos.blobs)
   return &blobs_;
 }
 
@@ -5021,20 +5060,25 @@ inline void BlobProtos::clear_ids() {
   ids_.Clear();
 }
 inline ::google::protobuf::int32 BlobProtos::ids(int index) const {
+  // @@protoc_insertion_point(field_get:singa.BlobProtos.ids)
   return ids_.Get(index);
 }
 inline void BlobProtos::set_ids(int index, ::google::protobuf::int32 value) {
   ids_.Set(index, value);
+  // @@protoc_insertion_point(field_set:singa.BlobProtos.ids)
 }
 inline void BlobProtos::add_ids(::google::protobuf::int32 value) {
   ids_.Add(value);
+  // @@protoc_insertion_point(field_add:singa.BlobProtos.ids)
 }
 inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
 BlobProtos::ids() const {
+  // @@protoc_insertion_point(field_list:singa.BlobProtos.ids)
   return ids_;
 }
 inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
 BlobProtos::mutable_ids() {
+  // @@protoc_insertion_point(field_mutable_list:singa.BlobProtos.ids)
   return &ids_;
 }
 
@@ -5046,39 +5090,49 @@ inline void BlobProtos::clear_names() {
   names_.Clear();
 }
 inline const ::std::string& BlobProtos::names(int index) const {
+  // @@protoc_insertion_point(field_get:singa.BlobProtos.names)
   return names_.Get(index);
 }
 inline ::std::string* BlobProtos::mutable_names(int index) {
+  // @@protoc_insertion_point(field_mutable:singa.BlobProtos.names)
   return names_.Mutable(index);
 }
 inline void BlobProtos::set_names(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:singa.BlobProtos.names)
   names_.Mutable(index)->assign(value);
 }
 inline void BlobProtos::set_names(int index, const char* value) {
   names_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.BlobProtos.names)
 }
 inline void BlobProtos::set_names(int index, const char* value, size_t size) {
   names_.Mutable(index)->assign(
     reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.BlobProtos.names)
 }
 inline ::std::string* BlobProtos::add_names() {
   return names_.Add();
 }
 inline void BlobProtos::add_names(const ::std::string& value) {
   names_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:singa.BlobProtos.names)
 }
 inline void BlobProtos::add_names(const char* value) {
   names_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:singa.BlobProtos.names)
 }
 inline void BlobProtos::add_names(const char* value, size_t size) {
   names_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:singa.BlobProtos.names)
 }
 inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
 BlobProtos::names() const {
+  // @@protoc_insertion_point(field_list:singa.BlobProtos.names)
   return names_;
 }
 inline ::google::protobuf::RepeatedPtrField< ::std::string>*
 BlobProtos::mutable_names() {
+  // @@protoc_insertion_point(field_mutable_list:singa.BlobProtos.names)
   return &names_;
 }
 
@@ -5097,54 +5151,59 @@ inline void LayerProto::clear_has_name() {
   _has_bits_[0] &= ~0x00000001u;
 }
 inline void LayerProto::clear_name() {
-  if (name_ != &::google::protobuf::internal::kEmptyString) {
+  if (name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_->clear();
   }
   clear_has_name();
 }
 inline const ::std::string& LayerProto::name() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.name)
   return *name_;
 }
 inline void LayerProto::set_name(const ::std::string& value) {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
   name_->assign(value);
+  // @@protoc_insertion_point(field_set:singa.LayerProto.name)
 }
 inline void LayerProto::set_name(const char* value) {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
   name_->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.LayerProto.name)
 }
 inline void LayerProto::set_name(const char* value, size_t size) {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
   name_->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.LayerProto.name)
 }
 inline ::std::string* LayerProto::mutable_name() {
   set_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     name_ = new ::std::string;
   }
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.name)
   return name_;
 }
 inline ::std::string* LayerProto::release_name() {
   clear_has_name();
-  if (name_ == &::google::protobuf::internal::kEmptyString) {
+  if (name_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     return NULL;
   } else {
     ::std::string* temp = name_;
-    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
     return temp;
   }
 }
 inline void LayerProto::set_allocated_name(::std::string* name) {
-  if (name_ != &::google::protobuf::internal::kEmptyString) {
+  if (name_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     delete name_;
   }
   if (name) {
@@ -5152,8 +5211,9 @@ inline void LayerProto::set_allocated_name(::std::string* name) {
     name_ = name;
   } else {
     clear_has_name();
-    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    name_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.name)
 }
 
 // optional string type = 2;
@@ -5167,54 +5227,59 @@ inline void LayerProto::clear_has_type() {
   _has_bits_[0] &= ~0x00000002u;
 }
 inline void LayerProto::clear_type() {
-  if (type_ != &::google::protobuf::internal::kEmptyString) {
+  if (type_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     type_->clear();
   }
   clear_has_type();
 }
 inline const ::std::string& LayerProto::type() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.type)
   return *type_;
 }
 inline void LayerProto::set_type(const ::std::string& value) {
   set_has_type();
-  if (type_ == &::google::protobuf::internal::kEmptyString) {
+  if (type_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     type_ = new ::std::string;
   }
   type_->assign(value);
+  // @@protoc_insertion_point(field_set:singa.LayerProto.type)
 }
 inline void LayerProto::set_type(const char* value) {
   set_has_type();
-  if (type_ == &::google::protobuf::internal::kEmptyString) {
+  if (type_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     type_ = new ::std::string;
   }
   type_->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.LayerProto.type)
 }
 inline void LayerProto::set_type(const char* value, size_t size) {
   set_has_type();
-  if (type_ == &::google::protobuf::internal::kEmptyString) {
+  if (type_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     type_ = new ::std::string;
   }
   type_->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.LayerProto.type)
 }
 inline ::std::string* LayerProto::mutable_type() {
   set_has_type();
-  if (type_ == &::google::protobuf::internal::kEmptyString) {
+  if (type_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     type_ = new ::std::string;
   }
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.type)
   return type_;
 }
 inline ::std::string* LayerProto::release_type() {
   clear_has_type();
-  if (type_ == &::google::protobuf::internal::kEmptyString) {
+  if (type_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     return NULL;
   } else {
     ::std::string* temp = type_;
-    type_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    type_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
     return temp;
   }
 }
 inline void LayerProto::set_allocated_type(::std::string* type) {
-  if (type_ != &::google::protobuf::internal::kEmptyString) {
+  if (type_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     delete type_;
   }
   if (type) {
@@ -5222,8 +5287,9 @@ inline void LayerProto::set_allocated_type(::std::string* type) {
     type_ = type;
   } else {
     clear_has_type();
-    type_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    type_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.type)
 }
 
 // repeated string srclayers = 3;
@@ -5234,39 +5300,49 @@ inline void LayerProto::clear_srclayers() {
   srclayers_.Clear();
 }
 inline const ::std::string& LayerProto::srclayers(int index) const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.srclayers)
   return srclayers_.Get(index);
 }
 inline ::std::string* LayerProto::mutable_srclayers(int index) {
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.srclayers)
   return srclayers_.Mutable(index);
 }
 inline void LayerProto::set_srclayers(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:singa.LayerProto.srclayers)
   srclayers_.Mutable(index)->assign(value);
 }
 inline void LayerProto::set_srclayers(int index, const char* value) {
   srclayers_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.LayerProto.srclayers)
 }
 inline void LayerProto::set_srclayers(int index, const char* value, size_t size) {
   srclayers_.Mutable(index)->assign(
     reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.LayerProto.srclayers)
 }
 inline ::std::string* LayerProto::add_srclayers() {
   return srclayers_.Add();
 }
 inline void LayerProto::add_srclayers(const ::std::string& value) {
   srclayers_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:singa.LayerProto.srclayers)
 }
 inline void LayerProto::add_srclayers(const char* value) {
   srclayers_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:singa.LayerProto.srclayers)
 }
 inline void LayerProto::add_srclayers(const char* value, size_t size) {
   srclayers_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:singa.LayerProto.srclayers)
 }
 inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
 LayerProto::srclayers() const {
+  // @@protoc_insertion_point(field_list:singa.LayerProto.srclayers)
   return srclayers_;
 }
 inline ::google::protobuf::RepeatedPtrField< ::std::string>*
 LayerProto::mutable_srclayers() {
+  // @@protoc_insertion_point(field_mutable_list:singa.LayerProto.srclayers)
   return &srclayers_;
 }
 
@@ -5285,11 +5361,13 @@ inline void LayerProto::clear_locationid() {
   clear_has_locationid();
 }
 inline ::google::protobuf::int32 LayerProto::locationid() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.locationid)
   return locationid_;
 }
 inline void LayerProto::set_locationid(::google::protobuf::int32 value) {
   set_has_locationid();
   locationid_ = value;
+  // @@protoc_insertion_point(field_set:singa.LayerProto.locationid)
 }
 
 // optional int32 partitionid = 5 [default = 0];
@@ -5307,11 +5385,13 @@ inline void LayerProto::clear_partitionid() {
   clear_has_partitionid();
 }
 inline ::google::protobuf::int32 LayerProto::partitionid() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.partitionid)
   return partitionid_;
 }
 inline void LayerProto::set_partitionid(::google::protobuf::int32 value) {
   set_has_partitionid();
   partitionid_ = value;
+  // @@protoc_insertion_point(field_set:singa.LayerProto.partitionid)
 }
 
 // optional .singa.PartitionType partition_type = 6;
@@ -5329,12 +5409,14 @@ inline void LayerProto::clear_partition_type() {
   clear_has_partition_type();
 }
 inline ::singa::PartitionType LayerProto::partition_type() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.partition_type)
   return static_cast< ::singa::PartitionType >(partition_type_);
 }
 inline void LayerProto::set_partition_type(::singa::PartitionType value) {
   assert(::singa::PartitionType_IsValid(value));
   set_has_partition_type();
   partition_type_ = value;
+  // @@protoc_insertion_point(field_set:singa.LayerProto.partition_type)
 }
 
 // optional string datablob = 7;
@@ -5348,54 +5430,59 @@ inline void LayerProto::clear_has_datablob() {
   _has_bits_[0] &= ~0x00000040u;
 }
 inline void LayerProto::clear_datablob() {
-  if (datablob_ != &::google::protobuf::internal::kEmptyString) {
+  if (datablob_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     datablob_->clear();
   }
   clear_has_datablob();
 }
 inline const ::std::string& LayerProto::datablob() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.datablob)
   return *datablob_;
 }
 inline void LayerProto::set_datablob(const ::std::string& value) {
   set_has_datablob();
-  if (datablob_ == &::google::protobuf::internal::kEmptyString) {
+  if (datablob_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     datablob_ = new ::std::string;
   }
   datablob_->assign(value);
+  // @@protoc_insertion_point(field_set:singa.LayerProto.datablob)
 }
 inline void LayerProto::set_datablob(const char* value) {
   set_has_datablob();
-  if (datablob_ == &::google::protobuf::internal::kEmptyString) {
+  if (datablob_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     datablob_ = new ::std::string;
   }
   datablob_->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.LayerProto.datablob)
 }
 inline void LayerProto::set_datablob(const char* value, size_t size) {
   set_has_datablob();
-  if (datablob_ == &::google::protobuf::internal::kEmptyString) {
+  if (datablob_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     datablob_ = new ::std::string;
   }
   datablob_->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.LayerProto.datablob)
 }
 inline ::std::string* LayerProto::mutable_datablob() {
   set_has_datablob();
-  if (datablob_ == &::google::protobuf::internal::kEmptyString) {
+  if (datablob_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     datablob_ = new ::std::string;
   }
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.datablob)
   return datablob_;
 }
 inline ::std::string* LayerProto::release_datablob() {
   clear_has_datablob();
-  if (datablob_ == &::google::protobuf::internal::kEmptyString) {
+  if (datablob_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     return NULL;
   } else {
     ::std::string* temp = datablob_;
-    datablob_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    datablob_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
     return temp;
   }
 }
 inline void LayerProto::set_allocated_datablob(::std::string* datablob) {
-  if (datablob_ != &::google::protobuf::internal::kEmptyString) {
+  if (datablob_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
     delete datablob_;
   }
   if (datablob) {
@@ -5403,8 +5490,9 @@ inline void LayerProto::set_allocated_datablob(::std::string* datablob) {
     datablob_ = datablob;
   } else {
     clear_has_datablob();
-    datablob_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    datablob_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.datablob)
 }
 
 // repeated string share_ary = 11;
@@ -5415,39 +5503,49 @@ inline void LayerProto::clear_share_ary() {
   share_ary_.Clear();
 }
 inline const ::std::string& LayerProto::share_ary(int index) const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.share_ary)
   return share_ary_.Get(index);
 }
 inline ::std::string* LayerProto::mutable_share_ary(int index) {
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.share_ary)
   return share_ary_.Mutable(index);
 }
 inline void LayerProto::set_share_ary(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:singa.LayerProto.share_ary)
   share_ary_.Mutable(index)->assign(value);
 }
 inline void LayerProto::set_share_ary(int index, const char* value) {
   share_ary_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.LayerProto.share_ary)
 }
 inline void LayerProto::set_share_ary(int index, const char* value, size_t size) {
   share_ary_.Mutable(index)->assign(
     reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.LayerProto.share_ary)
 }
 inline ::std::string* LayerProto::add_share_ary() {
   return share_ary_.Add();
 }
 inline void LayerProto::add_share_ary(const ::std::string& value) {
   share_ary_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:singa.LayerProto.share_ary)
 }
 inline void LayerProto::add_share_ary(const char* value) {
   share_ary_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:singa.LayerProto.share_ary)
 }
 inline void LayerProto::add_share_ary(const char* value, size_t size) {
   share_ary_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:singa.LayerProto.share_ary)
 }
 inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
 LayerProto::share_ary() const {
+  // @@protoc_insertion_point(field_list:singa.LayerProto.share_ary)
   return share_ary_;
 }
 inline ::google::protobuf::RepeatedPtrField< ::std::string>*
 LayerProto::mutable_share_ary() {
+  // @@protoc_insertion_point(field_mutable_list:singa.LayerProto.share_ary)
   return &share_ary_;
 }
 
@@ -5459,20 +5557,25 @@ inline void LayerProto::clear_param() {
   param_.Clear();
 }
 inline const ::singa::ParamProto& LayerProto::param(int index) const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.param)
   return param_.Get(index);
 }
 inline ::singa::ParamProto* LayerProto::mutable_param(int index) {
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.param)
   return param_.Mutable(index);
 }
 inline ::singa::ParamProto* LayerProto::add_param() {
+  // @@protoc_insertion_point(field_add:singa.LayerProto.param)
   return param_.Add();
 }
 inline const ::google::protobuf::RepeatedPtrField< ::singa::ParamProto >&
 LayerProto::param() const {
+  // @@protoc_insertion_point(field_list:singa.LayerProto.param)
   return param_;
 }
 inline ::google::protobuf::RepeatedPtrField< ::singa::ParamProto >*
 LayerProto::mutable_param() {
+  // @@protoc_insertion_point(field_mutable_list:singa.LayerProto.param)
   return &param_;
 }
 
@@ -5484,39 +5587,49 @@ inline void LayerProto::clear_share_param() {
   share_param_.Clear();
 }
 inline const ::std::string& LayerProto::share_param(int index) const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.share_param)
   return share_param_.Get(index);
 }
 inline ::std::string* LayerProto::mutable_share_param(int index) {
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.share_param)
   return share_param_.Mutable(index);
 }
 inline void LayerProto::set_share_param(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:singa.LayerProto.share_param)
   share_param_.Mutable(index)->assign(value);
 }
 inline void LayerProto::set_share_param(int index, const char* value) {
   share_param_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:singa.LayerProto.share_param)
 }
 inline void LayerProto::set_share_param(int index, const char* value, size_t size) {
   share_param_.Mutable(index)->assign(
     reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:singa.LayerProto.share_param)
 }
 inline ::std::string* LayerProto::add_share_param() {
   return share_param_.Add();
 }
 inline void LayerProto::add_share_param(const ::std::string& value) {
   share_param_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:singa.LayerProto.share_param)
 }
 inline void LayerProto::add_share_param(const char* value) {
   share_param_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:singa.LayerProto.share_param)
 }
 inline void LayerProto::add_share_param(const char* value, size_t size) {
   share_param_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:singa.LayerProto.share_param)
 }
 inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
 LayerProto::share_param() const {
+  // @@protoc_insertion_point(field_list:singa.LayerProto.share_param)
   return share_param_;
 }
 inline ::google::protobuf::RepeatedPtrField< ::std::string>*
 LayerProto::mutable_share_param() {
+  // @@protoc_insertion_point(field_mutable_list:singa.LayerProto.share_param)
   return &share_param_;
 }
 
@@ -5528,22 +5641,27 @@ inline void LayerProto::clear_exclude() {
   exclude_.Clear();
 }
 inline ::singa::Phase LayerProto::exclude(int index) const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.exclude)
   return static_cast< ::singa::Phase >(exclude_.Get(index));
 }
 inline void LayerProto::set_exclude(int index, ::singa::Phase value) {
   assert(::singa::Phase_IsValid(value));
   exclude_.Set(index, value);
+  // @@protoc_insertion_point(field_set:singa.LayerProto.exclude)
 }
 inline void LayerProto::add_exclude(::singa::Phase value) {
   assert(::singa::Phase_IsValid(value));
   exclude_.Add(value);
+  // @@protoc_insertion_point(field_add:singa.LayerProto.exclude)
 }
 inline const ::google::protobuf::RepeatedField<int>&
 LayerProto::exclude() const {
+  // @@protoc_insertion_point(field_list:singa.LayerProto.exclude)
   return exclude_;
 }
 inline ::google::protobuf::RepeatedField<int>*
 LayerProto::mutable_exclude() {
+  // @@protoc_insertion_point(field_mutable_list:singa.LayerProto.exclude)
   return &exclude_;
 }
 
@@ -5562,11 +5680,13 @@ inline void LayerProto::clear_convolution_param() {
   clear_has_convolution_param();
 }
 inline const ::singa::ConvolutionProto& LayerProto::convolution_param() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.convolution_param)
   return convolution_param_ != NULL ? *convolution_param_ : *default_instance_->convolution_param_;
 }
 inline ::singa::ConvolutionProto* LayerProto::mutable_convolution_param() {
   set_has_convolution_param();
   if (convolution_param_ == NULL) convolution_param_ = new ::singa::ConvolutionProto;
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.convolution_param)
   return convolution_param_;
 }
 inline ::singa::ConvolutionProto* LayerProto::release_convolution_param() {
@@ -5583,6 +5703,7 @@ inline void LayerProto::set_allocated_convolution_param(::singa::ConvolutionProt
   } else {
     clear_has_convolution_param();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.convolution_param)
 }
 
 // optional .singa.ConcateProto concate_param = 31;
@@ -5600,11 +5721,13 @@ inline void LayerProto::clear_concate_param() {
   clear_has_concate_param();
 }
 inline const ::singa::ConcateProto& LayerProto::concate_param() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.concate_param)
   return concate_param_ != NULL ? *concate_param_ : *default_instance_->concate_param_;
 }
 inline ::singa::ConcateProto* LayerProto::mutable_concate_param() {
   set_has_concate_param();
   if (concate_param_ == NULL) concate_param_ = new ::singa::ConcateProto;
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.concate_param)
   return concate_param_;
 }
 inline ::singa::ConcateProto* LayerProto::release_concate_param() {
@@ -5621,6 +5744,7 @@ inline void LayerProto::set_allocated_concate_param(::singa::ConcateProto* conca
   } else {
     clear_has_concate_param();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.concate_param)
 }
 
 // optional .singa.DataProto data_param = 22;
@@ -5638,11 +5762,13 @@ inline void LayerProto::clear_data_param() {
   clear_has_data_param();
 }
 inline const ::singa::DataProto& LayerProto::data_param() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.data_param)
   return data_param_ != NULL ? *data_param_ : *default_instance_->data_param_;
 }
 inline ::singa::DataProto* LayerProto::mutable_data_param() {
   set_has_data_param();
   if (data_param_ == NULL) data_param_ = new ::singa::DataProto;
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.data_param)
   return data_param_;
 }
 inline ::singa::DataProto* LayerProto::release_data_param() {
@@ -5659,6 +5785,7 @@ inline void LayerProto::set_allocated_data_param(::singa::DataProto* data_param)
   } else {
     clear_has_data_param();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.data_param)
 }
 
 // optional .singa.DropoutProto dropout_param = 23;
@@ -5676,11 +5803,13 @@ inline void LayerProto::clear_dropout_param() {
   clear_has_dropout_param();
 }
 inline const ::singa::DropoutProto& LayerProto::dropout_param() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.dropout_param)
   return dropout_param_ != NULL ? *dropout_param_ : *default_instance_->dropout_param_;
 }
 inline ::singa::DropoutProto* LayerProto::mutable_dropout_param() {
   set_has_dropout_param();
   if (dropout_param_ == NULL) dropout_param_ = new ::singa::DropoutProto;
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.dropout_param)
   return dropout_param_;
 }
 inline ::singa::DropoutProto* LayerProto::release_dropout_param() {
@@ -5697,6 +5826,7 @@ inline void LayerProto::set_allocated_dropout_param(::singa::DropoutProto* dropo
   } else {
     clear_has_dropout_param();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.dropout_param)
 }
 
 // optional .singa.InnerProductProto inner_product_param = 24;
@@ -5714,11 +5844,13 @@ inline void LayerProto::clear_inner_product_param() {
   clear_has_inner_product_param();
 }
 inline const ::singa::InnerProductProto& LayerProto::inner_product_param() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.inner_product_param)
   return inner_product_param_ != NULL ? *inner_product_param_ : *default_instance_->inner_product_param_;
 }
 inline ::singa::InnerProductProto* LayerProto::mutable_inner_product_param() {
   set_has_inner_product_param();
   if (inner_product_param_ == NULL) inner_product_param_ = new ::singa::InnerProductProto;
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.inner_product_param)
   return inner_product_param_;
 }
 inline ::singa::InnerProductProto* LayerProto::release_inner_product_param() {
@@ -5735,6 +5867,7 @@ inline void LayerProto::set_allocated_inner_product_param(::singa::InnerProductP
   } else {
     clear_has_inner_product_param();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.inner_product_param)
 }
 
 // optional .singa.LRNProto lrn_param = 25;
@@ -5752,11 +5885,13 @@ inline void LayerProto::clear_lrn_param() {
   clear_has_lrn_param();
 }
 inline const ::singa::LRNProto& LayerProto::lrn_param() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.lrn_param)
   return lrn_param_ != NULL ? *lrn_param_ : *default_instance_->lrn_param_;
 }
 inline ::singa::LRNProto* LayerProto::mutable_lrn_param() {
   set_has_lrn_param();
   if (lrn_param_ == NULL) lrn_param_ = new ::singa::LRNProto;
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.lrn_param)
   return lrn_param_;
 }
 inline ::singa::LRNProto* LayerProto::release_lrn_param() {
@@ -5773,6 +5908,7 @@ inline void LayerProto::set_allocated_lrn_param(::singa::LRNProto* lrn_param) {
   } else {
     clear_has_lrn_param();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.lrn_param)
 }
 
 // optional .singa.MnistProto mnist_param = 26;
@@ -5790,11 +5926,13 @@ inline void LayerProto::clear_mnist_param() {
   clear_has_mnist_param();
 }
 inline const ::singa::MnistProto& LayerProto::mnist_param() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.mnist_param)
   return mnist_param_ != NULL ? *mnist_param_ : *default_instance_->mnist_param_;
 }
 inline ::singa::MnistProto* LayerProto::mutable_mnist_param() {
   set_has_mnist_param();
   if (mnist_param_ == NULL) mnist_param_ = new ::singa::MnistProto;
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.mnist_param)
   return mnist_param_;
 }
 inline ::singa::MnistProto* LayerProto::release_mnist_param() {
@@ -5811,6 +5949,7 @@ inline void LayerProto::set_allocated_mnist_param(::singa::MnistProto* mnist_par
   } else {
     clear_has_mnist_param();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.mnist_param)
 }
 
 // optional .singa.PoolingProto pooling_param = 27;
@@ -5828,11 +5967,13 @@ inline void LayerProto::clear_pooling_param() {
   clear_has_pooling_param();
 }
 inline const ::singa::PoolingProto& LayerProto::pooling_param() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.pooling_param)
   return pooling_param_ != NULL ? *pooling_param_ : *default_instance_->pooling_param_;
 }
 inline ::singa::PoolingProto* LayerProto::mutable_pooling_param() {
   set_has_pooling_param();
   if (pooling_param_ == NULL) pooling_param_ = new ::singa::PoolingProto;
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.pooling_param)
   return pooling_param_;
 }
 inline ::singa::PoolingProto* LayerProto::release_pooling_param() {
@@ -5849,6 +5990,7 @@ inline void LayerProto::set_allocated_pooling_param(::singa::PoolingProto* pooli
   } else {
     clear_has_pooling_param();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.pooling_param)
 }
 
 // repeated .singa.LayerProto sublayers = 35;
@@ -5859,20 +6001,25 @@ inline void LayerProto::clear_sublayers() {
   sublayers_.Clear();
 }
 inline const ::singa::LayerProto& LayerProto::sublayers(int index) const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.sublayers)
   return sublayers_.Get(index);
 }
 inline ::singa::LayerProto* LayerProto::mutable_sublayers(int index) {
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.sublayers)
   return sublayers_.Mutable(index);
 }
 inline ::singa::LayerProto* LayerProto::add_sublayers() {
+  // @@protoc_insertion_point(field_add:singa.LayerProto.sublayers)
   return sublayers_.Add();
 }
 inline const ::google::protobuf::RepeatedPtrField< ::singa::LayerProto >&
 LayerProto::sublayers() const {
+  // @@protoc_insertion_point(field_list:singa.LayerProto.sublayers)
   return sublayers_;
 }
 inline ::google::protobuf::RepeatedPtrField< ::singa::LayerProto >*
 LayerProto::mutable_sublayers() {
+  // @@protoc_insertion_point(field_mutable_list:singa.LayerProto.sublayers)
   return &sublayers_;
 }
 
@@ -5891,11 +6038,13 @@ inline void LayerProto::clear_slice_param() {
   clear_has_slice_param();
 }
 inline const ::singa::SliceProto& LayerProto::slice_param() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.slice_param)
   return slice_param_ != NULL ? *slice_param_ : *default_instance_->slice_param_;
 }
 inline ::singa::SliceProto* LayerProto::mutable_slice_param() {
   set_has_slice_param();
   if (slice_param_ == NULL) slice_param_ = new ::singa::SliceProto;
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.slice_param)
   return slice_param_;
 }
 inline ::singa::SliceProto* LayerProto::release_slice_param() {
@@ -5912,6 +6061,7 @@ inline void LayerProto::set_allocated_slice_param(::singa::SliceProto* slice_par
   } else {
     clear_has_slice_param();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.LayerProto.slice_param)
 }
 
 // optional .singa.SplitProto split_param = 33;
@@ -5929,11 +6079,13 @@ inline void LayerProto::clear_split_param() {
   clear_has_split_param();
 }
 inline const ::singa::SplitProto& LayerProto::split_param() const {
+  // @@protoc_insertion_point(field_get:singa.LayerProto.split_param)
   return split_param_ != NULL ? *split_param_ : *default_instance_->split_param_;
 }
 inline ::singa::SplitProto* LayerProto::mutable_split_param() {
   set_has_split_param();
   if (split_param_ == NULL) split_param_ = new ::singa::SplitProto;
+  // @@protoc_insertion_point(field_mutable:singa.LayerProto.split_param)
   return split_param_;
 }
 inline ::singa::SplitProto* LayerProto::release_split_param() {
@@ -5950,6 +6102,7 @@ inline void LayerProto::set_allocated_split_param(::singa::SplitProto* split_par
   } else {
     clear_has_split_param();
   }
+  // @@protoc_insertion_point(field_set_allocated:singa.

<TRUNCATED>