【机器学习】卷积神经网络(四)-实现细节(Caffe框架为例)

六、 实现细节

都有哪些开源的卷积神经网络实现

bc97a0d3a404991bab619c3d2c0b07fa.png

caffe中卷积神经网络各个层(卷积层、全连接层、池化层、激活函数层、内基层、损失层等)

98a1d2c68000b723009f0f4db584fab3.png

Caffe2 与caffe 对比

38a5b5314dfbccfd5c94d8acc3f4287a.png

caffe2 开源吗

e8213a181f2929579c397409e21937d2.png

使用caffe的c++ 版本和python版本,分别适用于哪些场景

b8d9c0e8671dfde11c760cc136ff78ae.png

abd5915605685b9845357afc73b58092.png

6.1 卷积层

8e01c9bfe3b8d9bdb5ec554d46c74ca7.png

在进行预测时,训练时 正向传播区别

c8a4fc911133e03b22bb18a03b828906.png

采用矩阵乘法的优势

2e58c220d95da62efee7eb3e6bbeb407.png

6.2 激活函数

在神经网络中,激活函数通常是将向量中的每个元素独立地映射到一个新的值。这种映射是逐元素(element-wise)的,也就是说,每个元素的新值只取决于该元素的原值。

例如,ReLU(Rectified Linear Unit)激活函数就是一个常见的逐元素映射。它将输入向量中的每个元素x映射到max(0, x),即如果x大于0,就保留x,否则就将x置为0。同样,Sigmoid激活函数也是一个逐元素映射。它将输入向量中的每个元素x映射到1 / (1 + exp(-x)),这样可以将x的值压缩到0和1之间。

b47c1ec9ed8271199e8c1cdb3c799f69.png

e727ed3b98125019df08893e020a3a25.png

5021477b494eac5400bf5d5061b94d00.png6ff3dc37ee7c4d210d0fbd184e668e15.png

7bddbb7be4d37583ed9ca4f35c86a6ce.png

cbd3775091f6483b1441816b88d92147.png

2f290e06c6afdd20b99cfa22ce608db2.png

45d35af735476895fbd69f9335f2e82a.png

09ee625d115a6819621f0e306b01ad50.png

863f111d44715a5eba39423a508bda1e.png

1d94d5e177dea07a56e67cedda9b40c9.png

255e1a50bcc731ebba7bee56aaa8c372.png

e543448b5c4dcec7bde6459677ea619c.png

572f78671f5837c5469508287b111c80.png

26290a3176a6585c6b7afb3bb04a05d3.png

283349238f21a338cc511a4873b6b691.png

aa8c24d64b383a249c493fa0b75166c1.png

b70254fe10cce28a0ade28736bd76470.png

eab389d1934760231eb1adec49785935.png

82e1f8176ae9de660c571068c3609f65.png

958fdb028c2038a148bf02b2ff7ef047.png

68579c8fa38af2c30003000f8e9b6e1d.png

0a98298ef76301d618628739bde3ac53.png

d2351444ee56c0404a10dcaa519693cc.png

7c24d39a8c78858f3d993dffc1a75fb1.png

d2f99c1071cbb58dfae52a82a035661e.png

fa932574b3dad70d4fc2bd04801d8bd4.pngd4e1b596708c5f657598dd2b4a25a84d.png

6.3 内积层

27a4854db4a4ecb6ec6fe08bc77c0d96.png

反向传播是同时对多个样本进行计算的。

6.4 损失层

431083fdefb976175cfaaf2901959a69.png

  • Multinomial Logistic Loss

  • Infogain Loss - a generalization of MultinomialLogisticLossLayer.

  • Softmax with Loss - computes the multinomial logistic loss of the softmax of its inputs. It's conceptually identical to a softmax layer followed by a multinomial logistic loss layer, but provides a more numerically stable gradient.

  • Sum-of-Squares / Euclidean - computes the sum of squares of differences of its two inputs,

bb91b21da3691e13e8f3a1dd7a46c8bf.png

  • Hinge / Margin - The hinge loss layer computes a one-vs-all hinge (L1) or squared hinge loss (L2).

  • Sigmoid Cross-Entropy Loss - computes the cross-entropy (logistic) loss, often used for predicting targets interpreted as probabilities.

  • Accuracy / Top-k layer - scores the output as an accuracy with respect to target -- it is not actually a loss and has no backward step.

  • Contrastive Loss

c6e2de0e91984032b018ee8f760b4870.png

5280a9d7c4dd0ca250a97e3c5ee72d50.png

caffe支持的各种损失函数都适用于哪些场景

