Skip to content

Commit cb04c52

Browse files
Convert computational graph diagrams to Mermaid (#3873)
Fixes #3580 ## Description - corrected requires_grad value for z in computational graph - recreated both computational graph diagrams using Mermaid ## Checklist <!--- Make sure to add `x` to all items in the following checklist: --> - [ ] The issue that is being fixed is referred in the description (see above "Fixes #ISSUE_NUMBER") - [ ] Only one issue is addressed in this pull request - [ ] Labels from the issue that this PR is fixing are added to this pull request - [ ] No unnecessary issues are included into this pull request. --------- Co-authored-by: sekyondaMeta <127536312+sekyondaMeta@users.noreply.github.com>
1 parent 51bdefb commit cb04c52

1 file changed

Lines changed: 40 additions & 10 deletions

File tree

beginner_source/understanding_leaf_vs_nonleaf_tutorial.py

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,26 @@
8787
# \cdots \cdot
8888
# \frac{\partial \mathbf{f}_1}{\partial \mathbf{x}}
8989
#
90-
# .. figure:: /_static/img/understanding_leaf_vs_nonleaf/comp-graph-1.png
91-
# :alt: Computational graph after forward pass
92-
#
93-
# Computational graph after forward pass
94-
#
90+
# .. mermaid::
91+
#
92+
# graph TD
93+
#
94+
# x["x<br/>is_leaf=True<br/>requires_grad=False<br/>retains_grad=False<br/>grad=None"]
95+
# W["W<br/>is_leaf=True<br/>requires_grad=True<br/>retains_grad=False<br/>grad=None"]
96+
# b["b<br/>is_leaf=True<br/>requires_grad=True<br/>retains_grad=False<br/>grad=None"]
97+
# matmul["x @ W"]
98+
# z["z = x @ W + b<br/>is_leaf=False<br/>requires_grad=True<br/>retains_grad=False<br/>grad=None"]
99+
# relu["y_pred = relu(z)<br/>is_leaf=False<br/>requires_grad=True<br/>retains_grad=False<br/>grad=None"]
100+
# y["y<br/>is_leaf=True<br/>requires_grad=False<br/>retains_grad=False<br/>grad=None"]
101+
# loss["loss = mse(y_pred, y)<br/>is_leaf=False<br/>requires_grad=True<br/>retains_grad=False<br/>grad=None"]
102+
#
103+
# x --> matmul
104+
# W --> matmul
105+
# matmul --> z
106+
# b --> z
107+
# z --> relu
108+
# relu --> loss
109+
# y --> loss
95110
# PyTorch considers a node to be a *leaf* if it is not the result of a
96111
# tensor operation with at least one input having ``requires_grad=True``
97112
# (e.g. ``x``, ``W``, ``b``, and ``y``), and everything else to be
@@ -260,11 +275,26 @@
260275
# convention, this attribute will print ``False`` for any leaf node, even
261276
# if it requires its gradient.
262277
#
263-
# .. figure:: /_static/img/understanding_leaf_vs_nonleaf/comp-graph-2.png
264-
# :alt: Computational graph after backward pass
265-
#
266-
# Computational graph after backward pass
267-
#
278+
# .. mermaid::
279+
#
280+
# graph TD
281+
#
282+
# x["x<br/>is_leaf=True<br/>requires_grad=False<br/>retains_grad=False<br/>grad=None"]
283+
# W["W<br/>is_leaf=True<br/>requires_grad=True<br/>retains_grad=False<br/>grad=torch.Tensor"]
284+
# b["b<br/>is_leaf=True<br/>requires_grad=True<br/>retains_grad=False<br/>grad=torch.Tensor"]
285+
# matmul["x @ W"]
286+
# z["z = x @ W + b<br/>is_leaf=False<br/>requires_grad=True<br/>retains_grad=True<br/>grad=torch.Tensor"]
287+
# relu["y_pred = relu(z)<br/>is_leaf=False<br/>requires_grad=True<br/>retains_grad=True<br/>grad=torch.Tensor"]
288+
# y["y<br/>is_leaf=True<br/>requires_grad=True<br/>retains_grad=False<br/>grad=None"]
289+
# loss["loss = mse(y_pred, y)<br/>is_leaf=False<br/>requires_grad=True<br/>retains_grad=True<br/>grad=torch.Tensor"]
290+
#
291+
# x --> matmul
292+
# W --> matmul
293+
# matmul --> z
294+
# b --> z
295+
# z --> relu
296+
# relu --> loss
297+
# y --> loss
268298
# If you call ``retain_grad()`` on a leaf tensor, it results in a no-op
269299
# since leaf tensors already retain their gradients by default (when
270300
# ``requires_grad=True``).

0 commit comments

Comments
 (0)