mxnet-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From TongKe Xue <tk...@tkxue.org>
Subject Re: mxnet Scala Convolution
Date Thu, 19 Oct 2017 00:40:28 GMT
Hi Rahul,

  Thanks for explaining the high level design + pointing to the
implementation details.

  Besides reading the C++ code and mentally translating the Scala
calls, is there a way to get a list of all generated Scala functions?

  I have looked at:

1. https://mxnet.incubator.apache.org/api/scala/symbol.html
shows a few examples, but is not exhaustive

2. https://mxnet.incubator.apache.org/api/scala/docs/index.html#ml.dmlc.mxnet.Symbol
appears more comprehensive, but I find neither Convolution nor Softmax there.


More specifically, my question is: nnvm adds a bunch of Scala bindings
to C++ code. How do I get a list of all these bindings (name, type of
inputs, type of output).


Thanks!
--TongKe


On Wed, Oct 18, 2017 at 5:28 PM, Rahul Huilgol <rahulhuilgol@gmail.com> wrote:
> Hi TongKe,
>
> These are operators defined in the c++ backend under src/operator. For
> example convolution is here
> https://github.com/apache/incubator-mxnet/blob/master/src/operator/convolution.cc
> . The operators are registered using nnvm, which helps automatically
> generate the frontend functions.
>
> This tutorial on how to add a backend operator
> <https://github.com/apache/incubator-mxnet/blob/master/docs/how_to/add_op_in_backend.md>
> contains information on how to register such operators, which would help
> you understand the above file.
> An excerpt from there (for quadratic operator) : "If you use python, when
> you type import mxnet as mx, two python functions for invoking your backend
> implementation are generated on the fly: one is for imperative programming
> registered as mxnet.ndarray.quadratic or mx.nd.quadratic for short; the
> other one is for symbolic programming registered under module
> mxnet.symbol.quadratic or mx.sym.quadratic for short."
>
> I'd think the Scala package works similarly.
>
> Regards,
> Rahul
>
>
>
>
> On Wed, Oct 18, 2017 at 5:06 PM, TongKe Xue <tkxue@tkxue.org> wrote:
>
>> My earlier question was a bit messy.
>>
>> To rephrase my question:
>>
>> 1. Scala AlexNet sample code calls Symbol.Convolution:
>>
>> https://github.com/apache/incubator-mxnet/blob/master/
>> scala-package/examples/src/main/scala/ml/dmlc/mxnetexamples/visualization/
>> AlexNet.scala#L30
>>
>> 2. Symbol.scala does not contain the string "Convolution"
>>
>> https://github.com/apache/incubator-mxnet/blob/master/
>> scala-package/core/src/main/scala/ml/dmlc/mxnet/Symbol.scala#L982
>>
>> Question: where/how is Symbol.Convolution defined?
>>
>> On Wed, Oct 18, 2017 at 4:10 PM, TongKe Xue <tkxue@tkxue.org> wrote:
>> > Hi,
>> >
>> > I am reading: https://mxnet.incubator.apache.org/api/scala/symbol.html
>> >
>> > I see Symbol.Variable, Symbol.Convolution
>> >
>> > When I look at Symbol.scala, I see Symbol.Variable at:
>> > https://github.com/apache/incubator-mxnet/blob/master/
>> scala-package/core/src/main/scala/ml/dmlc/mxnet/Symbol.scala#L982
>> >
>> > However, I can't find where Convolution, SoftMax, FullyConnected, ...
>> > are defined.
>> >
>> > Where are these Symbols defined?
>> >
>> > (I have also tried: grep "Convolution" . -R | grep scala | grep def --
>> > but found nothing).
>> >
>> > Thanks,
>> > --TongKe
>>
>
>
>
> --
> Rahul Huilgol

Mime
View raw message