HI YiZhi,
1. I looked at: scala-package/macros/src/main/scala/ml/dmlc/mxnet/SymbolMacro.scala scala-package/macros/src/main/scala/ml/dmlc/mxnet/NDArrayMacro.scala These files appear to dynamically register nnvm functions into NDArray/Symbol right? I would like the "javadocs" of the dynamically added functions. 2. I looked at mxnet-macros_2.11-0.11.0-SNAPSHOT-javadoc.jar That jar looks mostly empty. Is that expected, or am I doing something wrong? 3. Currently, the best way I know for retrieving all the functions is to fire up a repl and run reflection. Is there a better method? Thanks, --TongKe On Wed, Oct 18, 2017 at 8:59 PM, YiZhi Liu <[email protected]> wrote: > Hi TongKe, > > The symbols you are looking for are auto-generated by scala macros. > Pls refer to scala-package/macros > > 2017-10-19 0:40 GMT+00:00 TongKe Xue <[email protected]>: >> 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 <[email protected]> >> 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 <[email protected]> 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 <[email protected]> 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 > > > > -- > Yizhi Liu > DMLC member > Technical Manager > Qihoo 360 Inc, Shanghai, China
