C++实现:三层神经网络前向与反向传播算法代码详解
dsigmoid(double x) { return x * (1 - x); } void init() {//参数初始化 for (int i = 0; i < nx; i++) { x[i].val = 0; x[i].bias = ((rand() % 1000) - 500) / 10000.0; for (auto &w : x[i].weight) { w = ((rand() % 1000) - 500) / 10000.0; } } for (int i = 0; i < nb; i++) { b[i].val = 0; b[i].bias = ((rand() % 1000) - 500) / 10000.0; for (auto &w : b[i].weight) { w = ((rand() % 1000) - 500) / 10000.0; } } for (int i = 0; i < ny; i++) { y[i].val = 0; y[i].bias = ((rand() % 1000) - 500) / 10000.0; for (auto &w : y[i].weight) { w = ((rand() % 1000) - 500) / 10000.0; } } } void forward_propagation() {//前向传播 for (int i = 0; i < nb; i++) { double sum = 0; for (int j = 0; j < nx; j++) { sum += x[j].val * x[j].weight[i]; } b[i].val = sigmoid(sum + b[i].bias); } for (int i = 0; i < ny; i++) { double sum = 0; for (int j = 0; j < nb; j++) { sum += b[j].val * b[j].weight[i]; } y[i].val = sigmoid(sum + y[i].bias); } } void back_propagation() {//反向传播 for (int i = 0; i < ny; i++) { g[i] *= dsigmoid(y[i].val); } for (int i = 0; i < nb; i++) { e[i] = 0; for (int j = 0; j < ny; j++) { e[i] += g[j] * y[j].weight[i]; } e[i] *= dsigmoid(b[i].val); } for (int i = 0; i < ny; i++) { for (int j = 0; j < nb; j++) { y[i].weight[j] += eta * g[i] * b[j].val; } y[i].bias += eta * g[i]; } for (int i = 0; i < nb; i++) { for (int j = 0; j < nx; j++) { b[i].weight[j] += eta * e[i] * x[j].val; } b[i].bias += eta * e[i]; } } void train() { // 训练代码,根据需要进行实现 } int main() { init(); train(); return 0; } ######[AI写代码神器 | 1309点数解答 | 2024-09-06 08:46:09]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)226
- 苍溪县“剑网2025”行动:六大领域打击侵权盗版,未来多举措深化版权保护 (百度文心 | 861点数解答 | 2025-07-07 15:15:14)132
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)457
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)354
- Python切片操作巧解经典算法:二维数组90°旋转(阿里通义 | 205点数解答 | 2023-10-31 11:05:29)333
- 揭秘iOS开发:常用算法大集合,提升应用性能与体验!(阿里通义 | 246点数解答 | 2023-11-08 00:43:08)288
- 深入解析:Vue2.x与Vuex3.x渲染器的Diff算法奥秘(阿里通义 | 222点数解答 | 2023-11-09 01:35:41)361
- 突破 long 范围限制:用 BigInteger 类实现超大数字竖式乘法运算( | 555点数解答 | 2024-03-17 10:56:49)363
- 超范围数字乘法:字符串转数组+模拟竖式运算的实现攻略( | 377点数解答 | 2024-03-17 10:58:21)364
- Java 实现:突破 long 范围限制,模拟竖式运算处理大数字乘法( | 14点数解答 | 2024-03-17 10:58:39)342