欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pytorch dropout_【lightgbm/xgboost/nn代码整理四】pytorch做二分类,多分类以及回归任务...

程序员文章站 2022-03-06 21:24:04
...

pytorch dropout_【lightgbm/xgboost/nn代码整理四】pytorch做二分类,多分类以及回归任务...

1.简介

本不打算整理pytorch代码,因为在数据挖掘类比赛中没有用过它,做图像相关任务时用pytorch比较多。有个小哥提到让整理一下,就花了几天时间整理了一份,有问题请读者指出。下面将从数据处理、网络搭建和模型训练三个部分介绍。如果只是想要阅读代码,可直接移步到尾部链接。

2. 数据处理

参考上一节的数据处理

3.模型

pytorch 定义的mlp代码如下:

class 

定义的网路结构和上一节keras中定义的一样,同样也添加了dropout层和bn层。不同之处这个网络最终的输出都是线性输出。

训练和预测

4.1 数据加载

pytorch是以tensor的形式加载数据,需要将数据转为tenser格式,如果有gpu处理器,并且安装的也是gpu版本的pytorch,就可以使用gpu加速处理,通过DataLoader来加载数据,代码如下。

x_test 

4.2 训练

model 

定义完网络后,如果存在GPU,则需要将model也添加上gpu。优化函数同keras一样,都含有adam,sgd等。损失函数针对不同问题有所不同,在代码中已有标注,上面列出的分类任务都采用的是交叉熵损失函数,集成了最后一层的**函数,如多分类的CrossEntropyLoss,它已经集成了softmax函数,且不需要对类别类别做onehot处理,直接输入int值即可。

  • optimizer.zero_grad():是为下一次训练清除梯度值
  • loss.backward()是反向传播,计算每个参数的梯度值
  • optimizer.step():是更新参数权重值包括,weights和biases

4.3 预测

在预测中eval()函数会自动把BN和DropOut固定住,不会取平均,而是用训练好的值。不然的话,一旦test的batch_size过小,很容易就会被BN层导致生成图片颜色失真极大。代码如下

model

由于计算的结果是tensor,需要转为numpy。

最终的结果转化同keras一样,如二分类需要设定阈值。

代码参考:链接

代码地址:QLMX/data_mining_models

浏览更多内容,可访问:www.growai.cn

. 写在最后

本篇代码主要是来自kaggle,上面已给出参考链接。几个模型已经介绍完毕,TensorFlow不打算整理(虽然我学的第一个框架就是tf,但是感觉整数据挖掘的使用tf的比较少)。说一些题外话,做算法类比赛,要好好利用kaggle或者天池,这类社区有很多人分享或者开源他们的方案,尤其是kaggle,上面开源很多代码,而且可以copy直接运行,可以学习别人的思想和方法。还有就是多尝试,不断的试错提升。最后说一个个人习惯,看别人的分享,喜欢看文章来源,参考了什么,看看别人看什么提升的。。。如果对您有帮助,欢迎关注作者和专栏,和作者一块成长,同时专栏也是一个开放的平台,欢迎投稿

ML与DL实践之路​zhuanlan.zhihu.com
pytorch dropout_【lightgbm/xgboost/nn代码整理四】pytorch做二分类,多分类以及回归任务...

推荐阅读

QLMX:【lightgbm/xgboost/nn代码整理一】lightgbm做二分类,多分类以及回归任务

QLMX:【lightgbm/xgboost/nn代码整理二】xgboost做二分类,多分类以及回归任务

QLMX:【lightgbm/xgboost/nn代码整理三】keras做二分类,多分类以及回归任务

相关标签: pytorch dropout