pprint([name for name in dir(torch.distributions)
if not name.startswith('_')][:20], compact=True)Dive into Deep Learning · §1.7
Using an unfamiliar API
discover · inspect · read · verify.
Motivation
No book covers an entire framework, and libraries change across releases. Four steps answer most routine questions from within a notebook: discover available names, inspect the interface, read the documentation, and verify the behavior with a small example.
Use the official reference and tutorial pages for the supported interface.
Discover
Know roughly where a tool should live, but not its name? dir lists a module’s contents; the names alone sketch what is on offer:
['AbsTransform', 'AffineTransform', 'Bernoulli', 'Beta', 'Binomial',
'CatTransform', 'Categorical', 'Cauchy', 'Chi2', 'ComposeTransform',
'ContinuousBernoulli', 'CorrCholeskyTransform',
'CumulativeDistributionTransform', 'Dirichlet', 'Distribution', 'ExpTransform',
'Exponential', 'ExponentialFamily', 'FisherSnedecor', 'Gamma']
Skip the _-prefixed internals. In a notebook, module. + Tab gives the same list, filtered as you type, usually the fastest way to turn up a name.
Inspect · read
help(...) prints the docstring: arguments, defaults, return value, often an example.
In Jupyter, ones? opens the docstring in a side pane, and ones?? shows the source code, which can clarify a terse or ambiguous docstring.
Verify
Docstrings can drift out of date; verify the current behavior with a small call:
tensor([1., 1., 1., 1.])
The result has the documented shape and values. The discover → inspect → read → verify loop remains useful as APIs change.
Assistants
An assistant may produce a plausible function and call. Treat the suggestion as a candidate to check before building on it.
Glance at the signature (help / ?), then run a small example. A suggestion that survives both is one you can rely on.
Wrap-up
dir (or Tab-completion).help / ?; read the source with ??.