/usr/local/lib64/python3.6/site-packages/torch/optim/__pycache__
NameSizeModeActions
adadelta.cpython-36.pyc48290644editdlrm
adagrad.cpython-36.pyc47670644editdlrm
adam.cpython-36.pyc62500644editdlrm
adamax.cpython-36.pyc48690644editdlrm
adamw.cpython-36.pyc62580644editdlrm
asgd.cpython-36.pyc28480644editdlrm
lbfgs.cpython-36.pyc88020644editdlrm
lr_scheduler.cpython-36.pyc637920644editdlrm
nadam.cpython-36.pyc57270644editdlrm
optimizer.cpython-36.pyc118270644editdlrm
radam.cpython-36.pyc57120644editdlrm
rmsprop.cpython-36.pyc65430644editdlrm
rprop.cpython-36.pyc51820644editdlrm
sgd.cpython-36.pyc62670644editdlrm
sparse_adam.cpython-36.pyc33290644editdlrm
swa_utils.cpython-36.pyc113700644editdlrm
_functional.cpython-36.pyc104070644editdlrm
__init__.cpython-36.pyc10490644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/optim/__pycache__/optimizer.cpython-36.pyc (11827B)
3 Ege.@sjddlmZmZddlZddlmZddlmZddl Z ddl Z Gddde Z e Z Gddde ZdS) ) defaultdictabcN)deepcopy)chainc@seZdZdZddZdS)_RequiredParameterzCSingleton class representing a required parameter for an Optimizer.cCsdS)Nz)selfrrA/usr/local/lib64/python3.6/site-packages/torch/optim/optimizer.py__repr__ sz_RequiredParameter.__repr__N)__name__ __module__ __qualname____doc__r rrrr r src@sheZdZdZddZddZddZdd Zd d Zd d Z ddZ de dddZ ddZ ddZdS) OptimizeraXBase class for all optimizers. .. warning:: Parameters need to be specified as collections that have a deterministic ordering that is consistent between runs. Examples of objects that don't satisfy those properties are sets and iterators over values of dictionaries. Args: params (iterable): an iterable of :class:`torch.Tensor` s or :class:`dict` s. Specifies what Tensors should be optimized. defaults: (dict): a dict containing default values of optimization options (used when a parameter group doesn't specify them). cCstjjd||_|jt|tjr8tdtj|t t |_ g|_ t |}t|dkrdtdt|dt s|d|ig}x|D]}|j|qWdS)Nzpython.optimizerzZparams argument given to the optimizer should be an iterable of Tensors or dicts, but got rz%optimizer got an empty parameter listparams)torch_CZ_log_api_usage_oncedefaults_hook_for_profile isinstanceTensor TypeErrortypenamerdictstate param_groupslistlen ValueErroradd_param_group)rrrr param_grouprrr __init__!s      zOptimizer.__init__cCs|j|j|jdS)N)rrr)rrr)rrrr __getstate__8szOptimizer.__getstate__cCs|jj||jdS)N)__dict__updater)rrrrr __setstate__?s zOptimizer.__setstate__cCsx|jjd}x^t|jD]P\}}|d7}|dj|7}x0t|jD] }|dkrD|dj|||7}qDWqW|d7}|S)Nz ( zParameter Group {0} rz {0}: {1} )) __class__r enumeraterformatsortedkeys)r format_stringigroupkeyrrr r Cs zOptimizer.__repr__cCsJdj|jj|_dd}t|jjdd}|sF||jj|j_d|jj_dS)Nz Optimizer.zero_grad#{}.zero_gradcstjfdd}|S)Nc s:|^}}dj|jj}tjjj| ||SQRXdS)NzOptimizer.step#{}.step)r*r(r rautogradprofilerrecord_function)argskwargsobj_Z profile_name)funcrr wrapperSszGOptimizer._hook_for_profile..profile_hook_step..wrapper) functoolswraps)r8r9r)r8r profile_hook_stepQsz6Optimizer._hook_for_profile..profile_hook_stephookedT)r*r(r _zero_grad_profile_namegetattrstepr=)rr<r=rrr rNs  zOptimizer._hook_for_profilecsLidfddfdd|jD}fdd|jjD}||dS) aKReturns the state of the optimizer as a :class:`dict`. It contains two entries: * state - a dict holding current optimization state. Its content differs between optimizer classes. * param_groups - a list containing all parameter groups where each parameter group is a dict rcsbdd|jD}jfddt|dDfdd|dD|d<t|d7|S)NcSsi|]\}}|dkr||qS)rr).0kvrrr psz.pack_group..cs&i|]\}}t|kr|t|qSr)id)rAr.p)param_mappingsrr rDqsrcsg|]}t|qSr)rE)rArF)rGrr ssz.pack_group..)itemsr$r)r)r/packed)rG start_indexrr pack_groupns "z(Optimizer.state_dict..pack_groupcsg|] }|qSrr)rAg)rLrr rHvsz(Optimizer.state_dict..cs.i|]&\}}|t|tjr&t|n|qSr)rrrrE)rArBrC)rGrr rDxsz(Optimizer.state_dict..)rr)rrrI)rrZ packed_stater)rLrGrKr state_dict`s  zOptimizer.state_dictc s(t|}|j}|d}t|t|kr.tddd|D}dd|D}tddt||Drjtddd ttjd d|Dtjd d|DD}fd d tt }x@|dj D]0\}} ||kr||} | | || <q| ||<qWddfddt||D} |j || ddS)zLoads the optimizer state. Args: state_dict (dict): optimizer state. Should be an object returned from a call to :meth:`state_dict`. rzsz,Optimizer.load_state_dict..css|]}t|dVqdS)rN)r)rArMrrr rOscss|]\}}||kVqdS)Nr)rAZp_lenZs_lenrrr rOsz]loaded state dict contains a parameter group that doesn't match the size of optimizer's groupcSsi|]\}}||qSrr)rAZold_idrFrrr rDsz-Optimizer.load_state_dict..css|]}|dVqdS)rNr)rArMrrr rOscss|]}|dVqdS)rNr)rArMrrr rOscst|tjr0jr |jj}|jj}|St|trRfdd|jDSt|t j rzt |fdd|DS|SdS)zBMake a deep copy of value, casting all tensors to device of param.csi|]\}}||qSrr)rArBrC)castparamrr rDsz;Optimizer.load_state_dict..cast..c3s|]}|VqdS)Nr)rArC)rPrQrr rOsz:Optimizer.load_state_dict..cast..N) rrrZis_floating_pointZtoZdtypeZdevicerrIcontainer_abcsIterabletype)rQvalue)rP)rQr rPs     z'Optimizer.load_state_dict..castrcSs|d|d<|S)Nrr)r/Z new_grouprrr update_groups z/Optimizer.load_state_dict..update_groupcsg|]\}}||qSrr)rArMZng)rVrr rHsz-Optimizer.load_state_dict..)rrN) rrrranyzipr from_iterablerrrIr%) rrNgroupsZ saved_groupsZ param_lensZ saved_lensZid_maprrBrCrQrr)rPrVr load_state_dicts,  zOptimizer.load_state_dictF) set_to_nonec Cst|ds|jtjjj|jlxd|jD]Z}xT|dD]H}|jdk r:|rTd|_q:|jj dk rl|jj n |jj d|jj q:Wq,WWdQRXdS)aSets the gradients of all optimized :class:`torch.Tensor` s to zero. Args: set_to_none (bool): instead of setting to zero, set the grads to None. This will in general have lower memory footprint, and can modestly improve performance. However, it changes certain behaviors. For example: 1. When the user tries to access a gradient and perform manual ops on it, a None attribute or a Tensor full of 0s will behave differently. 2. If the user requests ``zero_grad(set_to_none=True)`` followed by a backward pass, ``.grad``\ s are guaranteed to be None for params that did not receive a gradient. 3. ``torch.optim`` optimizers have a different behavior if the gradient is 0 or None (in one case it does the step with a gradient of 0 and in the other it skips the step altogether). r>rNF) hasattrrrr1r2r3r>rZgradZgrad_fnZdetach_Zrequires_grad_Zzero_)rr\r/rFrrr zero_grads      zOptimizer.zero_gradcCstdS)afPerforms a single optimization step (parameter update). Args: closure (callable): A closure that reevaluates the model and returns the loss. Optional for most optimizers. .. note:: Unless otherwise specified, this function should not modify the ``.grad`` field of the parameters. N)NotImplementedError)rZclosurerrr r@s zOptimizer.stepcCsTt|tstd|d}t|tjr2|g|d<n t|trFtdn t||d<x<|dD]0}t|tjs~tdtj||j s\t dq\Wx@|j j D]2\}}|t kr||krt d|q|j||qW|d}t|tt|krtjddd t}x"|jD]}|jt|dq W|jt|dsDt d |jj|d S) aAdd a param group to the :class:`Optimizer` s `param_groups`. This can be useful when fine tuning a pre-trained network as frozen layers can be made trainable and added to the :class:`Optimizer` as training progresses. Args: param_group (dict): Specifies what Tensors should be optimized along with group specific optimization options. zparam group must be a dictrzoptimizer parameters need to be organized in ordered collections, but the ordering of tensors in sets will change between runs. Please use a list instead.z>optimizer can only optimize Tensors, but one of the params is z can't optimize a non-leaf TensorzJparameter group didn't specify a value of required optimization parameter zoptimizer contains a parameter group with duplicate parameters; in future, this will cause an error; see github.com/pytorch/pytorch/issues/40967 for more information) stacklevelz7some parameters appear in more than one parameter groupN)rrAssertionErrorrrsetrrrZis_leafrrrIrequired setdefaultrwarningswarnrr$ isdisjointappend)rr rrQnamedefaultZ param_setr/rrr rs8          zOptimizer.add_param_groupN)F)r r r rr!r"r%r rrNr[boolr^r@rrrrr rs  > r) collectionsrrrRrcopyr itertoolsrrfr:objectrrdrrrrr s