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推荐阅读
QLMX:【lightgbm/xgboost/nn代码整理一】lightgbm做二分类,多分类以及回归任务
QLMX:【lightgbm/xgboost/nn代码整理二】xgboost做二分类,多分类以及回归任务
QLMX:【lightgbm/xgboost/nn代码整理三】keras做二分类,多分类以及回归任务