zhreshold commented on a change in pull request #13802: Image normalize 
operator - GPU support, 3D/4D inputs
URL: https://github.com/apache/incubator-mxnet/pull/13802#discussion_r251137506
 
 

 ##########
 File path: src/operator/image/image_random-inl.h
 ##########
 @@ -123,28 +146,157 @@ inline bool NormalizeShape(const nnvm::NodeAttrs& attrs,
   return true;
 }
 
-void Normalize(const nnvm::NodeAttrs &attrs,
+// Type Inference
+inline bool NormalizeOpType(const nnvm::NodeAttrs& attrs,
+                          std::vector<int>* in_attrs,
+                          std::vector<int>* out_attrs) {
+  CHECK_EQ(in_attrs->size(), 1U);
+  CHECK_EQ(out_attrs->size(), 1U);
+
+  // Normalized Tensor will be a float
+  TYPE_ASSIGN_CHECK(*out_attrs, 0, mshadow::kFloat32);
+  return out_attrs->at(0) != -1;
+}
+
+template<int req>
+struct normalize_forward {
+    template<typename DType>
+    MSHADOW_XINLINE static void Map(int j, DType* out_data, const DType* 
in_data,
+                                    const int i, const int length, const int 
step,
+                                    const DType mean, const DType std_dev) {
+        KERNEL_ASSIGN(out_data[step + i*length + j], req,
+                      (in_data[step + i*length + j] - mean) / std_dev);
+    }
+};
+
+template<typename xpu>
+void NormalizeImpl(const OpContext &ctx,
+                          const std::vector<TBlob> &inputs,
+                          const std::vector<TBlob> &outputs,
+                          const std::vector<OpReqType> &req,
+                          const NormalizeParam &param,
+                          const int length,
+                          const int channel,
+                          const int step = 0) {
+    mshadow::Stream<xpu> *s = ctx.get_stream<xpu>();
+
+    MSHADOW_TYPE_SWITCH(outputs[0].type_flag_, DType, {
+      MXNET_ASSIGN_REQ_SWITCH(req[0], req_type, {
+        DType* input = inputs[0].dptr<DType>();
+        DType* output = outputs[0].dptr<DType>();
+
+        for (int i = 0; i < channel; ++i) {
+            DType mean = param.mean[param.mean.ndim() > 1 ? i : 0];
 
 Review comment:
   It's equvilent but safer

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to