219
219
< div class ="pytorch-left-menu-search ">
220
220
221
221
< div class ="version ">
222
- < a href ='https://pytorch.org/docs/versions.html '> master (1.13.0a0+git2fb2740 ) ▼</ a >
222
+ < a href ='https://pytorch.org/docs/versions.html '> master (1.13.0a0+git521d5ae ) ▼</ a >
223
223
</ div >
224
224
225
225
@@ -473,6 +473,9 @@ <h1>Source code for torch._tensor</h1><div class="highlight"><pre>
473
473
< span class ="k "> return</ span > < span class ="n "> ret</ span >
474
474
475
475
< 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 >
476
+ < 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 >
477
+ < 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 >
478
+
476
479
< 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 >
477
480
< 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 >
478
481
< 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 >
@@ -482,7 +485,21 @@ <h1>Source code for torch._tensor</h1><div class="highlight"><pre>
482
485
< span class ="k "> if</ span > < span class ="nb "> getattr</ span > < span class ="p "> (</ span > < span class ="n "> ret</ span > < span class ="o "> .</ span > < span class ="vm "> __class__</ span > < span class ="p "> ,</ span > < span class ="s2 "> "__setstate__"</ span > < span class ="p "> ,</ span > < span class ="n "> Tensor</ span > < span class ="o "> .</ span > < span class ="n "> __setstate__</ span > < span class ="p "> )</ span > < span class ="ow "> is</ span > < span class ="ow "> not</ span > < span class ="n "> Tensor</ span > < span class ="o "> .</ span > < span class ="n "> __setstate__</ span > < span class ="p "> :</ span >
483
486
< 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 >
484
487
< span class ="k "> else</ span > < span class ="p "> :</ span >
485
- < 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 >
488
+ < 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 >
489
+ < 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 >
490
+ < 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 >
491
+ < 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 >
492
+ < 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 >
493
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
494
+ < span class ="n "> dict_state</ span > < span class ="o "> =</ span > < span class ="n "> state</ span >
495
+ < span class ="n "> slots_state</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span >
496
+
497
+ < 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 >
498
+ < 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 >
499
+
500
+ < span class ="k "> if</ span > < span class ="n "> slots_state</ span > < span class ="p "> :</ span >
501
+ < 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 >
502
+ < 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 >
486
503
< span class ="k "> return</ span > < span class ="n "> ret</ span >
487
504
488
505
@@ -586,10 +603,24 @@ <h1>Source code for torch._tensor</h1><div class="highlight"><pre>
586
603
< span class ="k "> return</ span > < span class ="n "> new_tensor</ span >
587
604
588
605
< 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 >
606
+ < 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 >
607
+ < 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 >
589
608
< 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 >
590
609
< 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 >
591
610
< 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 >
592
- < 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 >
611
+ < span class ="c1 "> # Get the state of the python subclass</ span >
612
+ < span class ="c1 "> # This loosely mimicks the function on the object class but since Tensor do not inherit</ span >
613
+ < span class ="c1 "> # from it, we cannot call that function directly</ span >
614
+ < span class ="c1 "> # https://github.com/python/cpython/blob/c83919bd635f4433f1c6ae8504996a9fe3c215e5/Objects/typeobject.c#L4891</ span >
615
+ < 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 >
616
+ < span class ="k "> if</ span > < span class ="n "> getstate_fn</ span > < span class ="p "> :</ span >
617
+ < span class ="n "> state</ span > < span class ="o "> =</ span > < span class ="n "> getstate_fn</ span > < span class ="p "> ()</ span >
618
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
619
+ < 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 >
620
+ < span class ="k "> if</ span > < span class ="n "> slots_to_save</ span > < span class ="p "> :</ span >
621
+ < span class ="n "> state</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="vm "> __dict__</ span > < span class ="p "> ,</ span > < span class ="p "> {</ span > < 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 > < span class ="k "> for</ span > < span class ="n "> name</ span > < span class ="ow "> in</ span > < span class ="n "> slots_to_save</ span > < 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 >
622
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
623
+ < span class ="n "> state</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="vm "> __dict__</ span >
593
624
< 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 >
594
625
595
626
< 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