.. _optimizer-guide: ======================= 浣跨敤 Optimizer 浼樺寲鍙傛暟 ======================= MegEngine 鐨� :py:mod:`optimizer` 妯″潡涓疄鐜颁簡澶ч噺鐨勪紭鍖栫畻娉曪紝 鍏朵腑 :py:class:`~.Optimizer` 鏄墍鏈変紭鍖栧櫒鐨勬娊璞″熀绫伙紝瑙勫畾浜嗗繀椤绘彁渚涚殑鎺ュ彛銆� 鍚屾椂涓虹敤鎴锋彁渚涗簡鍖呮嫭 :py:class:`~.SGD`, :py:class:`~.Adam` 鍦ㄥ唴鐨勫父瑙佷紭鍖栧櫒瀹炵幇銆� 杩欎簺浼樺寲鍣ㄨ兘澶熷熀浜庡弬鏁扮殑姊害淇℃伅锛屾寜鐓х畻娉曟墍瀹氫箟鐨勭瓥鐣ュ鍙傛暟鎵ц鏇存柊銆� 浠� ``SGD`` 浼樺寲鍣ㄤ负渚嬶紝浼樺寲绁炵粡缃戠粶妯″瀷鍙傛暟鐨勫熀鏈祦绋嬪涓嬶細 .. code-block:: python from megengine.autodiff import GradManager import megengine.optimizer as optim model = MyModel() gm = GradManager().attach(model.parameters()) optimizer = optim.SGD(model.parameters(), lr=0.01) # lr may vary with different model for data, label in dataset: with gm: pred = model(data) loss = loss_fn(pred, label) gm.backward(loss) optimizer.step().clear_grad() * 鎴戜滑闇€瑕佹瀯閫犱竴涓紭鍖栧櫒锛屽苟涓斾紶鍏ラ渶瑕佽浼樺寲鐨勫弬鏁� ``Parameter`` 鎴栧叾杩唬锛� * 閫氳繃鎵ц :py:meth:`~.Optimizer.step` 鏂规硶锛屽弬鏁板皢鍩轰簬姊害淇℃伅琚繘琛屼竴娆′紭鍖栵紱 * 閫氳繃鎵ц :py:meth:`~.Optimizer.clear_grad` 鏂规硶锛屽皢娓呯┖鍙傛暟鐨勬搴︺€� .. admonition:: 涓轰綍闇€瑕佹墜鍔ㄦ竻绌烘搴︼紵 :class: warning 姊害绠$悊鍣ㄦ墽琛� :py:meth:`~.GradManager.backward` 鏂规硶鏃讹紝 浼氬皢褰撳墠璁$畻鎵€寰楀埌鐨勬搴︿互绱姞鐨勫舰寮忕Н绱埌鍘熸湁姊害涓婏紝鑰屼笉鏄洿鎺ュ仛鏇挎崲銆� 鍥犳瀵逛簬鏂颁竴杞殑姊害璁$畻锛岄€氬父闇€瑕佸皢涓婁竴杞绠楀緱鍒扮殑姊害淇℃伅娓呯┖銆� 浣曟椂杩涜姊害娓呯┖鏄敱浜轰负鎺у埗鐨勶紝杩欐牱鍙厑璁哥伒娲昏繘琛屾搴︾殑绱Н銆� .. _optimizer-state-dict: Optimizer 鐘舵€佸瓧鍏� ------------------ ``Optimizer`` 鏋勯€犲嚱鏁颁腑杩樺彲鎺ュ彈涓€涓惈鏈変紭鍖栧櫒榛樿鍙傛暟鐨勫瓧鍏革紙濡傚惈鏈夊涔犵巼銆佸姩閲忋€佹潈閲嶈“鍑忕郴鏁扮瓑绛夛級锛� 杩欎簺淇℃伅鍙互閫氳繃 :py:meth:`~.Optimizer.state_dict` 鍜� :py:meth:`~.Optimizer.load_state_dict` 鑾峰彇鍜屽姞杞姐€� 瀛愮被鍦ㄥ疄鐜版椂鍙嚜瀹氫箟杩欎簺鍙傛暟锛屽悓鏍蜂互 ``SGD`` 涓轰緥锛� >>> model = megengine.module.Linear(3, 2) >>> optimizer = optim.SGD(model.parameters(), lr=1e-3, momentum=0.9, weight_decay=1e-4) >>> optimizer.state_dict() {'param_groups': [{'lr': 0.001, 'momentum': 0.9, 'weight_decay': 0.0001, 'params': [0, 1]}], 'state': {0: {'momentum_buffer': array([0., 0.], dtype=float32)}, 1: {'momentum_buffer': array([[0., 0., 0.], [0., 0., 0.]], dtype=float32)}}} 澶у鏁扮殑 Optimizer 鐘舵€佸瓧鍏镐腑浼氬瓨鍌ㄥ弬鏁版搴︾殑缁熻淇℃伅锛堜緥濡傝繍琛屾椂鍧囧€笺€佸弽宸瓑锛夛紝 鍦ㄦ殏鍋�/鎭㈠妯″瀷璁粌鏃讹紝杩欎簺淇℃伅闇€瑕佽淇濆瓨/鍔犺浇锛屼互淇濊瘉鍓嶅悗鐘舵€佺殑涓€鑷存€с€� .. seealso:: 閫氳繃 :py:meth:`~.Optimizer.load_state_dict` 鎴戜滑鍙互鍔犺浇 ``Optimizer`` 鐘舵€佸瓧鍏革紝甯哥敤浜庢ā鍨嬭缁冭繃绋嬬殑淇濆瓨涓庡姞杞姐€� * ``Module`` 涓篃鏈夌敤浜庝繚瀛樺拰鍔犺浇鐨勭姸鎬佸瓧鍏革紝鍙傝€� :ref:`module-guide` 銆� * 鍏充簬妯″瀷璁粌杩囩▼涓繚瀛樹笌鍔犺浇鐨勬渶浣冲疄璺碉紝璇峰弬鑰� :ref:`serialization-guide` 銆� 浜嗚В鏇村 -------- .. toctree:: :maxdepth: 1 advanced-parameter-optimization