news 2026/4/3 2:48:21

对比多线程与batch(在极简单cnn上操作)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
对比多线程与batch(在极简单cnn上操作)

batch,从学习dos时,就认识了这个单词,它叫做批处理!

现在我发现他与并行或多线程是有差别的!

我们前头所有程序凡是用到batch,均是如下操作,比如batch=3:

输入一张图片,forward一次,backward一次

再输入一张图片,forward一次,backward一次,梯度累加第一次

再输入一张图片,forward一次,backward一次,梯度累加第二次

好batch=3了,我们更新一次每层的权值:

在我们极简cnn上体现如下:

for(batch=0;batch<3;batch++)

{

wcnn的偏差[1][0] += E偏导zII * aI[0];//梯度累加3次
wcnn的偏差[1][1] += E偏导zII * aI[1];
wcnn的偏差[1][2] += E偏导zII * aI[2];
wcnn的偏差[1][3]+=E偏导zII * aI[3];

}
————————————————

for(batch=0;batch<3;batch++)

{//梯度累加3次

wcnn的偏差[0][0] += delta11*a0[0] + delta12*a0[1] + delta21*a0[3] + delta22*a0[4];//0,1,3,4
wcnn的偏差[0][1] += delta11*a0[1] + delta12*a0[2] + delta21*a0[4] + delta22*a0[5];//1,2,4,5
wcnn的偏差[0][2] += delta11*a0[3] + delta12*a0[4] + delta21*a0[6] + delta22*a0[7];//3,4,6,7
wcnn的偏差[0][3]+=delta11*a0[4] + delta12*a0[5] + delta21*a0[7] + delta22*a0[8];//4,5,7,8

}

————————————————

//0,上面batch执行了三次,但更新只执行一次

//w1,第二层的一个卷积核
for (int i = 0; i < 4; i++)//卷积核执行更新一次
{
wcnn[1][i] = wcnn[1][i] - 常数a * wcnn的偏差[1][i]/3;
}

//w0,第一层的一个卷积核
for (int i = 0; i < 4; i++)//卷积核执行更新一次
{
wcnn[0][i] = wcnn[0][i] - 常数a * wcnn的偏差[0][i]/3;
}

以上就是我们的批梯度下降法,而多线程怎么做呢?

假定我们也开启三个线程,每个线程处理一幅图片,关键是这个线程动作是并发的!

如果说上面batch处理是一个人,轮流做了3次

而线程是3个人,每个人做一次!这就是多线程并发的好处,人多力量大,速度还快!

每个线程只做一次:

wcnn的偏差[1][0] += E偏导zII * aI[0];//梯度累加3次
wcnn的偏差[1][1] += E偏导zII * aI[1];
wcnn的偏差[1][2] += E偏导zII * aI[2];
wcnn的偏差[1][3]+=E偏导zII * aI[3];

以及:

wcnn的偏差[0][0] += delta11*a0[0] + delta12*a0[1] + delta21*a0[3] + delta22*a0[4];//0,1,3,4
wcnn的偏差[0][1] += delta11*a0[1] + delta12*a0[2] + delta21*a0[4] + delta22*a0[5];//1,2,4,5
wcnn的偏差[0][2] += delta11*a0[3] + delta12*a0[4] + delta21*a0[6] + delta22*a0[7];//3,4,6,7
wcnn的偏差[0][3]+=delta11*a0[4] + delta12*a0[5] + delta21*a0[7] + delta22*a0[8];//4,5,7,8

最后我们要判断线程结束了

比如说:if(线程1执行完成&&线程2执行完成&&线程3执行完成==1),再执行:

for (int i = 0; i < 4; i++)//卷积核执行更新一次
{
wcnn[1][i] = wcnn[1][i] - 常数a * wcnn的偏差[1][i]/3;
}

//w0,第一层的一个卷积核
for (int i = 0; i < 4; i++)//卷积核执行更新一次
{
wcnn[0][i] = wcnn[0][i] - 常数a * wcnn的偏差[0][i]/3;
}

这样看来,多线程会比批处理batch快很多!比如开启10个线程时,差别会更大!

以后,我的程序会超这个方向改进!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/25 10:18:49

6大场景下YashanDB数据库的性能调优实用技巧

如何优化数据库查询速度&#xff0c;是影响企业信息系统响应能力和用户体验的关键因素。YashanDB作为一款支持单机、分布式和共享集群多种部署模式的数据库产品&#xff0c;其性能调优覆盖了数据存储、执行计划生成、缓存管理、事务处理等多个层面。针对典型的业务场景进行性能…

作者头像 李华
网站建设 2026/3/30 18:07:59

四种方法教你一键把PDF文件转换为可编辑的Excel表格

分享四种具备相关功能的PDF转换工具&#xff0c;能够批量转换PDF&#xff0c;使用户较快获取格式规整且可编辑的表格&#xff0c;便于后续操作。1. 通过『Adobe Acrobat Pro』将PDF转换成Excel一款常见的PDF编辑工具&#xff0c;不仅支持PDF编辑、创建、合并、导出等多种功能&a…

作者头像 李华
网站建设 2026/3/15 1:19:24

阿里开源的Mobile-Agent:让AI帮你操作手机电脑,这个工具太强了

Mobile-Agent&#xff1a;让AI帮你操作手机电脑&#xff0c;这个工具太强了&#xff01;想象一下&#xff0c;你只需要说一句话&#xff0c;AI就能帮你完成手机上所有的操作——打开微信、搜索内容、保存笔记、甚至帮你订机票。这不是科幻电影&#xff0c;而是阿里巴巴通义实验…

作者头像 李华
网站建设 2026/3/31 6:46:34

视程空间凭借着人工智能驱动的效能-重新定义视觉

视程空间凭借着人工智能驱动的效能&#xff0c;在国际上重新定义了专业视听和直播视程空间重磅发布全新视频采集、视频转换、视频串流及人工智能分析系列旗舰产品。聚焦专业广播产业数字化升级需求&#xff0c;以尖端技术构建核心竞争力&#xff0c;通过更高效的处理能力、更低…

作者头像 李华
网站建设 2026/3/31 8:25:58

如何卸载/更新Mac上的R版本

Mac上的R版本还是四五年前的老版本&#xff0c;最近发现很多函数包都不支持&#xff0c;想更新电脑上的R版本&#xff0c;担心电脑R装的版本太多会互相冲突&#xff0c;并且留下很多冗余的垃圾&#xff0c;查询教程后整理如下&#xff0c;方便以后使用。 如果您想升级旧版本的 …

作者头像 李华