From 7458af56253db0d24455d2717a6b8ab5fe052b89 Mon Sep 17 00:00:00 2001 From: Pedro Larroy Date: Tue, 28 May 2019 12:31:11 -0700 Subject: [PATCH] simplify implementation of second order gradient for FC --- src/operator/nn/fully_connected.cc | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/operator/nn/fully_connected.cc b/src/operator/nn/fully_connected.cc index 97265b6a2343..582f7dcc8688 100644 --- a/src/operator/nn/fully_connected.cc +++ b/src/operator/nn/fully_connected.cc @@ -176,22 +176,6 @@ struct FullyConnectedGrad { } }; -std::vector FullyConnectedBackwardGrad( - const nnvm::NodePtr& n, - const std::vector& ograds) { - // Note this is not strictly correct but we don't expect inputs to depend on weights at the - // moment. If you find such a case, please contribute a more elaborate implementation. - std::vector ret; - size_t i = 0; - for (const auto& x : n->inputs) { - std::ostringstream os; - os << n->attrs.name << "_backward_" << i; - ret.emplace_back(MakeNode("zeros_like", os.str(), {x}, nullptr, &n)); - ++i; - } - return ret; -} - inline static bool FCStorageType(const nnvm::NodeAttrs& attrs, const int dev_mask, DispatchMode* dispatch_mode, @@ -341,7 +325,7 @@ NNVM_REGISTER_OP(_backward_FullyConnected) .set_attr("FInplaceOption", [](const NodeAttrs& attrs){ return std::vector >{{1, 0}}; }) -.set_attr("FGradient", FullyConnectedBackwardGrad) +.set_attr("FGradient", MakeZeroGradNodes) .set_attr("FInferStorageType", BackwardFCStorageType) .set_attr_parser(ParamParser) #if MXNET_USE_MKLDNN == 1