sandeep-krishnamurthy 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_r251134828
########## 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 ¶m, + 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]; + DType std_dev = param.std[param.std.ndim() > 1 ? i : 0]; Review comment: same as above ---------------------------------------------------------------- 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