查看: 410|回复: 0
收起左侧

【造轮子】python手写机器学习库更新

|只看干货
本楼: 👍   100% (4)
 
 
0% (0)   👎
全局: 👍   100% (59)
 
 
0% (0)    👎

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
可能有些小伙伴看过我十多天以前发的一些机器学习基础算法了,非常感谢你们的加米!希望那些算法的代码和公式推导对你们有帮助!

简单介绍下新内容~

基于之前实现的 ANN,添加了embedding层,用它写了个简单的 Neural Network Language Model (NNLM) 和 Word2Vec (Skip-gram)的示例代码

这次又造了点新轮子:CNN,有多个版本,主要有5个
💻 CNN 1.0:这个是最基础的版本,仅仅只能卷积一张图,且只能单核卷积
🌱 CNN 2.0:添加了channel的支持,可以输入多通道图像了,也能使用多核,但不能输入一个batch
💬 CNN 3.0:添加了batch

上面三个的写法从代码上看可能有点看不懂,因为我把多核多通道和batch的一系列操作都通过升维后进行了矩阵broadcast,这样可以提升运行速度,但不利于代码学习,于是我又实现了如下版本
🔭 CNN loops:将所有操作全部改写成用loops循环,最高已经达到7层loops,跑起来相当慢,但用了Numba后速度大幅提升
✨ CNN img2col:将前面的写法都摒除,利用img2col函数,把卷积操作转化为matrix multiplication,极大提升了inference速度,据说这也是Keras在用的算法

用CNN和average pooling,结合之前的ANN,可以实现简单但完整的卷积网络了。虽然用了Numba或者img2col后推理速度快了很多,但由于还是在CPU上跑,所以模型和数据稍大一点就很慢了,这样的效果不会适用于实际生产,但造轮子仍然是不错的学习方法。这次没有像之前一样把CNN封装到python库,而是直接在ipynb里,便于直接查看代码进行调试。当然这次也有数学推导,但有点潦草,大家若是需要可以看microsoft的一个教程:https://microsoft.github.io/ai-edu/,写得很好,很推荐!我也是参考这个后才知道的numba和img2col

本项目repo链接:https://github.com/lujiazho/MachineLearningPlayground






评分

参与人数 1大米 +1 收起 理由
Upstairs + 1 赞一个

查看全部评分


上一篇:两步法机器学习
下一篇:写机器学习和数据科学的书,寻求合作者
您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表