549ded6bb6e05ffe478ecefd8d366386.png

6.5 求解器

ea06837a30ae4428563cfc793e2073b4.png

249e9586f1e32ed20cc4c7afaab58baf.png

Caffe 求解器支持哪些优化算法

Stochastic Gradient Descent (type: "SGD"),
AdaDelta (type: "AdaDelta"),
Adaptive Gradient (type: "AdaGrad"),
Adam (type: "Adam"),
Nesterov’s Accelerated Gradient (type: "Nesterov") and
RMSprop (type: "RMSProp")

14467a79ef3c9453d4d02e92c49d0c8d.png

详细介绍caffe支持的优化算法:

回答A

91ce9e2c8f10b34cf48aff2d6eebff5d.png

回答B

71e6d025f3ac093ad92dd24856001aaa.png

回答C

b83946621c936a611108828a747effa5.png

caffe支持的优化算法分别适用于哪些场景

97163d4b2e1c4ac01918bdfa839841ee.png

e188a0eb561ce53d047871fa0a3086d2.png

神经网络的优化中一般使用梯度下降法,而不使用牛顿法这样的二阶优化技术的原因是什么?

a11850d61686ff4313b5ee496db738a9.png

142a22ec3ff9d18db6e1030ad15b4ac4.png

分析参数初始化和动量项对算法的收敛行的影响

0549417afc185de447b356d365a4bc38.png

58d8704a80d3c56619efd2280f9217ee.png

caffe支持的学习率计算策略

380321ce381f2902506b5a3da8d0e3bd.png

学习率是优化算法中的一个重要的超参数,它决定了每次更新权重的步长。学习率的大小会影响优化的速度和效果,一般来说,学习率不能太大,否则会导致优化不稳定或者发散,也不能太小,否则会导致优化过慢或者停滞。因此,合适的学习率计算策略是优化算法的关键。

Caffe 支持以下几种学习率计算策略:

  • 固定(fixed):这是最简单的学习率计算策略,它使用一个固定的学习率,不随着迭代的进行而改变。这种策略适用于那些目标函数比较平滑,不需要动态调整学习率的情况。

  • 步长(step):这是一种常用的学习率计算策略,它根据一个预设的步长,每隔一定的迭代次数,就将学习率乘以一个衰减因子。这种策略适用于那些目标函数比较复杂,需要逐渐降低学习率的情况。

  • 指数(exp):这是一种较为灵活的学习率计算策略,它根据一个预设的指数,每次迭代,就将学习率乘以一个衰减因子的指数。这种策略适用于那些目标函数比较陡峭,需要快速降低学习率的情况。

  • 逆时针(inv):这是一种较为稳定的学习率计算策略,它根据一个预设的幂,每次迭代,就将学习率除以一个增长因子的幂。这种策略适用于那些目标函数比较平缓,需要缓慢降低学习率的情况。

  • 多项式(poly):这是一种较为精确的学习率计算策略,它根据一个预设的幂,每次迭代,就将学习率乘以一个多项式函数的值。这种策略适用于那些目标函数比较复杂,需要根据迭代的进度调整学习率的情况。

  • S型(sigmoid):这是一种较为平滑的学习率计算策略,它根据一个预设的幂,每次迭代,就将学习率乘以一个 S 型函数的值。这种策略适用于那些目标函数比较复杂,需要在初始阶段快速降低学习率,然后在后期阶段缓慢降低学习率的情况。

参考网址:

https://dashee87.github.io/deep%20learning/visualising-activation-functions-in-neural-networks/ Visualising Activation Functions in Neural Networks - dashee87.github.io

https://caffe.berkeleyvision.org/tutorial/layers.html Caffe | Layer Catalogue --- Caffe | 层目录 (berkeleyvision.org)

https://caffe2.ai/docs/caffe-migration.html   What is Caffe2? | Caffe2

https://github.com/pytorch/pytorch pytorch/pytorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration (github.com)

https://github.com/pytorch/examples

https://blog.csdn.net/lliming2006/article/details/76636329 

http://caffe.berkeleyvision.org/doxygen/namespacecaffe.html Caffe中的损失函数_caffe设置损失函数-CSDN博客

https://cloud.tencent.com/developer/article/1670389  caffe详解之损失函数-腾讯云开发者社区-腾讯云 (tencent.com)

https://blog.csdn.net/wuqingshan2010/article/details/71156236  Caffe中求解器(Solver)介绍_solver.compute-CSDN博客

https://zhuanlan.zhihu.com/p/24087905 Caffe入门与实践-简介 - 知乎 (zhihu.com)

