235
235
< div class ="pytorch-left-menu-search ">
236
236
237
237
< div class ="version ">
238
- < a href ='https://pytorch.org/docs/versions.html '> master (1.14.0a0+git81042d3 ) ▼</ a >
238
+ < a href ='https://pytorch.org/docs/versions.html '> master (1.14.0a0+gitc77368d ) ▼</ a >
239
239
</ div >
240
240
241
241
@@ -503,6 +503,9 @@ <h1>Source code for torch._tensor</h1><div class="highlight"><pre>
503
503
504
504
505
505
< span class ="k "> def</ span > < span class ="nf "> _rebuild_from_type_v2</ span > < span class ="p "> (</ span > < span class ="n "> func</ span > < span class ="p "> ,</ span > < span class ="n "> new_type</ span > < span class ="p "> ,</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="n "> state</ span > < span class ="p "> ):</ span >
506
+ < span class ="k "> if</ span > < span class ="n "> new_type</ span > < span class ="ow "> is</ span > < span class ="n "> Tensor</ span > < span class ="p "> :</ span >
507
+ < span class ="k "> return</ span > < span class ="n "> func</ span > < span class ="p "> (</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> )</ span >
508
+
506
509
< span class ="n "> ret</ span > < span class ="o "> =</ span > < span class ="n "> func</ span > < span class ="p "> (</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> )</ span >
507
510
< span class ="k "> if</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="n "> ret</ span > < span class ="p "> )</ span > < span class ="ow "> is</ span > < span class ="ow "> not</ span > < span class ="n "> new_type</ span > < span class ="p "> :</ span >
508
511
< span class ="n "> ret</ span > < span class ="o "> =</ span > < span class ="n "> ret</ span > < span class ="o "> .</ span > < span class ="n "> as_subclass</ span > < span class ="p "> (</ span > < span class ="n "> new_type</ span > < span class ="p "> )</ span >
@@ -515,7 +518,21 @@ <h1>Source code for torch._tensor</h1><div class="highlight"><pre>
515
518
< span class ="p "> ):</ span >
516
519
< span class ="n "> ret</ span > < span class ="o "> .</ span > < span class ="n "> __setstate__</ span > < span class ="p "> (</ span > < span class ="n "> state</ span > < span class ="p "> )</ span >
517
520
< span class ="k "> else</ span > < span class ="p "> :</ span >
518
- < span class ="n "> ret</ span > < span class ="o "> =</ span > < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> _utils</ span > < span class ="o "> .</ span > < span class ="n "> _set_obj_state</ span > < span class ="p "> (</ span > < span class ="n "> ret</ span > < span class ="p "> ,</ span > < span class ="n "> state</ span > < span class ="p "> )</ span >
521
+ < span class ="k "> if</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> state</ span > < span class ="p "> ,</ span > < span class ="nb "> tuple</ span > < span class ="p "> ):</ span >
522
+ < span class ="k "> if</ span > < span class ="ow "> not</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> state</ span > < span class ="p "> )</ span > < span class ="o "> ==</ span > < span class ="mi "> 2</ span > < span class ="p "> :</ span >
523
+ < span class ="k "> raise</ span > < span class ="ne "> RuntimeError</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s2 "> "Invalid serialized state: </ span > < span class ="si "> {</ span > < span class ="n "> state</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span > < span class ="p "> )</ span >
524
+ < span class ="n "> dict_state</ span > < span class ="o "> =</ span > < span class ="n "> state</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ]</ span >
525
+ < span class ="n "> slots_state</ span > < span class ="o "> =</ span > < span class ="n "> state</ span > < span class ="p "> [</ span > < span class ="mi "> 1</ span > < span class ="p "> ]</ span >
526
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
527
+ < span class ="n "> dict_state</ span > < span class ="o "> =</ span > < span class ="n "> state</ span >
528
+ < span class ="n "> slots_state</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span >
529
+
530
+ < span class ="k "> for</ span > < span class ="n "> k</ span > < span class ="p "> ,</ span > < span class ="n "> v</ span > < span class ="ow "> in</ span > < span class ="n "> dict_state</ span > < span class ="o "> .</ span > < span class ="n "> items</ span > < span class ="p "> ():</ span >
531
+ < span class ="nb "> setattr</ span > < span class ="p "> (</ span > < span class ="n "> ret</ span > < span class ="p "> ,</ span > < span class ="n "> k</ span > < span class ="p "> ,</ span > < span class ="n "> v</ span > < span class ="p "> )</ span >
532
+
533
+ < span class ="k "> if</ span > < span class ="n "> slots_state</ span > < span class ="p "> :</ span >
534
+ < span class ="k "> for</ span > < span class ="n "> k</ span > < span class ="p "> ,</ span > < span class ="n "> v</ span > < span class ="ow "> in</ span > < span class ="n "> slots_state</ span > < span class ="o "> .</ span > < span class ="n "> items</ span > < span class ="p "> ():</ span >
535
+ < span class ="nb "> setattr</ span > < span class ="p "> (</ span > < span class ="n "> ret</ span > < span class ="p "> ,</ span > < span class ="n "> k</ span > < span class ="p "> ,</ span > < span class ="n "> v</ span > < span class ="p "> )</ span >
519
536
< span class ="k "> return</ span > < span class ="n "> ret</ span >
520
537
521
538
@@ -652,10 +669,31 @@ <h1>Source code for torch._tensor</h1><div class="highlight"><pre>
652
669
< span class ="k "> return</ span > < span class ="n "> new_tensor</ span >
653
670
654
671
< span class ="k "> def</ span > < span class ="nf "> __reduce_ex__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> proto</ span > < span class ="p "> ):</ span >
672
+ < span class ="k "> if</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> )</ span > < span class ="ow "> is</ span > < span class ="n "> Tensor</ span > < span class ="p "> :</ span >
673
+ < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _reduce_ex_internal</ span > < span class ="p "> (</ span > < span class ="n "> proto</ span > < span class ="p "> )</ span >
655
674
< span class ="k "> if</ span > < span class ="n "> has_torch_function_unary</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ):</ span >
656
675
< span class ="k "> return</ span > < span class ="n "> handle_torch_function</ span > < span class ="p "> (</ span > < span class ="n "> Tensor</ span > < span class ="o "> .</ span > < span class ="n "> __reduce_ex__</ span > < span class ="p "> ,</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,),</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> proto</ span > < span class ="p "> )</ span >
657
676
< span class ="n "> func</ span > < span class ="p "> ,</ span > < span class ="n "> args</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _reduce_ex_internal</ span > < span class ="p "> (</ span > < span class ="n "> proto</ span > < span class ="p "> )</ span >
658
- < span class ="n "> state</ span > < span class ="o "> =</ span > < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> _utils</ span > < span class ="o "> .</ span > < span class ="n "> _get_obj_state</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> )</ span >
677
+ < span class ="c1 "> # Get the state of the python subclass</ span >
678
+ < span class ="c1 "> # This loosely mimicks the function on the object class but since Tensor do not inherit</ span >
679
+ < span class ="c1 "> # from it, we cannot call that function directly</ span >
680
+ < span class ="c1 "> # https://github.com/python/cpython/blob/c83919bd635f4433f1c6ae8504996a9fe3c215e5/Objects/typeobject.c#L4891</ span >
681
+ < span class ="n "> getstate_fn</ span > < span class ="o "> =</ span > < span class ="nb "> getattr</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="s2 "> "__getstate__"</ span > < span class ="p "> ,</ span > < span class ="kc "> None</ span > < span class ="p "> )</ span >
682
+ < span class ="k "> if</ span > < span class ="n "> getstate_fn</ span > < span class ="p "> :</ span >
683
+ < span class ="n "> state</ span > < span class ="o "> =</ span > < span class ="n "> getstate_fn</ span > < span class ="p "> ()</ span >
684
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
685
+ < span class ="n "> slots_to_save</ span > < span class ="o "> =</ span > < span class ="n "> copyreg</ span > < span class ="o "> .</ span > < span class ="n "> _slotnames</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="vm "> __class__</ span > < span class ="p "> )</ span > < span class ="c1 "> # type: ignore[attr-defined]</ span >
686
+ < span class ="k "> if</ span > < span class ="n "> slots_to_save</ span > < span class ="p "> :</ span >
687
+ < span class ="n "> state</ span > < span class ="o "> =</ span > < span class ="p "> (</ span >
688
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="vm "> __dict__</ span > < span class ="p "> ,</ span >
689
+ < span class ="p "> {</ span >
690
+ < span class ="n "> name</ span > < span class ="p "> :</ span > < span class ="nb "> getattr</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> name</ span > < span class ="p "> )</ span >
691
+ < span class ="k "> for</ span > < span class ="n "> name</ span > < span class ="ow "> in</ span > < span class ="n "> slots_to_save</ span >
692
+ < span class ="k "> if</ span > < span class ="nb "> hasattr</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> name</ span > < span class ="p "> )</ span >
693
+ < span class ="p "> },</ span >
694
+ < span class ="p "> )</ span >
695
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
696
+ < span class ="n "> state</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="vm "> __dict__</ span >
659
697
< span class ="k "> return</ span > < span class ="p "> (</ span > < span class ="n "> _rebuild_from_type_v2</ span > < span class ="p "> ,</ span > < span class ="p "> (</ span > < span class ="n "> func</ span > < span class ="p "> ,</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ),</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="n "> state</ span > < span class ="p "> ))</ span >
660
698
661
699
< div class ="viewcode-block " id ="Tensor.storage "> < a class ="viewcode-back " href ="../../generated/torch.Tensor.storage.html#torch.Tensor.storage "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> storage</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ):</ span >
0 commit comments