背景
2022年惊讶的发现,当时竟然没有写关于softmax的笔记,因此来补充一下。
proto
还是先看proto
1 2// Message that stores parameters used by SoftmaxLayer, SoftmaxWithLossLayer 3message SoftmaxParameter { 4 enum Engine { 5 DEFAULT = 0; 6 CAFFE = 1; 7 CUDNN = 2; 8 } 9 optional Engine engine = 1 [default = DEFAULT]; 10 11 // The axis …
阅读更多背景
虽然不太care 训练的过程,
但是由于容易看懂的layer都看得差不多了所以打算看一下这些loss function.Euclidean Loss (L2 loss)
L2 loss.png (图片已丢失: voT7jGEF1BabmpL.png)
一般用于“real-valued regression tasks” 。 比如之前的项目上用的人脸年龄模型,就是用了这个Loss
阅读更多背景
最近在魔改 tensorRT 的caffe parser 之前caffe模型转到trt模型时,有一个修改是需要将reshape layer的param末尾补1,比较繁琐,于是看了下caffe的reshape layer的实现.
阅读更多caffe中卷积运算的实现
暴力实现的卷积大概是这样子的
1 2for w in 1..W 3 for h in 1..H 4 for x in 1..K 5 for y in 1..K 6 for m in 1..M 7 for d in 1..D 8 output(w, h, m) += input(w+x, h+y, d) * filter(m, x, y, d) 9 end 10 end 11 end 12 end 13 end 14end这种方式的效率显然很低,不意外地,caffe中 …
阅读更多在看过caffe代码的三个核心部分,blob,layer,net之后,陷入了不知道以什么顺序继续看的困境。
blob,layer,net只是三个最基本的概念,关键还是在于各个layer. 但是layer这么多,要怎么看呢? 想了一下决定把相同作用的layer放在一起分析。 今天打算先分析一下激活函数。
阅读更多layer 整体介绍
layer是模型计算的基本单元 类似于pytorch或者其他深度学习框架的op layer中的数据流向为,输入若干个blob,称之为"bottom blob",然后经过layer的计算,输出若干个blob,称之为"top blob"
阅读更多迫于生计,开始看caffe代码。 会侧重于分析inference部分。
blob 整体介绍
blob的含义及目的
blob在逻辑上表示的就是所谓的tensor,blob是tensor在caffe中的叫法。 在框架层面上,blob的意义在于对数据进行封装,提供统一的接口。 这里的数据包含训练/inference时用的数据,也包含模型参数,导数等数据。 深度学习离不开在GPU上的计算。 blob对数据的封装使得用户不必关心和cuda有关的数据传输细节。
阅读更多