极简单cnn对称之美

卷积神经网络cnn的关键函数forward与backward有一种对称之美:

蓝对蓝,黄对黄,如下:

public void forward()

{

//1,第一层卷积,卷积核使用顺序

z1[0] = a0[0] * wcnn[0][0] + a0[1] * wcnn[0][1] + a0[3]* wcnn[0][2] + a0[4]* wcnn[0][3];//0,1,3,4

z1[1] = a0[1] * wcnn[0][0] + a0[2] * wcnn[0][1] + a0[4] * wcnn[0][2] + a0[5] * wcnn[0][3];//1,2,4,5

z1[2] = a0[3] * wcnn[0][0] + a0[4] * wcnn[0][1] + a0[6] * wcnn[0][2] + a0[7] * wcnn[0][3];//3,4,6,7

z1[3] = a0[4] * wcnn[0][0] + a0[5] * wcnn[0][1] + a0[7] * wcnn[0][2] + a0[8] * wcnn[0][3];//4,5,7,8

//2, z1->aI,第二层输入

aI[0] = sigmoid(z1[0]);

aI[1] = sigmoid(z1[1]);

aI[2] = sigmoid(z1[2]);

aI[3] = sigmoid(z1[3]);

//3,第二层卷积,卷积核使用顺序

z2 = aI[0] * wcnn[1][0] + aI[1] * wcnn[1][1] + aI[2]* wcnn[1][2] + aI[3] * wcnn[1][3] ;

aII = sigmoid(z2);

o = aII;

//4

double 偏差 = (1 - o) * (1 - o) * 1 / 2.0;

}


double E偏差zII = 0;

public void backward()

{

//4,E偏导zII =e偏导aII*aII偏导zII

E偏导zII = -(1 - o) * dsigmoid(o); //计算偏差向前传播卷积核

//3,计算w【1】的梯度,第二层,偏差向前传播卷积核->E偏导zII的卷积动作

//E偏导zII *zII偏导w[1]

wcnn的偏差[1][0] = E偏导zII * aI[0];
wcnn的偏差[1][1] = E偏导zII * aI[1];
wcnn的偏差[1][2] = E偏导zII * aI[2];
wcnn的偏差[1][3] = E偏导zII * aI[3];

//2,e偏导z1=e偏导a1*a1偏导z1

double delta11 = E偏导zII * wcnn[1][0]*dsigmoid(aI[0]); //计算偏差向前传播卷积核

double delta12 = E偏导zII * wcnn[1][1]*dsigmoid(aI[1]);

double delta21 = E偏导zII * wcnn[1][2]*dsigmoid(aI[2]);

double delta22 = E偏导zII * wcnn[1][3] * dsigmoid(aI[3]);

//1,计算w【0】的梯度,第一层,偏差向前传播卷积核->delta卷积动作

//e偏导z1 *zI偏导w[0]

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,更新

//w1,第二层的一个卷积核

for (int i = 0; i < 4; i++)

{

wcnn[1][i] = wcnn[1][i] - 常数a * wcnn的偏差[1][i];

}

//w0,第一层的一个卷积核

for (int i = 0; i < 4; i++)

{

wcnn[0][i] = wcnn[0][i] - 常数a * wcnn的偏差[0][i];

}

}

相关推荐
聆风吟º1 小时前
CANN runtime 实战指南:异构计算场景中运行时组件的部署、调优与扩展技巧
人工智能·神经网络·cann·异构计算
Codebee3 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能
聆风吟º4 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
uesowys4 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_56784 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
User_芊芊君子4 小时前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer
智驱力人工智能5 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
qq_160144875 小时前
亲测!2026年零基础学AI的入门干货,新手照做就能上手
人工智能
Howie Zphile5 小时前
全面预算管理难以落地的核心真相:“完美模型幻觉”的认知误区
人工智能·全面预算
人工不智能5775 小时前
拆解 BERT:Output 中的 Hidden States 到底藏了什么秘密?
人工智能·深度学习·bert