背景
公司内部的基于torch的toolbox发现某个版本之后,结果发生了偏移. 通过一系列排查,发现当导入cupy和torch的顺序不同时,计算结果会有所差异。 也就是说,如下两段代码会导致模型训练等环节的计算得到不同的结果.
阅读更多背景
需要使用bazel build onnxruntime
但是onnxruntime本身没有提供bazel相关的配置
作为单独的repo
将onnxruntime的包下载下来解压
主要的坑点在于动态库必须写全版本号,不然无法成功导入 完整的BUILD.bazel文件为
阅读更多背景
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 …
阅读更多背景
怎么算微分。。通常有三种方法。
- Symbolic Differentiation
- Numerical Differentiation
- Automatic Differentiation (auto diff)
c8589036cb6d845eb07a05441e2d32f8.md.png (图片已丢失: c8589036cb6d845eb07a05441e2d32f8.md.png)
7f409550ef544562ea67816c7a884fcb.md.png (图片已丢失: 7f409550ef544562ea67816c7a884fcb.md.png)
auto diff中两种主流的方式分别是forward-mode …
阅读更多迫于生计,从今天开始学习推荐系统相关的内容,今天先来读一篇推荐系统领域的综述 Toward the next generation of recommender systems: a survey of the state-of-the-art and possible extensions
由于目前的工作其实是偏向推荐系统的serving,训练的开发,因此这些paper可能都是粗读,也不会把paper中的内容逐句翻译,而是找出我认为最为重要的一些概念加以记录。
阅读更多写在前面
主要是需要在jetson nano做模型转换,来记录下踩的坑 目前有两条路径,一条是我们现有的转换路径,也就是pytorch->onnx(->caffe)->trt的路径 在这条路径上踩了比较多的坑,最终暂时放弃,最直接的原因是cudnn8.0升级接口发生改动,编译caffe遇到较多问题 这里其实仍然采用了两条平行的路径,一条是直接在nano上构建环境,另外一种是基于docker(包括构建交叉编译环境用于加快编译速度)
阅读更多先写个简略版的笔记..看之后的情况要不要读得更精细一点..
背景
two stage的检测比one stage的检测效果好,原因是啥?
作者认为是正负样本不平衡导致的. two stage的方法在proposal 的时候干掉了大部分负样本,所以效果好.
阅读更多背景
虽然不太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 model,转换成tensorrt的INT8 模型。 然后遇到如下报错:
1 2E0403 08:54:35.951987 5704 engine.h:62] engine.cpp (572) - Cuda Error in commonEmitTensor: 1 (invalid argument) 3E0403 08:54:35.952157 5704 engine.h:62] Failure while trying to emit debug blob. 4engine.cpp (572) - Cuda Error in commonEmitTensor: 1 (invalid …
阅读更多在看过caffe代码的三个核心部分,blob,layer,net之后,陷入了不知道以什么顺序继续看的困境。
blob,layer,net只是三个最基本的概念,关键还是在于各个layer. 但是layer这么多,要怎么看呢? 想了一下决定把相同作用的layer放在一起分析。 今天打算先分析一下激活函数。
阅读更多背景
2019年对了好几次faster rcnn,第一次是赛事之窗项目和北京的同事,对齐sdk和训练的实现。 第二次是被tensorRT4和tensorRT5之间默认参数不一致的问题坑了一下。 第三次是被caffe proto中roi align 的默认参数坑了。
阅读更多背景
基于Conv的方法在某年的ImageNet比赛上又重新被人想起之后,大家发现网络堆叠得越深,似乎在cv的各个任务上表现的越好。
然而事情当然没有无脑退跌深度那么简单,人们发现,当网络深到一定程度时,结果还不如浅一些的网络结构。
阅读更多