mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 12:21:27 +01:00
Fixes #112594 docstring updated. Here are the output to with the number before and after. 1) torch/autograd/forward_ad.py Before : ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:23 in public function `enter_dual_level`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:23 in public function `enter_dual_level`: D401: First line should be in imperative mood; try rephrasing (found 'Function') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:42 in public function `exit_dual_level`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:42 in public function `exit_dual_level`: D401: First line should be in imperative mood; try rephrasing (found 'Function') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:62 in public function `make_dual`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:62 in public function `make_dual`: D400: First line should end with a period (not 'a') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:128 in public class `UnpackedDualTensor`: D204: 1 blank line required after class docstring (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:128 in public class `UnpackedDualTensor`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:128 in public class `UnpackedDualTensor`: D209: Multi-line docstring closing quotes should be on a separate line /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:134 in public function `unpack_dual`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:165 in public class `dual_level`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:165 in public class `dual_level`: D400: First line should end with a period (not 't') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:199 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:202 in public method `__exit__`: D105: Missing docstring in magic method 15 ``` After: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:205 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/forward_ad.py:208 in public method `__exit__`: D105: Missing docstring in magic method 3 ``` 2) torch/autograd/functional.py Before: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:262 in public function `vjp`: D202: No blank lines allowed after function docstring (found 1) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:262 in public function `vjp`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:262 in public function `vjp`: D400: First line should end with a period (not 'e') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:262 in public function `vjp`: D401: First line should be in imperative mood; try rephrasing (found 'Function') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:359 in public function `jvp`: D202: No blank lines allowed after function docstring (found 1) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:359 in public function `jvp`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:359 in public function `jvp`: D400: First line should end with a period (not 'f') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:359 in public function `jvp`: D401: First line should be in imperative mood; try rephrasing (found 'Function') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:584 in public function `jacobian`: D401: First line should be in imperative mood; try rephrasing (found 'Function') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:841 in public function `hessian`: D202: No blank lines allowed after function docstring (found 1) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:841 in public function `hessian`: D401: First line should be in imperative mood; try rephrasing (found 'Function') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:973 in public function `vhp`: D202: No blank lines allowed after function docstring (found 1) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:973 in public function `vhp`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:973 in public function `vhp`: D400: First line should end with a period (not 'e') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:973 in public function `vhp`: D401: First line should be in imperative mood; try rephrasing (found 'Function') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:1076 in public function `hvp`: D202: No blank lines allowed after function docstring (found 1) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:1076 in public function `hvp`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:1076 in public function `hvp`: D400: First line should end with a period (not 'r') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:1076 in public function `hvp`: D401: First line should be in imperative mood; try rephrasing (found 'Function') 20 ``` After: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/functional.py:1 at module level: D100: Missing docstring in public module 1 ``` 3) torch/autograd/profiler_legacy.py Before: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:27 in public class `profile`: D400: First line should end with a period (not 'd') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:29 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:62 in public method `config`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:74 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:86 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:103 in public method `__repr__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:108 in public method `__str__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:117 in public method `table`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:141 in public method `export_chrome_trace`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:148 in public method `export_stacks`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:154 in public method `key_averages`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:161 in public method `total_average`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:170 in public method `self_cpu_time_total`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:170 in public method `self_cpu_time_total`: D400: First line should end with a period (not 'f') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:180 in private nested function `_get_record_key`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:180 in private nested function `_get_record_key`: D400: First line should end with a period (not 'd') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:180 in private nested function `_get_record_key`: D401: First line should be in imperative mood (perhaps 'Return', not 'Returns') 18 ``` After: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:29 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:62 in public method `config`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:74 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:86 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:103 in public method `__repr__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:108 in public method `__str__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:117 in public method `table`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:141 in public method `export_chrome_trace`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:148 in public method `export_stacks`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:154 in public method `key_averages`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_legacy.py:161 in public method `total_average`: D102: Missing docstring in public method 12 ``` 4) torch/autograd/gradcheck.py Before: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:27 in public class `GradcheckError`: D204: 1 blank line required after class docstring (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:27 in public class `GradcheckError`: D400: First line should end with a period (not '`') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:258 in private function `_get_numerical_jacobian`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:258 in private function `_get_numerical_jacobian`: D400: First line should end with a period (not 'f') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:258 in private function `_get_numerical_jacobian`: D401: First line should be in imperative mood (perhaps 'Compute', not 'Computes') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:308 in public function `get_numerical_jacobian`: D401: First line should be in imperative mood; try rephrasing (found 'Deprecated') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:459 in public function `get_numerical_jacobian_wrt_specific_input`: D103: Missing docstring in public function /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:488 in private function `_get_analytical_jacobian_forward_ad`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:488 in private function `_get_analytical_jacobian_forward_ad`: D400: First line should end with a period (not 't') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:488 in private function `_get_analytical_jacobian_forward_ad`: D401: First line should be in imperative mood (perhaps 'Compute', not 'Computes') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:816 in public function `get_analytical_jacobian`: D103: Missing docstring in public function /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:1944 in public function `gradcheck`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:1944 in public function `gradcheck`: D400: First line should end with a period (not 'l') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:2133 in public function `gradgradcheck`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:2133 in public function `gradgradcheck`: D400: First line should end with a period (not 's') 16 ``` After: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:463 in public function `get_numerical_jacobian_wrt_specific_input`: D103: Missing docstring in public function /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/gradcheck.py:820 in public function `get_analytical_jacobian`: D103: Missing docstring in public function 3 ``` 5) torch/autograd/function.py Before: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:27 in public class `FunctionCtx`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:29 in public method `save_for_backward`: D401: First line should be in imperative mood (perhaps 'Save', not 'Saves') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:88 in public method `save_for_forward`: D401: First line should be in imperative mood (perhaps 'Save', not 'Saves') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:141 in public method `mark_dirty`: D401: First line should be in imperative mood (perhaps 'Mark', not 'Marks') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:177 in public method `mark_shared_storage`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:185 in public method `mark_non_differentiable`: D401: First line should be in imperative mood (perhaps 'Mark', not 'Marks') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:217 in public method `set_materialize_grads`: D401: First line should be in imperative mood (perhaps 'Set', not 'Sets') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:276 in public class `BackwardCFunction`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:277 in public method `apply`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:291 in public method `apply_jvp`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:308 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:322 in private method `forward`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:322 in private method `forward`: D400: First line should end with a period (not 's') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:322 in private method `forward`: D401: First line should be in imperative mood; try rephrasing (found 'This') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:384 in private method `backward`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:384 in private method `backward`: D400: First line should end with a period (not 'e') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:384 in private method `backward`: D401: First line should be in imperative mood (perhaps 'Define', not 'Defines') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:416 in private method `jvp`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:416 in private method `jvp`: D400: First line should end with a period (not 'e') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:416 in private method `jvp`: D401: First line should be in imperative mood (perhaps 'Define', not 'Defines') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:439 in public class `Function`: D400: First line should end with a period (not '`') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:472 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:482 in public method `__call__`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:505 in public method `vmap`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:505 in public method `vmap`: D400: First line should end with a period (not 'h') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:505 in public method `vmap`: D401: First line should be in imperative mood (perhaps 'Define', not 'Defines') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:536 in public method `apply`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:564 in public function `once_differentiable`: D103: Missing docstring in public function /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:612 in public function `traceable`: D401: First line should be in imperative mood (perhaps 'Mark', not 'Marks') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:626 in public class `InplaceFunction`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:627 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:741 in public class `NestedIOFunction`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:761 in public method `backward`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:768 in public method `forward`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:775 in public method `save_for_backward`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:780 in public method `saved_tensors`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:784 in public method `mark_dirty`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:787 in public method `mark_non_differentiable`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:790 in public method `forward_extended`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:793 in public method `backward_extended`: D102: Missing docstring in public method 41 ``` After: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:27 in public class `FunctionCtx`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:177 in public method `mark_shared_storage`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:276 in public class `BackwardCFunction`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:277 in public method `apply`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:291 in public method `apply_jvp`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:308 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:471 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:481 in public method `__call__`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:536 in public method `apply`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:564 in public function `once_differentiable`: D103: Missing docstring in public function /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:626 in public class `InplaceFunction`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:627 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:741 in public class `NestedIOFunction`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:761 in public method `backward`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:768 in public method `forward`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:775 in public method `save_for_backward`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:780 in public method `saved_tensors`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:784 in public method `mark_dirty`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:787 in public method `mark_non_differentiable`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:790 in public method `forward_extended`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/function.py:793 in public method `backward_extended`: D102: Missing docstring in public method 22 ``` 6) torch/autograd/profiler_util.py Before: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:26 in public class `EventList`: D400: First line should end with a period (not ')') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:28 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:46 in public method `__str__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:70 in private method `_populate_cpu_children`: D202: No blank lines allowed after function docstring (found 1) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:70 in private method `_populate_cpu_children`: D205: 1 blank line required between summary line and description (found 0) /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:70 in private method `_populate_cpu_children`: D401: First line should be in imperative mood (perhaps 'Populate', not 'Populates') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:166 in public method `self_cpu_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:179 in public method `table`: D401: First line should be in imperative mood (perhaps 'Print', not 'Prints') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:210 in public method `export_chrome_trace`: D401: First line should be in imperative mood (perhaps 'Export', not 'Exports') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:266 in public method `supported_export_stacks_metrics`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:273 in public method `export_stacks`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:354 in private function `_format_time`: D400: First line should end with a period (not 't') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:354 in private function `_format_time`: D401: First line should be in imperative mood (perhaps 'Define', not 'Defines') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:365 in private function `_format_time_share`: D400: First line should end with a period (not 't') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:365 in private function `_format_time_share`: D401: First line should be in imperative mood (perhaps 'Define', not 'Defines') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:373 in private function `_format_memory`: D400: First line should end with a period (not 'g') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:373 in private function `_format_memory`: D401: First line should be in imperative mood (perhaps 'Return', not 'Returns') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:408 in public method `cpu_time`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:412 in public method `cuda_time`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:416 in public method `privateuse1_time`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:420 in public class `Interval`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:421 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:425 in public method `elapsed_us`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:435 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:488 in public method `append_kernel`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:504 in public method `set_cpu_parent`: D400: First line should end with a period (not 't') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:518 in public method `self_cpu_memory_usage`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:526 in public method `self_cuda_memory_usage`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:534 in public method `self_privateuse1_memory_usage`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:542 in public method `self_cpu_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:550 in public method `cuda_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:567 in public method `self_cuda_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:579 in public method `cpu_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:586 in public method `self_privateuse1_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:598 in public method `privateuse1_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:615 in public method `key`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:618 in public method `__repr__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:659 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:687 in public method `add`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:726 in public method `__iadd__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:729 in public method `__repr__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:763 in public class `StringTable`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:764 in public method `__missing__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:773 in public class `MemRecordsAcc`: D400: First line should end with a period (not 'l') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:775 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:783 in public method `in_interval`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:846 in private function `_build_table`: D401: First line should be in imperative mood (perhaps 'Print', not 'Prints') 48 ``` After : ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:28 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:46 in public method `__str__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:166 in public method `self_cpu_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:266 in public method `supported_export_stacks_metrics`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:273 in public method `export_stacks`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:408 in public method `cpu_time`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:412 in public method `cuda_time`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:416 in public method `privateuse1_time`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:420 in public class `Interval`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:421 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:425 in public method `elapsed_us`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:435 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:488 in public method `append_kernel`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:518 in public method `self_cpu_memory_usage`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:526 in public method `self_cuda_memory_usage`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:534 in public method `self_privateuse1_memory_usage`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:542 in public method `self_cpu_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:550 in public method `cuda_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:567 in public method `self_cuda_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:579 in public method `cpu_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:586 in public method `self_privateuse1_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:598 in public method `privateuse1_time_total`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:615 in public method `key`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:618 in public method `__repr__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:659 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:687 in public method `add`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:726 in public method `__iadd__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:729 in public method `__repr__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:763 in public class `StringTable`: D101: Missing docstring in public class /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:764 in public method `__missing__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:775 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/profiler_util.py:783 in public method `in_interval`: D102: Missing docstring in public method 33 ``` 7) torch/autograd/grad_mode.py Before: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:73 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:78 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:82 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:133 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:137 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:182 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:187 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:190 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:193 in public method `clone`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:198 in public class `inference_mode`: D400: First line should end with a period (not 'e') /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:250 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:257 in public method `__new__`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:262 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:266 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:269 in public method `clone`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:301 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:306 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:309 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:312 in public method `clone`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:354 in private class `_unsafe_preserve_version_counter`: D400: First line should end with a period (not '!') 21 ``` After: ``` /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:1 at module level: D100: Missing docstring in public module /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:73 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:78 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:82 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:133 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:137 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:182 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:187 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:190 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:193 in public method `clone`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:250 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:257 in public method `__new__`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:262 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:266 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:269 in public method `clone`: D102: Missing docstring in public method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:301 in public method `__init__`: D107: Missing docstring in __init__ /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:306 in public method `__enter__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:309 in public method `__exit__`: D105: Missing docstring in magic method /home/ubuntu/Desktop/Docathon/pytorch/torch/autograd/grad_mode.py:312 in public method `clone`: D102: Missing docstring in public method 19 ``` @svekars @kit1980 @subramen Pull Request resolved: https://github.com/pytorch/pytorch/pull/113266 Approved by: https://github.com/aaronenyeshi, https://github.com/soulitzer, https://github.com/kit1980
228 lines
7.4 KiB
Python
228 lines
7.4 KiB
Python
import os
|
|
from collections import namedtuple
|
|
|
|
from typing import Any
|
|
|
|
import torch
|
|
from .grad_mode import _DecoratorContextManager
|
|
|
|
__all__ = [
|
|
"UnpackedDualTensor",
|
|
"enter_dual_level",
|
|
"exit_dual_level",
|
|
"make_dual",
|
|
"unpack_dual",
|
|
"dual_level",
|
|
]
|
|
|
|
# Global variable used to make the python API simpler to use
|
|
_current_level = -1
|
|
|
|
|
|
def enter_dual_level():
|
|
r"""Enter a new forward grad level.
|
|
|
|
This level can be used to make and unpack dual Tensors to compute
|
|
forward gradients.
|
|
|
|
This function also updates the current level that is used by default
|
|
by the other functions in this API.
|
|
"""
|
|
global _current_level
|
|
new_level = torch._C._enter_dual_level()
|
|
if new_level != _current_level + 1:
|
|
raise RuntimeError(
|
|
"Entering a new forward AD level but the current level "
|
|
"is not valid. Make sure you did not modified it directly."
|
|
)
|
|
_current_level = new_level
|
|
return new_level
|
|
|
|
|
|
def exit_dual_level(*, level=None):
|
|
r"""Exit a forward grad level.
|
|
|
|
This function deletes all the gradients associated with this
|
|
level. Only deleting the latest entered level is allowed.
|
|
|
|
This function also updates the current level that is used by default
|
|
by the other functions in this API.
|
|
"""
|
|
global _current_level
|
|
if level is None:
|
|
level = _current_level
|
|
if level != _current_level:
|
|
raise RuntimeError(
|
|
"Trying to exit a forward AD level that was not the last one "
|
|
"that was created. This is not supported."
|
|
)
|
|
torch._C._exit_dual_level(level=level)
|
|
_current_level = level - 1
|
|
|
|
|
|
def make_dual(tensor, tangent, *, level=None):
|
|
r"""Associate a tensor value with its tangent to create a "dual tensor" for forward AD gradient computation.
|
|
|
|
The result is a new tensor aliased to :attr:`tensor` with :attr:`tangent` embedded
|
|
as an attribute as-is if it has the same storage layout or copied otherwise.
|
|
The tangent attribute can be recovered with :func:`unpack_dual`.
|
|
|
|
This function is backward differentiable.
|
|
|
|
Given a function `f` whose jacobian is `J`, it allows one to compute the Jacobian-vector product (`jvp`)
|
|
between `J` and a given vector `v` as follows.
|
|
|
|
Example::
|
|
|
|
>>> # xdoctest: +SKIP("Undefined variables")
|
|
>>> with dual_level():
|
|
... inp = make_dual(x, v)
|
|
... out = f(inp)
|
|
... y, jvp = unpack_dual(out)
|
|
|
|
Please see the `forward-mode AD tutorial <https://pytorch.org/tutorials/intermediate/forward_ad_usage.html>`__
|
|
for detailed steps on how to use this API.
|
|
|
|
"""
|
|
# See NOTE: [forward-mode AD decompositions mechanism]
|
|
#
|
|
# Import from torch._decomp import decompositions_for_jvp to register
|
|
# decompositions for jvp to the jit registry
|
|
#
|
|
# FIXME: We specify that __debug__ must be True because
|
|
# if python is run with -OO or -O flags (i.e., __debug__ is False), we encounter the
|
|
# following error:
|
|
#
|
|
# Return value was annotated as having type Tuple[NoneType, NoneType] but is actually of
|
|
# type Tuple[Tensor, Tensor]:
|
|
# File ".../torch/_decomp/__init__.py", line 1585
|
|
# else:
|
|
# buffer = z
|
|
# return min - torch.log1p(z), buffer
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <--- HERE
|
|
if os.environ.get("PYTORCH_JIT", "1") == "1" and __debug__:
|
|
from torch._decomp import decompositions_for_jvp # noqa: F401
|
|
|
|
if level is None:
|
|
level = _current_level
|
|
|
|
if level < 0:
|
|
raise RuntimeError(
|
|
"Trying to create a dual Tensor for forward AD but no level "
|
|
"exists, make sure to enter_dual_level() first."
|
|
)
|
|
if not (tensor.is_floating_point() or tensor.is_complex()):
|
|
raise ValueError(
|
|
f"Expected primal to be floating point or complex, but got: {tensor.dtype}"
|
|
)
|
|
if not (tangent.is_floating_point() or tangent.is_complex()):
|
|
raise ValueError(
|
|
f"Expected tangent to be floating point or complex, but got: {tangent.dtype}"
|
|
)
|
|
|
|
return torch._VF._make_dual(tensor, tangent, level=level)
|
|
|
|
|
|
_UnpackedDualTensor = namedtuple("_UnpackedDualTensor", ["primal", "tangent"])
|
|
|
|
|
|
class UnpackedDualTensor(_UnpackedDualTensor):
|
|
r"""Namedtuple returned by :func:`unpack_dual` containing the primal and tangent components of the dual tensor.
|
|
|
|
See :func:`unpack_dual` for more details.
|
|
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
def unpack_dual(tensor, *, level=None):
|
|
r"""Unpack a "dual tensor" to get both its Tensor value and its forward AD gradient.
|
|
|
|
The result is a namedtuple ``(primal, tangent)`` where ``primal`` is a view of
|
|
:attr:`tensor`'s primal and ``tangent`` is :attr:`tensor`'s tangent as-is.
|
|
Neither of these tensors can be dual tensor of level :attr:`level`.
|
|
|
|
This function is backward differentiable.
|
|
|
|
Example::
|
|
|
|
>>> # xdoctest: +SKIP("Undefined variables")
|
|
>>> with dual_level():
|
|
... inp = make_dual(x, x_t)
|
|
... out = f(inp)
|
|
... y, jvp = unpack_dual(out)
|
|
... jvp = unpack_dual(out).tangent
|
|
|
|
Please see the `forward-mode AD tutorial <https://pytorch.org/tutorials/intermediate/forward_ad_usage.html>`__
|
|
for detailed steps on how to use this API.
|
|
"""
|
|
if level is None:
|
|
level = _current_level
|
|
|
|
if level < 0:
|
|
return UnpackedDualTensor(tensor, None)
|
|
|
|
primal, dual = torch._VF._unpack_dual(tensor, level=level)
|
|
|
|
return UnpackedDualTensor(primal, dual)
|
|
|
|
|
|
class dual_level(_DecoratorContextManager):
|
|
r"""Context-manager for forward AD, where all forward AD computation must occur within the ``dual_level`` context.
|
|
|
|
.. Note::
|
|
|
|
The ``dual_level`` context appropriately enters and exit the dual level to
|
|
controls the current forward AD level, which is used by default by the other
|
|
functions in this API.
|
|
|
|
We currently don't plan to support nested ``dual_level`` contexts, however, so
|
|
only a single forward AD level is supported. To compute higher-order
|
|
forward grads, one can use :func:`torch.func.jvp`.
|
|
|
|
Example::
|
|
|
|
>>> # xdoctest: +SKIP("Undefined variables")
|
|
>>> x = torch.tensor([1])
|
|
>>> x_t = torch.tensor([1])
|
|
>>> with dual_level():
|
|
... inp = make_dual(x, x_t)
|
|
... # Do computations with inp
|
|
... out = your_fn(inp)
|
|
... _, grad = unpack_dual(out)
|
|
>>> grad is None
|
|
False
|
|
>>> # After exiting the level, the grad is deleted
|
|
>>> _, grad_after = unpack_dual(out)
|
|
>>> grad is None
|
|
True
|
|
|
|
Please see the `forward-mode AD tutorial <https://pytorch.org/tutorials/intermediate/forward_ad_usage.html>`__
|
|
for detailed steps on how to use this API.
|
|
"""
|
|
|
|
def __enter__(self):
|
|
return enter_dual_level()
|
|
|
|
def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:
|
|
exit_dual_level()
|
|
|
|
|
|
# Private helper functions
|
|
_is_fwd_grad_enabled = torch._C._is_fwd_grad_enabled
|
|
|
|
|
|
# Private helper function to enable or disable fwd grad.
|
|
# If you're a user and want to use this, please file an issue to discuss the use case.
|
|
class _set_fwd_grad_enabled(_DecoratorContextManager):
|
|
def __init__(self, mode: bool) -> None:
|
|
self.prev = _is_fwd_grad_enabled()
|
|
torch._C._set_fwd_grad_enabled(mode)
|
|
|
|
def __enter__(self) -> None:
|
|
pass
|
|
|
|
def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:
|
|
torch._C._set_fwd_grad_enabled(self.prev)
|