| 104 | } |
| 105 | |
| 106 | SymbolVar Network::add_elemwise( |
| 107 | const SymbolVarArray inps, DType out_dtype, opr::Elemwise::Param::Mode mode) { |
| 108 | using ElemMode = opr::Elemwise::Param::Mode; |
| 109 | using MultiMode = opr::ElemwiseMultiType::Param::Mode; |
| 110 | static const ThinHashMap<ElemMode, MultiMode> map = { |
| 111 | {ElemMode::ADD, MultiMode::QADD}, |
| 112 | {ElemMode::FUSE_ADD_RELU, MultiMode::QFUSE_ADD_RELU}}; |
| 113 | if (out_dtype.category() == DTypeCategory::QUANTIZED) { |
| 114 | MultiMode alter_mode = map.at(mode); |
| 115 | return opr::ElemwiseMultiType::make( |
| 116 | inps, {alter_mode}, OperatorNodeConfig{out_dtype}); |
| 117 | } else { |
| 118 | return opr::Elemwise::make(inps, mode); |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | SymbolVar Network::add_pooling( |
| 123 | SymbolVar f, Window window, Stride stride, Padding padding, |
no test coverage detected