| 1672 | } |
| 1673 | |
| 1674 | VARP _GridSample(VARP input, VARP grid, InterpolationMethod mode, GridSamplePaddingMode paddingMode, bool alignCorners) { |
| 1675 | std::unique_ptr<OpT> op(new OpT); |
| 1676 | op->type = OpType_GridSample; |
| 1677 | op->main.type = OpParameter_GridSample; |
| 1678 | op->main.value = new GridSampleT; |
| 1679 | switch (mode) { |
| 1680 | case NEAREST: |
| 1681 | op->main.AsGridSample()->mode = SampleMode_NEAREST; |
| 1682 | break; |
| 1683 | case BILINEAR: |
| 1684 | default: |
| 1685 | op->main.AsGridSample()->mode = SampleMode_BILINEAR; |
| 1686 | break; |
| 1687 | } |
| 1688 | switch (paddingMode) { |
| 1689 | case GRID_SAMPLE_PADDING_BORDER: |
| 1690 | op->main.AsGridSample()->paddingMode = BorderMode_CLAMP; |
| 1691 | break; |
| 1692 | case GRID_SAMPLE_PADDING_REFLECTION: |
| 1693 | op->main.AsGridSample()->paddingMode = BorderMode_REFLECTION; |
| 1694 | break; |
| 1695 | case GRID_SAMPLE_PADDING_ZEROS: |
| 1696 | default: |
| 1697 | op->main.AsGridSample()->paddingMode = BorderMode_ZEROS; |
| 1698 | break; |
| 1699 | } |
| 1700 | op->main.AsGridSample()->alignCorners = alignCorners; |
| 1701 | return (Variable::create(Expr::create(std::move(op), {input, grid}))); |
| 1702 | } |
| 1703 | |
| 1704 | VARP _FloatToInt8(VARP x, VARP scale, char minValue/*For future*/, char maxValue/*For future*/) { |
| 1705 | auto scaleInfo = scale->getInfo(); |