This is an automated email from the ASF dual-hosted git repository.

jxie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-mxnet.git


The following commit(s) were added to refs/heads/master by this push:
     new bd845aa  Drafted documentation for autograd.  (#7395)
bd845aa is described below

commit bd845aa58c08329192fc142f598d045275f43342
Author: Zack Chase Lipton <zachary.ch...@gmail.com>
AuthorDate: Wed Aug 9 13:07:57 2017 -0700

    Drafted documentation for autograd.  (#7395)
    
    * added autograd documentation
    
    * adding output for snippet
    
    * adding output for snippet
    
    * typo fix
    
    * typo fix
    
    * revised the autograd doc
    
    * typo
    
    * added sentence about autograd.pause():
    
    * typo
    
    * further deflation
    
    * Update autograd.md
---
 docs/api/python/autograd.md | 58 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/docs/api/python/autograd.md b/docs/api/python/autograd.md
index d204a2c..5c84964 100644
--- a/docs/api/python/autograd.md
+++ b/docs/api/python/autograd.md
@@ -9,6 +9,64 @@
 .. warning:: This package is currently experimental and may change in the near 
future.
 ```
 
+## Overview
+
+The `autograd` package enables automatic
+differentiation of NDArray operations.
+In machine learning applications,
+`autograd` is often used to calculate the gradients
+of loss functions with respect to parameters.
+
+
+### Record vs Pause
+
+`autograd` records computation history on the fly to calculate gradients later.
+This is only enabled inside a `with autograd.record():` block.
+A `with auto_grad.pause()` block can be used inside a `record()` block
+to temporarily disable recording.
+
+To compute gradient with respect to an `NDArray` `x`, first call 
`x.attach_grad()`
+to allocate space for the gradient. Then, start a `with autograd.record()` 
block,
+and do some computation. Finally, call `backward()` on the result:
+
+```python
+>>> x = mx.nd.array([1,2,3,4])
+>>> x.attach_grad()
+>>> with mx.autograd.record():
+...     y = x * x + 1
+>>> print(x.grad)
+[ 2.  4.  6.  8.]
+<NDArray 4 @cpu(0)>
+```
+
+
+## Train mode and Predict Mode
+
+Some operators (Dropout, BatchNorm, etc) behave differently in
+when training and when making predictions.
+This can be controled with `train_mode` and `predict_mode` scope.
+
+By default, MXNet is in `predict_mode`.
+A `with autograd.record()` block by default turns on `train_mode`
+(equivalent to ``with autograd.record(train_mode=True)``).
+To compute a gradient in prediction mode (as when generating adversarial 
examples),
+call record with `train_mode=False` and then call `backward(train_mode=False)`
+
+Although training usually coincides with recording,
+this isn't always the case.
+To control *training* vs *predict_mode* without changing
+*recording* vs *not recording*,
+Use a `with autograd.train_mode():`
+or `with autograd.predict_mode():` block.
+
+Detailed tutorials are available in Part 1 of
+[the MXNet gluon book](http://gluon.mxnet.io/).
+
+
+
+
+
+
 <script type="text/javascript" 
src='../../_static/js/auto_module_index.js'></script>
 
 ## Autograd

-- 
To stop receiving notification emails like this one, please contact
['"comm...@mxnet.apache.org" <comm...@mxnet.apache.org>'].

Reply via email to