refactor caffe2 operator constructors - 2/9 (#17083)
authorSebastian Messmer <messmer@fb.com>
Thu, 28 Feb 2019 22:06:51 +0000 (14:06 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Thu, 28 Feb 2019 22:23:55 +0000 (14:23 -0800)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/17083

clangr codemod

Reviewed By: ezyang

Differential Revision: D14078504

fbshipit-source-id: 34dddb035eee2fca3150e47c57489614b91b6725

25 files changed:
caffe2/operators/clip_op.h
caffe2/operators/collect_and_distribute_fpn_rpn_proposals_op.h
caffe2/operators/concat_split_op.h
caffe2/operators/conditional_op.h
caffe2/operators/conv_op.h
caffe2/operators/conv_op_cudnn.cc
caffe2/operators/conv_op_eigen.cc
caffe2/operators/conv_pool_op_base.h
caffe2/operators/conv_transpose_op.h
caffe2/operators/conv_transpose_op_cudnn.cc
caffe2/operators/conv_transpose_unpool_op_base.h
caffe2/operators/copy_op.cu
caffe2/operators/copy_op.h
caffe2/operators/cosine_embedding_criterion_op.h
caffe2/operators/counter_ops.h
caffe2/operators/create_scope_op.h
caffe2/operators/crf_viterbi_op.cc
caffe2/operators/cross_entropy_op.h
caffe2/operators/ctc_beam_search_decoder_op.h
caffe2/operators/ctc_greedy_decoder_op.h
caffe2/operators/dataset_ops.cc
caffe2/operators/deform_conv_op.h
caffe2/operators/distance_op.h
caffe2/operators/do_op.h
caffe2/operators/dropout_op.h

index f9626cc..3c81edd 100644 (file)
@@ -14,8 +14,9 @@ template <typename T, class Context>
 class ClipOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  ClipOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws),
+  template <class... Args>
+  explicit ClipOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         min_(std::numeric_limits<T>::lowest()),
         max_(std::numeric_limits<T>::max()) {
     if (HasArgument("min")) {
@@ -37,8 +38,9 @@ template <typename T, class Context>
 class ClipGradientOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  ClipGradientOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws),
+  template <class... Args>
+  explicit ClipGradientOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         min_(std::numeric_limits<T>::lowest()),
         max_(std::numeric_limits<T>::max()) {
     if (HasArgument("min")) {
index 6dda625..a73ef60 100644 (file)
@@ -46,8 +46,9 @@ template <class Context>
 class CollectAndDistributeFpnRpnProposalsOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  CollectAndDistributeFpnRpnProposalsOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws),
+  template <class... Args>
+  explicit CollectAndDistributeFpnRpnProposalsOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         roi_canonical_scale_(
             this->template GetSingleArgument<int>("roi_canonical_scale", 224)),
         roi_canonical_level_(
index 55ef4db..53821ed 100644 (file)
@@ -29,8 +29,9 @@ class SplitOp final : public Operator<Context> {
   static const int kSplitOpInputSize = 2;
 
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  SplitOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws),
+  template <class... Args>
+  explicit SplitOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         split_(this->template GetRepeatedArgument<int>("split")) {
     CAFFE_ENFORCE(
         !(OperatorBase::HasArgument("axis") &&
@@ -62,8 +63,9 @@ template <class Context>
 class SplitByLengthsOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  SplitByLengthsOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {
+  template <class... Args>
+  explicit SplitByLengthsOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {
     CAFFE_ENFORCE(
         !(OperatorBase::HasArgument("axis") &&
           OperatorBase::HasArgument("order")),
@@ -91,8 +93,9 @@ template <class Context>
 class ConcatOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  ConcatOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {
+  template <class... Args>
+  explicit ConcatOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {
     CAFFE_ENFORCE(
         !(OperatorBase::HasArgument("axis") &&
           OperatorBase::HasArgument("order")),
index 3f51123..a01bb6d 100644 (file)
@@ -12,8 +12,9 @@ template <class Context>
 class ConditionalOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  ConditionalOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {}
+  template <class... Args>
+  explicit ConditionalOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
 
   bool RunOnDevice() override;
 };
index f4ee1b2..1825346 100644 (file)
@@ -14,7 +14,7 @@ template <typename T, class Context>
 class ConvOp final : public ConvPoolOpBase<Context> {
  public:
   USE_CONV_POOL_BASE_FUNCTIONS(Context);
-  ConvOp(const OperatorDef& operator_def, Workspace* ws)
+  explicit ConvOp(const OperatorDef& operator_def, Workspace* ws)
       : ConvPoolOpBase<Context>(operator_def, ws) {
     // Since this is the default convolution implementation, we will
     // use CAFFE_ENFORCE instead of OPERATOR_NEEDS_FEATURE.
@@ -68,7 +68,7 @@ template <typename T, class Context>
 class ConvGradientOp final : public ConvPoolOpBase<Context> {
  public:
   USE_CONV_POOL_BASE_FUNCTIONS(Context);
-  ConvGradientOp(const OperatorDef& operator_def, Workspace* ws)
+  explicit ConvGradientOp(const OperatorDef& operator_def, Workspace* ws)
       : ConvPoolOpBase<Context>(operator_def, ws),
         no_bias_(this->template GetSingleArgument<int>("no_bias", 0)) {
     CAFFE_ENFORCE(
index 75c6bbb..c48c943 100644 (file)
@@ -12,7 +12,7 @@ namespace caffe2 {
 
 class CudnnConvOpBase : public ConvPoolOpBase<CUDAContext> {
  public:
-  CudnnConvOpBase(const OperatorDef& operator_def, Workspace* ws)
+  explicit CudnnConvOpBase(const OperatorDef& operator_def, Workspace* ws)
       : ConvPoolOpBase<CUDAContext>(operator_def, ws),
         cudnn_wrapper_(&context_),
         cudnn_ws_nbytes_limit_(OperatorBase::GetSingleArgument<size_t>(
@@ -432,7 +432,7 @@ class CudnnConvOpBase : public ConvPoolOpBase<CUDAContext> {
 
 class CudnnConvOp final : public CudnnConvOpBase {
  public:
-  CudnnConvOp(const OperatorDef& operator_def, Workspace* ws)
+  explicit CudnnConvOp(const OperatorDef& operator_def, Workspace* ws)
       : CudnnConvOpBase(operator_def, ws) {}
 
   ~CudnnConvOp() override {}
@@ -453,7 +453,7 @@ class CudnnConvOp final : public CudnnConvOpBase {
 
 class CudnnConvGradientOp final : public CudnnConvOpBase {
  public:
-  CudnnConvGradientOp(const OperatorDef& operator_def, Workspace* ws)
+  explicit CudnnConvGradientOp(const OperatorDef& operator_def, Workspace* ws)
       : CudnnConvOpBase(operator_def, ws),
         no_bias_(OperatorBase::GetSingleArgument<int>("no_bias", 0)) {
     CAFFE_ENFORCE(
index 2e3a641..c13b334 100644 (file)
@@ -15,7 +15,7 @@ template <typename T>
 class EigenConvOp final : public ConvPoolOpBase<CPUContext> {
  public:
   USE_CONV_POOL_BASE_FUNCTIONS(CPUContext);
-  EigenConvOp(const OperatorDef& operator_def, Workspace* ws)
+  explicit EigenConvOp(const OperatorDef& operator_def, Workspace* ws)
       : ConvPoolOpBase<CPUContext>(operator_def, ws) {
     OPERATOR_NEEDS_FEATURE(group_ == 1, "Group convolution not supported yet.");
   }
index cab06c5..e403bfa 100644 (file)
@@ -29,7 +29,7 @@ template <class Context>
 class ConvPoolOpBase : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  ConvPoolOpBase(const OperatorDef& operator_def, Workspace* ws)
+  explicit ConvPoolOpBase(const OperatorDef& operator_def, Workspace* ws)
       : Operator<Context>(operator_def, ws),
         legacy_pad_(
             static_cast<LegacyPadding>(this->template GetSingleArgument<int>(
index b743b30..0148404 100644 (file)
@@ -11,8 +11,9 @@ template <typename T, class Context>
 class ConvTransposeOp final : public ConvTransposeUnpoolBase<Context> {
  public:
   USE_CONV_TRANSPOSE_UNPOOL_BASE_FUNCTIONS(Context);
-  ConvTransposeOp(const OperatorDef& operator_def, Workspace* ws)
-      : ConvTransposeUnpoolBase<Context>(operator_def, ws) {}
+  template <class... Args>
+  explicit ConvTransposeOp(Args&&... args)
+      : ConvTransposeUnpoolBase<Context>(std::forward<Args>(args)...) {}
 
   bool RunOnDeviceWithOrderNCHW() override;
   bool RunOnDeviceWithOrderNHWC() override;
@@ -29,8 +30,9 @@ template <typename T, class Context>
 class ConvTransposeGradientOp final : public ConvTransposeUnpoolBase<Context> {
  public:
   USE_CONV_TRANSPOSE_UNPOOL_BASE_FUNCTIONS(Context);
-  ConvTransposeGradientOp(const OperatorDef& operator_def, Workspace* ws)
-      : ConvTransposeUnpoolBase<Context>(operator_def, ws),
+  template <class... Args>
+  explicit ConvTransposeGradientOp(Args&&... args)
+      : ConvTransposeUnpoolBase<Context>(std::forward<Args>(args)...),
         no_bias_(this->template GetSingleArgument<bool>("no_bias", false)) {
     CAFFE_ENFORCE(
         !(no_bias_ && OutputSize() == 3),
index a4ee8d2..8f8c9a2 100644 (file)
@@ -8,8 +8,9 @@ namespace caffe2 {
 
 class CudnnConvTransposeOpBase : public ConvTransposeUnpoolBase<CUDAContext> {
  public:
-  CudnnConvTransposeOpBase(const OperatorDef& operator_def, Workspace* ws)
-      : ConvTransposeUnpoolBase<CUDAContext>(operator_def, ws),
+  template <class... Args>
+  explicit CudnnConvTransposeOpBase(Args&&... args)
+      : ConvTransposeUnpoolBase<CUDAContext>(std::forward<Args>(args)...),
         cudnn_wrapper_(&context_),
         cudnn_ws_nbytes_limit_(OperatorBase::GetSingleArgument<size_t>(
             "ws_nbytes_limit",
@@ -85,8 +86,9 @@ class CudnnConvTransposeOpBase : public ConvTransposeUnpoolBase<CUDAContext> {
 template <typename T>
 class CudnnConvTransposeOp final : public CudnnConvTransposeOpBase {
  public:
-  CudnnConvTransposeOp(const OperatorDef& operator_def, Workspace* ws)
-      : CudnnConvTransposeOpBase(operator_def, ws) {}
+  template <class... Args>
+  explicit CudnnConvTransposeOp(Args&&... args)
+      : CudnnConvTransposeOpBase(std::forward<Args>(args)...) {}
 
   ~CudnnConvTransposeOp() override {}
 
@@ -103,8 +105,9 @@ class CudnnConvTransposeOp final : public CudnnConvTransposeOpBase {
 template <typename T>
 class CudnnConvTransposeGradientOp final : public CudnnConvTransposeOpBase {
  public:
-  CudnnConvTransposeGradientOp(const OperatorDef& operator_def, Workspace* ws)
-      : CudnnConvTransposeOpBase(operator_def, ws),
+  template <class... Args>
+  explicit CudnnConvTransposeGradientOp(Args&&... args)
+      : CudnnConvTransposeOpBase(std::forward<Args>(args)...),
         no_bias_(OperatorBase::GetSingleArgument<bool>("no_bias", false)) {
     CAFFE_ENFORCE(
         !(no_bias_ && OutputSize() == 3),
index 9e2f921..7ebfda7 100644 (file)
@@ -17,7 +17,7 @@ template <class Context>
 class ConvTransposeUnpoolBase : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  ConvTransposeUnpoolBase(const OperatorDef& operator_def, Workspace* ws)
+  explicit ConvTransposeUnpoolBase(const OperatorDef& operator_def, Workspace* ws)
       : Operator<Context>(operator_def, ws),
         legacy_pad_(
             static_cast<LegacyPadding>(this->template GetSingleArgument<int>(
index e59dd6d..2091524 100644 (file)
@@ -7,8 +7,8 @@ template <>
 class CopyOnDeviceLikeOp<CUDAContext, CUDAContext, CUDAContext>
     : public Operator<CUDAContext> {
  public:
-  CopyOnDeviceLikeOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<CUDAContext>(operator_def, ws) {}
+  template<class... Args> explicit CopyOnDeviceLikeOp(Args&&... args)
+      : Operator<CUDAContext>(std::forward<Args>(args)...) {}
   USE_OPERATOR_FUNCTIONS(CUDAContext);
 
   bool RunOnDevice() override {
index cbaea33..8ccbcb9 100644 (file)
@@ -29,8 +29,9 @@ class CopyOp : public Operator<Context> {
 template <class Context, class DstContext, class SrcContext>
 class CopyOnDeviceLikeOp : public CopyOp<Context, DstContext, SrcContext> {
  public:
-  CopyOnDeviceLikeOp(const OperatorDef& operator_def, Workspace* ws)
-      : CopyOp<Context, DstContext, SrcContext>(operator_def, ws) {}
+  template <class... Args>
+  explicit CopyOnDeviceLikeOp(Args&&... args)
+      : CopyOp<Context, DstContext, SrcContext>(std::forward<Args>(args)...) {}
 };
 
 } // namespace caffe2
index 0d9599d..d9eafe1 100644 (file)
@@ -10,8 +10,9 @@ namespace caffe2 {
 template <class Context>
 class CosineEmbeddingCriterionOp final : public Operator<Context> {
  public:
-  CosineEmbeddingCriterionOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws),
+  template <class... Args>
+  explicit CosineEmbeddingCriterionOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         OP_SINGLE_ARG(float, "margin", margin_, 0.0) {}
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
@@ -24,8 +25,9 @@ class CosineEmbeddingCriterionOp final : public Operator<Context> {
 template <class Context>
 class CosineEmbeddingCriterionGradientOp final : public Operator<Context> {
  public:
-  CosineEmbeddingCriterionGradientOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws),
+  template <class... Args>
+  explicit CosineEmbeddingCriterionGradientOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         OP_SINGLE_ARG(float, "margin", margin_, 0.0) {}
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
index e3342e9..aea0136 100644 (file)
@@ -45,8 +45,9 @@ template <typename T, class Context>
 class CreateCounterOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  CreateCounterOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws),
+  template <class... Args>
+  explicit CreateCounterOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         init_count_(this->template GetSingleArgument<T>("init_count", 0)) {
     CAFFE_ENFORCE_LE(0, init_count_, "negative init_count is not permitted.");
   }
@@ -65,8 +66,9 @@ template <typename T, class Context>
 class ResetCounterOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  ResetCounterOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws),
+  template <class... Args>
+  explicit ResetCounterOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         init_count_(this->template GetSingleArgument<T>("init_count", 0)) {
     CAFFE_ENFORCE_LE(0, init_count_, "negative init_count is not permitted.");
   }
@@ -91,8 +93,9 @@ template <typename T, class Context>
 class CountDownOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  CountDownOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {}
+  template <class... Args>
+  explicit CountDownOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
 
   bool RunOnDevice() override {
     auto& counterPtr = this->template Input<std::unique_ptr<Counter<T>>>(0);
@@ -108,8 +111,9 @@ template <typename T, class Context>
 class CheckCounterDoneOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  CheckCounterDoneOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {}
+  template <class... Args>
+  explicit CheckCounterDoneOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
 
   bool RunOnDevice() override {
     auto& counterPtr = this->template Input<std::unique_ptr<Counter<T>>>(0);
@@ -125,8 +129,9 @@ template <typename T, class Context>
 class CountUpOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  CountUpOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {}
+  template <class... Args>
+  explicit CountUpOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
 
   bool RunOnDevice() override {
     auto& counterPtr = this->template Input<std::unique_ptr<Counter<T>>>(0);
@@ -142,8 +147,9 @@ template <typename T, class Context>
 class RetrieveCountOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  RetrieveCountOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {}
+  template <class... Args>
+  explicit RetrieveCountOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
 
   bool RunOnDevice() override {
     auto& counterPtr = this->template Input<std::unique_ptr<Counter<T>>>(0);
index a587798..e4d228d 100644 (file)
@@ -154,8 +154,9 @@ class CAFFE2_API WorkspaceStack {
 template <class Context>
 class CreateScopeOp final : public Operator<Context> {
  public:
-  CreateScopeOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {}
+  template <class... Args>
+  explicit CreateScopeOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
 
   USE_OPERATOR_CONTEXT_FUNCTIONS;
   bool RunOnDevice() override;
@@ -164,8 +165,9 @@ class CreateScopeOp final : public Operator<Context> {
 template <class Context>
 class HasScopeOp final : public Operator<Context> {
  public:
-  HasScopeOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {}
+  template <class... Args>
+  explicit HasScopeOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
 
   USE_OPERATOR_CONTEXT_FUNCTIONS;
   bool RunOnDevice() override;
index 7042470..07630a6 100644 (file)
@@ -38,8 +38,9 @@ void ColwiseMaxAndArg(
 
 class ViterbiPathOp : public Operator<CPUContext> {
  public:
-  ViterbiPathOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws) {}
+  template <class... Args>
+  explicit ViterbiPathOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...) {}
 
   void GatherRow(
       const TensorCPU& data,
@@ -146,8 +147,9 @@ class ViterbiPathOp : public Operator<CPUContext> {
 };
 class SwapBestPathOp : public Operator<CPUContext> {
  public:
-  SwapBestPathOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws) {}
+  template <class... Args>
+  explicit SwapBestPathOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...) {}
   bool RunOnDevice() override {
     auto& data = Input(0);
     auto& newBestIdicies = Input(1);
index df4bd62..932ed0d 100644 (file)
@@ -68,16 +68,13 @@ template <typename T, class Context>
 class SigmoidCrossEntropyWithLogitsOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  SigmoidCrossEntropyWithLogitsOp(
-      const OperatorDef& operator_def,
-      Workspace* ws)
-      : Operator<Context>(operator_def, ws),
-        log_D_trick_(this->template GetSingleArgument<bool>(
-            "log_D_trick",
-            false)),
-        unjoined_lr_loss_(this->template GetSingleArgument<bool>(
-            "unjoined_lr_loss",
-            false)) {
+  template <class... Args>
+  explicit SigmoidCrossEntropyWithLogitsOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
+        log_D_trick_(
+            this->template GetSingleArgument<bool>("log_D_trick", false)),
+        unjoined_lr_loss_(
+            this->template GetSingleArgument<bool>("unjoined_lr_loss", false)) {
     CAFFE_ENFORCE(
         !(log_D_trick_ && unjoined_lr_loss_),
         "log_D_trick_ and unjoined_lr_loss_ cannot be set as True simultaneously");
@@ -94,16 +91,14 @@ template <typename T, class Context>
 class SigmoidCrossEntropyWithLogitsGradientOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  SigmoidCrossEntropyWithLogitsGradientOp(
-      const OperatorDef& operator_def,
-      Workspace* ws)
-      : Operator<Context>(operator_def, ws),
-        log_D_trick_(this->template GetSingleArgument<bool>(
-            "log_D_trick",
-            false)),
-        unjoined_lr_loss_(this->template GetSingleArgument<bool>(
-            "unjoined_lr_loss",
-            false)) {}
+  template <class... Args>
+  explicit SigmoidCrossEntropyWithLogitsGradientOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
+        log_D_trick_(
+            this->template GetSingleArgument<bool>("log_D_trick", false)),
+        unjoined_lr_loss_(
+            this->template GetSingleArgument<bool>("unjoined_lr_loss", false)) {
+  }
 
   bool RunOnDevice() override;
 
index ab22fdb..a7b43fe 100644 (file)
@@ -10,8 +10,9 @@ template <class Context>
 class CTCBeamSearchDecoderOp : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  CTCBeamSearchDecoderOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {
+  template <class... Args>
+  explicit CTCBeamSearchDecoderOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {
     beam_width_ = this->template GetSingleArgument<int32_t>("beam_width", 10);
     prune_threshold_ =
         this->template GetSingleArgument<float>("prune_threshold", 0.001);
index 128a091..98d2d94 100644 (file)
@@ -10,8 +10,9 @@ template <class Context>
 class CTCGreedyDecoderOp : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  CTCGreedyDecoderOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {
+  template <class... Args>
+  explicit CTCGreedyDecoderOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {
     merge_repeated_ =
         this->template GetSingleArgument<bool>("merge_repeated", true);
   }
index f371c9f..7e75616 100644 (file)
@@ -193,8 +193,9 @@ namespace {
 
 class CreateTreeCursorOp : public Operator<CPUContext> {
  public:
-  CreateTreeCursorOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws),
+  template <class... Args>
+  explicit CreateTreeCursorOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...),
         fields_(OperatorBase::GetRepeatedArgument<std::string>("fields")) {}
 
   bool RunOnDevice() override {
@@ -209,8 +210,9 @@ class CreateTreeCursorOp : public Operator<CPUContext> {
 
 class GetCursorOffsetOp : public Operator<CPUContext> {
  public:
-  GetCursorOffsetOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws) {}
+  template <class... Args>
+  explicit GetCursorOffsetOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...) {}
 
   bool RunOnDevice() override {
     auto& cursor = OperatorBase::Input<std::unique_ptr<TreeCursor>>(0);
@@ -225,8 +227,9 @@ class GetCursorOffsetOp : public Operator<CPUContext> {
 
 class ResetCursorOp : public Operator<CPUContext> {
  public:
-  ResetCursorOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws) {}
+  template <class... Args>
+  explicit ResetCursorOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...) {}
 
   bool RunOnDevice() override {
     auto& cursor = OperatorBase::Input<std::unique_ptr<TreeCursor>>(0);
@@ -238,8 +241,9 @@ class ResetCursorOp : public Operator<CPUContext> {
 
 class CheckDatasetConsistencyOp : public Operator<CPUContext> {
  public:
-  CheckDatasetConsistencyOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws),
+  template <class... Args>
+  explicit CheckDatasetConsistencyOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...),
         iterator_(OperatorBase::GetRepeatedArgument<std::string>("fields")) {}
 
   bool RunOnDevice() override {
@@ -298,8 +302,9 @@ class CheckDatasetConsistencyOp : public Operator<CPUContext> {
 
 class PackRecordsOp : public Operator<CPUContext> {
  public:
-  PackRecordsOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws),
+  template <class... Args>
+  explicit PackRecordsOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...),
         fields_(OperatorBase::GetRepeatedArgument<std::string>("fields")) {}
 
   bool RunOnDevice() override {
@@ -342,8 +347,9 @@ class PackRecordsOp : public Operator<CPUContext> {
 
 class UnPackRecordsOp : public Operator<CPUContext> {
  public:
-  UnPackRecordsOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws),
+  template <class... Args>
+  explicit UnPackRecordsOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...),
         fields_(OperatorBase::GetRepeatedArgument<std::string>("fields")) {}
 
   bool RunOnDevice() override {
@@ -452,8 +458,9 @@ class UnPackRecordsOp : public Operator<CPUContext> {
 
 class ReadNextBatchOp : public Operator<CPUContext> {
  public:
-  ReadNextBatchOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws),
+  template <class... Args>
+  explicit ReadNextBatchOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...),
         batchSize_(OperatorBase::GetSingleArgument<int>("batch_size", 1)),
         enforceBatchSize_(OperatorBase::GetSingleArgument<bool>(
             "enforce_batch_size",
@@ -528,8 +535,9 @@ class ReadNextBatchOp : public Operator<CPUContext> {
 
 class ComputeOffsetOp : public Operator<CPUContext> {
  public:
-  ComputeOffsetOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws) {}
+  template <class... Args>
+  explicit ComputeOffsetOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...) {}
 
   bool RunOnDevice() override {
     auto& cursor = OperatorBase::Input<std::unique_ptr<TreeCursor>>(0);
@@ -577,8 +585,9 @@ class ComputeOffsetOp : public Operator<CPUContext> {
 
 class SortAndShuffleOp : public Operator<CPUContext> {
  public:
-  SortAndShuffleOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws),
+  template <class... Args>
+  explicit SortAndShuffleOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...),
         sort_by_field_idx_(
             OperatorBase::GetSingleArgument<int>("sort_by_field_idx", 1)),
         batch_size_(OperatorBase::GetSingleArgument<int>("batch_size", 1)),
@@ -662,8 +671,9 @@ class SortAndShuffleOp : public Operator<CPUContext> {
 
 class ReadRandomBatchOp : public Operator<CPUContext> {
  public:
-  ReadRandomBatchOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws),
+  template <class... Args>
+  explicit ReadRandomBatchOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...),
         batchSize_(OperatorBase::GetSingleArgument<int>("batch_size", 1)),
         enforceBatchSize_(
             OperatorBase::GetSingleArgument<bool>("enforce_batch_size", false)),
@@ -756,8 +766,9 @@ template <class Context>
 class AppendOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  AppendOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {}
+  template <class... Args>
+  explicit AppendOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
 
   bool RunOnDevice() override {
     auto& a = Input(0);
@@ -787,8 +798,9 @@ template <class Context>
 class AtomicAppendOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  AtomicAppendOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws) {}
+  template <class... Args>
+  explicit AtomicAppendOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
 
   bool RunOnDevice() override {
     auto& mutex = OperatorBase::Input<std::unique_ptr<std::mutex>>(0);
@@ -916,8 +928,9 @@ template <class Context>
 class CollectTensorOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  CollectTensorOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws),
+  template <class... Args>
+  explicit CollectTensorOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         numToCollect_(
             OperatorBase::GetSingleArgument<int>("num_to_collect", -1)),
         numVisited_(0) {
@@ -984,8 +997,9 @@ class CollectTensorOp final : public Operator<Context> {
 
 class TrimDatasetOp : public Operator<CPUContext> {
  public:
-  TrimDatasetOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator(operator_def, ws),
+  template <class... Args>
+  explicit TrimDatasetOp(Args&&... args)
+      : Operator(std::forward<Args>(args)...),
         iterator_(OperatorBase::GetRepeatedArgument<std::string>("fields")),
         multiple_of_(OperatorBase::GetSingleArgument<int>("multiple_of", 1)) {
     CAFFE_ENFORCE_GE(multiple_of_, 1);
index efbbd6e..3196143 100644 (file)
@@ -14,7 +14,7 @@ template <typename T, class Context>
 class DeformConvOpBase : public ConvPoolOpBase<Context> {
  public:
   USE_CONV_POOL_BASE_FUNCTIONS(Context);
-  DeformConvOpBase(const OperatorDef& operator_def, Workspace* ws)
+  explicit DeformConvOpBase(const OperatorDef& operator_def, Workspace* ws)
       : ConvPoolOpBase<Context>(operator_def, ws),
         deformable_group_(
             this->template GetSingleArgument<int>("deformable_group", 1)) {}
@@ -57,7 +57,7 @@ class DeformConvOp final : public DeformConvOpBase<T, Context> {
  public:
   USE_DEFORMABLE_CONV_BASE_FUNCTIONS(T, Context);
 
-  DeformConvOp(const OperatorDef& operator_def, Workspace* ws)
+  explicit DeformConvOp(const OperatorDef& operator_def, Workspace* ws)
       : DeformConvOpBase<T, Context>(operator_def, ws) {
     // Create shared buffer mutex in the constructor
     // to avoid race-condition in DAGNet.
@@ -84,7 +84,7 @@ class DeformConvGradientOp final : public DeformConvOpBase<T, Context> {
  public:
   USE_DEFORMABLE_CONV_BASE_FUNCTIONS(T, Context);
 
-  DeformConvGradientOp(const OperatorDef& operator_def, Workspace* ws)
+  explicit DeformConvGradientOp(const OperatorDef& operator_def, Workspace* ws)
       : DeformConvOpBase<T, Context>(operator_def, ws),
         no_bias_(this->template GetSingleArgument<int>("no_bias", 0)) {
     CAFFE_ENFORCE(
index fd246a2..a246209 100644 (file)
@@ -10,8 +10,9 @@ namespace caffe2 {
 template <typename T, class Context>
 class SquaredL2DistanceOp : public Operator<Context> {
  public:
-  SquaredL2DistanceOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws) {}
+  template <class... Args>
+  explicit SquaredL2DistanceOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
   bool RunOnDevice() override;
@@ -23,8 +24,9 @@ class SquaredL2DistanceOp : public Operator<Context> {
 template <typename T, class Context>
 class SquaredL2DistanceGradientOp final : public Operator<Context> {
  public:
-  SquaredL2DistanceGradientOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws) {}
+  template <class... Args>
+  explicit SquaredL2DistanceGradientOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
   bool RunOnDevice() override {
@@ -73,8 +75,9 @@ class SquaredL2DistanceGradientOp final : public Operator<Context> {
 template <typename T, class Context>
 class L1DistanceOp : public Operator<Context> {
  public:
-  L1DistanceOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws) {}
+  template <class... Args>
+  explicit L1DistanceOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
   bool RunOnDevice() override;
@@ -86,8 +89,9 @@ class L1DistanceOp : public Operator<Context> {
 template <typename T, class Context>
 class L1DistanceGradientOp : public Operator<Context> {
  public:
-  L1DistanceGradientOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws) {}
+  template <class... Args>
+  explicit L1DistanceGradientOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
   bool RunOnDevice() override;
@@ -99,8 +103,9 @@ class L1DistanceGradientOp : public Operator<Context> {
 template <typename T, class Context>
 class DotProductOp : public Operator<Context> {
  public:
-  DotProductOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws) {}
+  template <class... Args>
+  explicit DotProductOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
   bool RunOnDevice() override;
@@ -113,8 +118,9 @@ class DotProductOp : public Operator<Context> {
 template <typename T, class Context>
 class DotProductGradientOp final : public Operator<Context> {
  public:
-  DotProductGradientOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws) {}
+  template <class... Args>
+  explicit DotProductGradientOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
   bool RunOnDevice() override;
@@ -127,10 +133,12 @@ class DotProductGradientOp final : public Operator<Context> {
 template <typename T, class Context>
 class DotProductWithPaddingOp : public Operator<Context> {
  public:
-  DotProductWithPaddingOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws),
+  template <class... Args>
+  explicit DotProductWithPaddingOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         pad_value_(this->template GetSingleArgument<float>("pad_value", 0.0)),
-        replicate_(this->template GetSingleArgument<bool>("replicate", false)) {}
+        replicate_(this->template GetSingleArgument<bool>("replicate", false)) {
+  }
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
   bool RunOnDevice() override;
@@ -145,8 +153,9 @@ class DotProductWithPaddingOp : public Operator<Context> {
 template <typename T, class Context>
 class CosineSimilarityOp : public Operator<Context> {
  public:
-  CosineSimilarityOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws) {}
+  template <class... Args>
+  explicit CosineSimilarityOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
   bool RunOnDevice() override;
@@ -162,8 +171,9 @@ class CosineSimilarityOp : public Operator<Context> {
 template <typename T, class Context>
 class CosineSimilarityGradientOp final : public Operator<Context> {
  public:
-  CosineSimilarityGradientOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws) {}
+  template <class... Args>
+  explicit CosineSimilarityGradientOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...) {}
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
   bool RunOnDevice() override;
@@ -179,10 +189,12 @@ class CosineSimilarityGradientOp final : public Operator<Context> {
 template <typename T, class Context>
 class DotProductWithPaddingGradientOp final : public Operator<Context> {
  public:
-  DotProductWithPaddingGradientOp(const OperatorDef& def, Workspace* ws)
-      : Operator<Context>(def, ws),
+  template <class... Args>
+  explicit DotProductWithPaddingGradientOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         pad_value_(this->template GetSingleArgument<float>("pad_value", 0.0)),
-        replicate_(this->template GetSingleArgument<bool>("replicate", false)) {}
+        replicate_(this->template GetSingleArgument<bool>("replicate", false)) {
+  }
   USE_OPERATOR_CONTEXT_FUNCTIONS;
 
   bool RunOnDevice() override {
index a368842..8ef00bc 100644 (file)
@@ -17,7 +17,7 @@ namespace caffe2 {
 template <class Context>
 class DoOp final : public Operator<Context> {
  public:
-  DoOp(const OperatorDef& operator_def, Workspace* ws)
+  explicit DoOp(const OperatorDef& operator_def, Workspace* ws)
       : Operator<Context>(operator_def, ws), parent_ws_(ws) {
     CAFFE_ENFORCE(
         this->template HasSingleArgumentOfType<NetDef>("net"),
index 98ce0fc..aff0528 100644 (file)
@@ -12,8 +12,9 @@ template <typename T, class Context>
 class DropoutOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  DropoutOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws),
+  template <class... Args>
+  explicit DropoutOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         ratio_(this->template GetSingleArgument<float>("ratio", 0.5)),
         is_test_(
             this->template GetSingleArgument<int>(OpSchema::Arg_IsTest, 0)) {
@@ -33,8 +34,9 @@ template <typename T, class Context>
 class DropoutGradientOp final : public Operator<Context> {
  public:
   USE_OPERATOR_CONTEXT_FUNCTIONS;
-  DropoutGradientOp(const OperatorDef& operator_def, Workspace* ws)
-      : Operator<Context>(operator_def, ws),
+  template <class... Args>
+  explicit DropoutGradientOp(Args&&... args)
+      : Operator<Context>(std::forward<Args>(args)...),
         ratio_(this->template GetSingleArgument<float>("ratio", 0.5)),
         is_test_(
             this->template GetSingleArgument<int>(OpSchema::Arg_IsTest, 0)) {