https://caffe.berkeleyvision.org/tutorial/solver.html 求解器


The End

正传播向传播的规律

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/314417.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】STL 容器 - map 关联容器 ③ ( map 容器常用 api 操作 | map 容器迭代器遍历 | map#insert 函数返回值处理 )

文章目录 一、map 容器迭代器遍历1、map 容器迭代器2、代码示例 二、map 容器插入结果处理1、map#insert 函数返回值处理2、代码示例 一、map 容器迭代器遍历 1、map 容器迭代器 C 语言中 标准模板库 ( STL ) 的 std::map 容器 提供了 begin() 成员函数 和 end() 成员函数 , 这…

关于发展模式加入变量的问题解决

问题1描述: 编译的时候不报错,但是在运行的时候出错输出 FLDLST: ustar in fincl( 17 ) not found ENDRUN: called without a message string 问题1解决: 这是因为在cas-esm 的atm_in 中写入了某个变量,但是在F90 代码里面没…

MODIS ET 蒸散发数据

MODIS ET 即 MOD16 系列产品,属于MODIS Level4 的产品。 在 LP DAAC - MODIS 上搜索了现存的 ET(Evapotranspiration) 数据: 建议使用最新版本Collection 6.1,也就是结尾是.061的数据集。 在 Collection 6.1 中&…

旅游平台网页前后端

功能清单 游客功能 用户注册、登录登录权限拦截按名称搜索房间支付流程查看订单信息和状态评论预定过的房间,并自动修改订单状态查看统计剩余房间数量,数量为0时不可预定 管理员功能 房间分类管理 类型的删除、修改、查询(准备添加增添功能…

数据库中的时间和前台展示的时间不一样,如何保存日期格式的数据到数据库? 如何展示数据库的日期数据到前台

我 | 在这里 🕵️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 🏠 工作 | 广州 ⭐ Java 全栈开发(软件工程师) ✈️公众号 | 热爱技术的小郑 文章底部有个人公众号二维码。回复 Java全套视频教程 或 前端全套视频教程 即可获取 300G 教程资料…

Springboot整合Elasticsearch 7.X 复杂查询

这里使用Springboot 2.7.12版本&#xff0c;Elasticsearch为7.15.0。 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency> yaml文件配置…

CGAL的空间排序

1、介绍 许多在CGAL中实现的几何算法都是增量的&#xff0c;因此它们的速度取决于插入顺序。此软件包提供了排序算法&#xff0c;可以大大提高此类算法的运行时间。 其基本原理是沿着空间填充曲线对对象进行排序&#xff0c;这样在插入顺序上&#xff0c;几何上接近的两个对象将…

详解协方差矩阵,相关矩阵,互协方差矩阵(附完整例题分析)【2】

目录 一. 写在前面 二. 相关矩阵&#xff08;Correlation Matrix&#xff09; 三. 实战分析 例题1 &#xff08;1&#xff09;均值的关系 &#xff08;2&#xff09;协方差的关系 &#xff08;3&#xff09;小结 例题2 小结 四. 补充 一. 写在前面 有关协方差矩阵和…

学习Vue单文件组件总结

今天主要学习了组件实例对象的一个重要内置关系和单文件组件。先说一下实例对象的内置关系&#xff0c;在这里要对JS中的原型链有一定的基础&#xff0c;Vue构造函数的prototype原型指向的是Vue的原型对象&#xff0c;new出来的Vue实例对__proto__同样指向的是Vue的原型对象&am…

云计算复习提纲

第一章 大数据的概念&#xff1a;海量数据的规模巨大到无法通过目前主流的计算机系统在合理时间内获取、存储、管理、处理并提炼以帮助使用者决策 大数据的特点&#xff1a;①数据量大&#xff0c;存储的数据量巨大&#xff0c;PB级别是常态&#xff1b;②多样&#xff0c;数…

Friedman检验及后续Nemenyi检验可视化

文章目录 Friedman 检验Nemeny检验 合作推广&#xff0c;分享一个人工智能学习网站。计划系统性学习的同学可以了解下&#xff0c;点击助力博主脱贫( •̀ ω •́ )✧ Friedman 检验 弗里德曼检验&#xff08;Friedman test&#xff09;是一种非参数统计检验方法&#xff0c;用…

OSG读取和添加节点学习

之前加载了一个模型&#xff0c;代码是&#xff0c; osg::Group* root new osg::Group(); osg::Node* node new osg::Node(); node osgDB::readNodeFile("tree.osg"); root->addChild(node); root是指向osg::Group的指针&#xff1b; node是 osg:…