深度学习经典优化器(python全代码)

SGD

class SGD:

    def __init__(self, lr=0.01):
        self.lr = lr
        
    def update(self, params, grads):
        for key in params.keys():
            params[key] -= self.lr * grads[key] 

 

Momentum

class Momentum:

    def __init__(self, lr=0.01, momentum=0.9):
        self.lr = lr
        self.momentum = momentum
        self.v = None
        
    def update(self, params, grads):
        if self.v is None:
            self.v = {}
            for key, val in params.items():                                
                self.v[key] = np.zeros_like(val)
                
        for key in params.keys():
            self.v[key] = self.momentum*self.v[key] - self.lr*grads[key] 
            params[key] += self.v[key]

 

Nesterov

class Nesterov:

    def __init__(self, lr=0.01, momentum=0.9):
        self.lr = lr
        self.momentum = momentum
        self.v = None
        
    def update(self, params, grads):
        if self.v is None:
            self.v = {}
            for key, val in params.items():
                self.v[key] = np.zeros_like(val)
            
        for key in params.keys():
            self.v[key] *= self.momentum
            self.v[key] -= self.lr * grads[key]
            params[key] += self.momentum * self.momentum * self.v[key]
            params[key] -= (1 + self.momentum) * self.lr * grads[key]

 

AdaGrad

class AdaGrad:

    def __init__(self, lr=0.01):
        self.lr = lr
        self.h = None
        
    def update(self, params, grads):
        if self.h is None:
            self.h = {}
            for key, val in params.items():
                self.h[key] = np.zeros_like(val)
            
        for key in params.keys():
            self.h[key] += grads[key] * grads[key]
            params[key] -= self.lr * grads[key] / (np.sqrt(self.h[key]) + 1e-7)

 

RMSprop

class RMSprop:

    def __init__(self, lr=0.01, decay_rate = 0.99):
        self.lr = lr
        self.decay_rate = decay_rate
        self.h = None
        
    def update(self, params, grads):
        if self.h is None:
            self.h = {}
            for key, val in params.items():
                self.h[key] = np.zeros_like(val)
            
        for key in params.keys():
            self.h[key] *= self.decay_rate
            self.h[key] += (1 - self.decay_rate) * grads[key] * grads[key]
            params[key] -= self.lr * grads[key] / (np.sqrt(self.h[key]) + 1e-7)

 

Adam

class Adam:

    def __init__(self, lr=0.001, beta1=0.9, beta2=0.999):
        self.lr = lr
        self.beta1 = beta1
        self.beta2 = beta2
        self.iter = 0
        self.m = None
        self.v = None
        
    def update(self, params, grads):
        if self.m is None:
            self.m, self.v = {}, {}
            for key, val in params.items():
                self.m[key] = np.zeros_like(val)
                self.v[key] = np.zeros_like(val)
        
        self.iter += 1
        lr_t  = self.lr * np.sqrt(1.0 - self.beta2**self.iter) / (1.0 - self.beta1**self.iter)         
        
        for key in params.keys():
            self.m[key] += (1 - self.beta1) * (grads[key] - self.m[key])
            self.v[key] += (1 - self.beta2) * (grads[key]**2 - self.v[key])
            
            params[key] -= lr_t * self.m[key] / (np.sqrt(self.v[key]) + 1e-7)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python深度学习配套代码是指在使用Python编程语言进行深度学习时所需要的相关代码库和示例代码。 在Python中,有几个重要的深度学习库,包括TensorFlow、Keras、PyTorch等。这些库提供了丰富的函数和类,用于构建各种深度学习模型,如神经网络、卷积神经网络和循环神经网络等。 配套代码通常包括以下几个方面: 1. 数据预处理:包括数据集的加载、数据清洗、数据转换、数据划分等。例如,可以使用NumPy库来进行矩阵运算和数据处理,使用Pandas库来进行数据分析和预处理。 2. 模型构建:根据具体的深度学习任务,选择合适的模型架构,并根据需要添加相应的层和参数。例如,使用TensorFlow或Keras可以直观地构建神经网络模型,通过搭建不同的层(如连接层、卷积层、池化层等)以及设置相应的参数(如激活函数、优化算法、损失函数等)来进行模型定义。 3. 模型训练:通过反向传播算法优化器,利用训练数据对模型进行训练。例如,可以使用TensorFlow或PyTorch提供的优化器(如SGD、Adam等)和损失函数(如均方误差、交叉熵等)对模型进行训练。 4. 模型评估和预测:使用测试数据对训练好的模型进行评估,并对新样本进行预测。通常,会使用准确率、精确率、召回率等指标来评估模型的性能。 另外,配套代码还可以包括可视化工具和示例代码。可视化工具可以帮助用户更加直观地理解模型的训练过程和结果,而示例代码可以帮助新手快速上手,了解深度学习的基本操作和流程。 总之,Python深度学习配套代码包含了数据预处理、模型构建、模型训练、模型评估和预测等功能,帮助用户快速构建和训练自己的深度学习模型。通过使用这些代码,可以更高效地进行深度学习任务的开发和研究。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈O-Jay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值