Hi YiZhi, 1. I will read out the function specs from reflection.
2. Thanks for confirming that "other routes are not possible" -- saves me quite a bit of time searching. --TongKe On Thu, Oct 19, 2017 at 1:25 AM, YiZhi Liu <[email protected]> wrote: > You can retrieve the functions/operators by reflection. Or, when > compiling the scala package, it prints all operators out. > > 2017-10-19 8:15 GMT+00:00 YiZhi Liu <[email protected]>: >> The javadoc cannot be added in this way. I'm afraid we have to write >> another 'javadoc generator' for these operators. >> >> 2017-10-19 7:53 GMT+00:00 TongKe Xue <[email protected]>: >>> 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 >> >> >> >> -- >> Yizhi Liu >> DMLC member >> Technical Manager >> Qihoo 360 Inc, Shanghai, China > > > > -- > Yizhi Liu > DMLC member > Technical Manager > Qihoo 360 Inc, Shanghai, China
