بهینهسازی optim
بهینهسازهای شبکهی عصبی: SGD، آدام، RMSProp و زمانبندی نرخ یادگیری.
واردسازی بهینهسازی
بهینهساز پارامترهای مدل را با گرادیانها بهروز میکند. حلقهی آموزش همیشه این شکل را دارد: نوار مشتقگیری خودکار را بازنشانی کنید، گرادیانهای مخزن پارامتر را صفر کنید، زیان را حساب کنید، پسانتشار را صدا بزنید و سپس گام بهینهساز را.
روالهای نرخ ... نرخ یادگیری را برای هر گام حساب میکنند؛ آن را پیش از گام در فیلد lr بهینهساز بگذارید.
گونهها
آدام Adam
ساختار آدام| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| lr | lr | اعشار۶۴ = 0.001 | نرخ یادگیری. |
| beta1 | beta1 | اعشار۶۴ = 0.9 | ضریب میانگین گرادیان. |
| beta2 | beta2 | اعشار۶۴ = 0.999 | ضریب میانگین مربع گرادیان. |
| eps | eps | اعشار۶۴ = 1e-08 | عدد کوچک برای جلوگیری از تقسیم بر صفر. |
| weight_decay | weight_decay | اعشار۶۴ = 0 | کاهش وزن. |
| decoupled | decoupled | منطقی = نادرست | کاهش وزن جدا از گرادیان اعمال شود، یعنی AdamW. |
واردسازی بهینهسازی
واردسازی شبکه عصبی
واردسازی مشتقگیری خودکار
واردسازی تانسور
روال آموزش(روش: صحیح، گامها: صحیح، هدف &: تانسور.تانسور): اعشار۶۴:
ناپایا مخزن := شبکه عصبی.مخزن پارامتر {}
دستگیره := مخزن.افزودن("w"، تانسور.صفرها یک(۴))
ناپایا آدام := بهینهسازی.آدام { lr = ۰.۱ }
ناپایا آدام دبلیو := بهینهسازی.آدام دابلیو جدید(۰.۱، ۰.۰۱)
ناپایا آر ام اس := بهینهسازی.آر ام اس پراپ { lr = ۰.۰۵ }
ناپایا اس جی دی := بهینهسازی.گرادیان کاهشی تصادفی { lr = ۰.۰۵، momentum = ۰.۹ }
ناپایا نوار := مشتقگیری خودکار.نوار جدید(۱)
تکرار گامها:
نوار.بازنشانی()
مخزن.صفر کردن گرادیان()
و۱ := شبکه عصبی.پیوند(نوار، مخزن، دستگیره)
ه := مشتقگیری خودکار.ورودی(نوار، هدف)
زیان := مشتقگیری خودکار.مجموع(نوار، مشتقگیری خودکار.مربع(نوار، مشتقگیری خودکار.تفریق(نوار، و۱، ه)))
مشتقگیری خودکار.پسانتشار(نوار، زیان)
_ := بهینهسازی.برش نُرم گرادیان(مخزن، ۱۰.۰)
بهینهسازی.برش مقدار گرادیان(مخزن، ۵.۰)
اگر روش == ۰:
آدام.گام(مخزن)
وگرنه روش == ۱:
آدام دبلیو.گام(مخزن)
وگرنه روش == ۲:
آر ام اس.گام(مخزن)
وگرنه:
اس جی دی.گام(مخزن)
پایان
پایان
ناپایا پ := مخزن.عنصر(دستگیره)
نتیجه := پ.value.عنصر(۳)
نوار.آزادسازی()
آدام.آزادسازی()
آدام دبلیو.آزادسازی()
آر ام اس.آزادسازی()
اس جی دی.آزادسازی()
مخزن.آزادسازی()
برگشت نتیجه
پایان
روال ریشه:
ناپایا هدف := تانسور.بازه گام(۴)
هر روش در [۰، ۱، ۲، ۳]:
گرد := (آموزش(روش، ۴۰۰، هدف) * ۱۰۰.۰ + ۰.۵) برگردان صحیح
سرچاپ روش، گرد
پایان
تانسور.آزادسازی(هدف)
سرچاپ بهینهسازی.نرخ پلهای(۱.۰، ۲۵، ۱۰، ۰.۵)، بهینهسازی.نرخ کسینوسی(۱.۰، ۵۰، ۱۰۰، ۰.۰)، بهینهسازی.گرمایش سپس کسینوس(۱.۰، ۰، ۱۰، ۱۱۰، ۰.۰)
پایانگام step
روال گام(ps &: nn.ParamStore)نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
آر ام اس پراپ RMSProp
ساختار آر ام اس پراپ| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| lr | lr | اعشار۶۴ = 0.01 | نرخ یادگیری. |
| alpha | alpha | اعشار۶۴ = 0.99 | ضریب میانگین مربع گرادیان. |
| eps | eps | اعشار۶۴ = 1e-08 | عدد کوچک برای جلوگیری از تقسیم بر صفر. |
| weight_decay | weight_decay | اعشار۶۴ = 0 | کاهش وزن. |
نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
گام step
روال گام(ps &: nn.ParamStore)نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
گرادیان کاهشی تصادفی SGD
ساختار گرادیان کاهشی تصادفی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| lr | lr | اعشار۶۴ = 0.01 | نرخ یادگیری. |
| momentum | momentum | اعشار۶۴ = 0 | تکانه؛ صفر یعنی بدون تکانه. |
| weight_decay | weight_decay | اعشار۶۴ = 0 | کاهش وزن، یعنی جریمهی L2. |
| nesterov | nesterov | منطقی = نادرست | تکانهی نستروف. |
نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
گام step
روال گام(ps &: nn.ParamStore)نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
روالها
آدام دابلیو جدید NewAdamW
روال آدام دابلیو جدید(lr: اعشار۶۴، weight_decay: اعشار۶۴): آدامنمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
برش نُرم گرادیان ClipGradNorm
روال برش نُرم گرادیان(ps &: nn.ParamStore، max_norm: اعشار۶۴): اعشار۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
برش مقدار گرادیان ClipGradValue
روال برش مقدار گرادیان(ps &: nn.ParamStore، limit: اعشار۶۴)نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
نرخ پلهای StepLR
روال نرخ پلهای(base: اعشار۶۴، step: صحیح۶۴، every: صحیح۶۴، gamma: اعشار۶۴): اعشار۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
نرخ کسینوسی CosineLR
روال نرخ کسینوسی(base: اعشار۶۴، step: صحیح۶۴، total: صحیح۶۴، min_lr: اعشار۶۴): اعشار۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam
گرمایش سپس کسینوس WarmupCosine
روال گرمایش سپس کسینوس(base: اعشار۶۴، step: صحیح۶۴، warmup: صحیح۶۴، total: صحیح۶۴، min_lr: اعشار۶۴): اعشار۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: optim-Train.salam