paddlepaddle深度学习二分类问题求解

本文分享了使用深度学习框架PaddlePaddle进行二分类任务的经验,介绍了如何利用softmax和sigmoid函数进行分类,以及通过ReLU激活函数、LSTM和正则化解决梯度问题的策略。此外,还探讨了Adam优化器结合L2正则化避免梯度爆炸的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近闲起来了,总结一些之前用过的东西吧。

大家参考就好,非专业学者。

在做二分类问题时,我们通常只要用sofamax或者sigmod最后在输出层分类就好。这个就是深度学习的优越性,你可以不用了解原理,所以本人就是渣在这边,可以吧模型训练出很好的效果,但是对于算法理解还是不到位的。

使用paddlepaddle框架可以很简单的进行分类,如下:

#定义前向传播
def forward():
    x = fluid.layers.data(name='x',shape=[1,9],dtype='float32')
    hidden = fluid.layers.fc(input=x,size=36,act='relu')
    y_predict = fluid.layers.fc(input=hidden,size=2,act='softmax')
    return y_predict

一般来讲,使用relu函数激活,大致这个意思 。按照正态分布来讲可以保证1%-4%的神经元处于活跃状态,没有了其他复杂激活函数中诸如指数函数的影响;同时活跃度的分散性使得神经网络整体计算成本下降。然后你就可以很快的训练出模型。大概这个意思吧!?虽然在防止梯度爆炸和梯度消失有一定的帮助,但是在实际使用过程中,由于输入层比较大,还有较多的网络层数,导致,个人建议还是利用lstm或者加入正则化的方法,减少这些问题的发生。

我在一次分类中,用了下面这个方法来避免训练中存在的梯度爆炸和梯度消失。

def optimizer_program():
    return fluid.optimizer.Adam(learning_rate=0.001,regularization=fluid.regularizer.L2DecayRegularizer(4e-4))

当然训练轮数要大,理由有两个。

过度训练虽然未必有利于提高模型性能,但是可以看出模型训练中的问题。就比如梯度爆炸,当轮数高了你就会发现,其实爆炸的发生也暗含着模型中可能有过拟合的问题。这种问题不是你单单减少迭代轮数,看不见爆炸就是不存在的问题。所以不要小看迭代轮数对作用哦!!!

由于学习率较小要达到收敛还是要匹配较高的迭代轮数的。

 paddlepaddle是深度学习框架,我们可以看到的都是直接可以用的方法API,无法理解深层次的原理,我还是希望大家可以在评论区,多多评论,指出问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值