Skip to content

Commit

Permalink
Add API documentation for upsampling operator with examples (apache#1…
Browse files Browse the repository at this point in the history
…4919)

* Add API documentation for upsampling operator with examples

* Update src/operator/nn/upsampling.cc

Co-Authored-By: Aaron Markham <[email protected]>

* Update src/operator/nn/upsampling.cc

Co-Authored-By: Aaron Markham <[email protected]>

* Update src/operator/nn/upsampling.cc

Co-Authored-By: Aaron Markham <[email protected]>

* Make API doc example as pseudocode than code
  • Loading branch information
sandeep-krishnamurthy authored and haohuw committed Jun 23, 2019
1 parent dc20ae7 commit 768c4a8
Showing 1 changed file with 50 additions and 3 deletions.
53 changes: 50 additions & 3 deletions src/operator/nn/upsampling.cc
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,56 @@ struct UpSamplingGrad {
DMLC_REGISTER_PARAMETER(UpSamplingParam);

NNVM_REGISTER_OP(UpSampling)
.describe("Performs nearest neighbor/bilinear up sampling to inputs. "
"Bilinear upsampling makes use of deconvolution. Therefore, "
"provide 2 inputs - data and weight. ")
.describe(R"code(Upsamples the given input data.
Two algorithms (``sample_type``) are available for upsampling:
- Nearest Neighbor
- Bilinear
**Nearest Neighbor Upsampling**
Input data is expected to be NCHW.
Example::
x = [[[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]]]
UpSampling(x, scale=2, sample_type='nearest') = [[[[1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1.]]]]
**Bilinear Upsampling**
Uses `deconvolution` algorithm under the hood. You need provide both input data and the kernel.
Input data is expected to be NCHW.
`num_filter` is expected to be same as the number of channels.
Example::
x = [[[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]]]
w = [[[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]]
UpSampling(x, w, scale=2, sample_type='bilinear', num_filter=1) = [[[[1. 2. 2. 2. 2. 1.]
[2. 4. 4. 4. 4. 2.]
[2. 4. 4. 4. 4. 2.]
[2. 4. 4. 4. 4. 2.]
[2. 4. 4. 4. 4. 2.]
[1. 2. 2. 2. 2. 1.]]]]
)code" ADD_FILELINE)
.set_num_inputs([](const NodeAttrs& attrs) {
const UpSamplingParam& params = nnvm::get<UpSamplingParam>(attrs.parsed);
return params.sample_type == up_enum::kNearest ? params.num_args : 2;
Expand Down

0 comments on commit 768c4a8

Please sign in to comment.