// // BatchNormTorch.cpp // MNNConverter // // Created by MNN on 2021/05/10. // Copyright © 2018, Alibaba Group Holding Limited // #include #include "torchOpConverter.hpp" DECLARE_OP_CONVERTER(BatchNormTorch); MNN::OpType BatchNormTorch::opType() { return MNN::OpType_BatchNorm; } MNN::OpParameter BatchNormTorch::type() { return MNN::OpParameter_BatchNorm; } std::vector BatchNormTorch::inputTensorIdx() { return {0}; } void BatchNormTorch::run(MNN::OpT* dstOp, const torch::jit::Node* node, TorchScope* scope) { auto param = new MNN::BatchNormT; const auto& inputs = node->inputs(); const auto slope = inputs[1]; const auto bias = inputs[2]; const auto mean = inputs[3]; const auto var = inputs[4]; const auto epsilon = inputs[7]; std::vector shape; param->slopeData = getValue(slope, shape); param->channels = shape[0]; param->biasData = getValue(bias, shape); param->meanData = getValue(mean, shape); param->varData = getValue(var, shape); param->epsilon = getValue(epsilon); param->Adata = std::vector(param->channels, 0.f); param->Bdata = std::vector(param->channels, 0.f); dstOp->main.value = param; } REGISTER_CONVERTER(BatchNormTorch, batch_norm);