前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大作业:二分类并发解决方案

大作业:二分类并发解决方案

作者头像
平凡的学生族
发布2019-05-25 09:56:00
3510
发布2019-05-25 09:56:00
举报
文章被收录于专栏:后端技术后端技术后端技术

1. 报告要求

  • 并行化
  • 提高运行速度
  • 突显cache友好
  • 对比实验
  • 对关键步骤描述算法

2. 初步草案

  1. 选择实现语言。我选择了较为熟悉的python作为编程语言。因为python的库numpy在底层调用c与fortran,并且采用优化过的算法,因此在矩阵运算方面速度极高
  2. 选择预测方法。由于要突显cache友好,且实现并行化,我认为logistic regression能符合要求。
  3. 选择训练方式。训练方式不外乎三种:BGD, mini BGD, SGD。其中SGD在运行中占用的内存最小(每次处理一组数据即可)。因此,我将会对三种训练方式进行考察,并着重观察SGD
  4. 选择并行化的解决方案。使用python内置的multiprocessing库即可。并验证按参数并行运算分批并行运算的速度比较。

3. 并行化解决方案

3.1 按参数并行运算

梯度计算函数

def compute_sum(parameters, result, data_array, theta, number_of_examples):
    for parameter in parameters:  # [n, n+1, n+2, ..., m]
        summition = 0
        for sample in data_array:
            # (hypothesis - real_value) * feature_i
            summition += (hypothesis(sample[:-1], theta) - sample[-1]) * sample[parameter]
        result[parameter] = summition / number_of_examples  # gradient for feature_i

运行结果:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.07.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 报告要求
  • 2. 初步草案
  • 3. 并行化解决方案
    • 3.1 按参数并行运算
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档