بهینه سازهای شبکه عصبی از ابتدا در پایتون

بهینه سازی غیر محدب از دیدگاه ریاضی و عملی: SGD، SGDMMomentum، AdaGrad، RMSprop و Adam در پایتون

class Optimizers:
def __init__(self, learning_rate):
self.learning_rate = learning_rate

def SGD(self, params, grads):
“”” Stochastic gradient descent “””
updated_params = []

for param, grad in zip(params, grads):
delta = self.learning_rate * grad
param -= delta

updated_params.apppend(
param
)

return updated_params

پیاده سازی SGD Python

class Optimizers:

def __init__(self, num_weight, learning_rate, mom_coeff):
self.previous_updates = [0] * num_weight
self.learning_rate = learning_rate
self.mom_coeff = mom_coeff

def SGDMomentum(self, params, grads):
“””Stochastic gradient descent with momentum on mini-batches. “””
updated_params, prevs = [], []

for param, grad, prev_update in zip(params, grads, self.previous_updates):
delta = self.learning_rate * grad – self.mom_coeff * prev_update
param -= delta

prevs.append(
delta
)

updated_params.apppend(
param
)

self.previous_updates = prevs

return updated_params

پیاده سازی پایتون SGDMMomentum

class Optimizers:

def __init__(self, num_weight, learning_rate):
self.previous_updates = [0] * num_weight
self.cache = [0] * num_weight
self.learning_rate = learning_rate

def AdaGrad(self, params, grads):
“”” AdaGrad adaptive optimization algorithm “””
updated_params = []

for i, (param,grad) in enumerate(zip(params, grads)):
self.cache[i] += grad **2
param += -self.learning_rate * grad / (np.sqrt(self.cache[i]) + 1e-6)

updated_params.apppend(
param
)

return updated_params

پیاده سازی AdaGrad Python

class Optimizers:

def __init__(self, num_weight, learning_rate):
self.cache_rmsprop = [0] * num_weight
self.learning_rate = learning_rate

def RMSprop(self, params, grads, decay_rate = 0.9):
“”” RMSprop adaptive optimization algorithm “””
updated_params = []

for i, (param, grad) in enumerate(zip(params, grads)):
self.cache_rmsprop[i] = decay_rate * self.cache_rmsprop[i] + (1-decay_rate) * grad **2
param += – self.learning_rate * grad / (np.sqrt(self.cache_rmsprop[i])+ 1e-6)

updated_params.append(
param
)

return updated_params

پیاده سازی Python RMSprop

class Optimizers:

def __init__(self, num_weight, learning_rate):
self.m = [0] * num_weight
self.v = [0] * num_weight
self.t = 1
self.learning_rate = learning_rate

def Adam(self, params, grads, beta1 = 0.9,beta2 = 0.999):
“”” Adam optimizer, bias correction is implemented. “””

updated_params = []

for i, (param, grad) in enumerate(zip(params, grads)):

self.m[i] = beta1 * self.m[i] + (1-beta1) * grad
self.v[i] = beta2 * self.v[i] + (1-beta2) * grad **2
m_corrected = self.m[i] / (1-beta1**self.t)
v_corrected = self.v[i] / (1-beta2**self.t)
param += -self.learning_rate * m_corrected / (np.sqrt(v_corrected) + 1e-8)
updated_params.append(
param
)

self.t +=1

return updated_params

پیاده سازی آدام پایتون
شما هم مقاله بنویسید / برای اینکه نوسیده محتوای تخصصی و تجربیات خود باشید، لطفا کنید.

مقالات مرتبط

نحوه عملکرد FMRI

تصویربرداری رزونانس مغناطیسی کاربردی تکنیکی برای اندازه گیری فعالیت مغز است، اما چگونه کار می کند؟   FMRI چیست؟ تصویربرداری رزونانس مغناطیسی عملکردی یا FMRI، با…

پاسخ‌ها