-
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 15 这种方式的效率显然很低,不意外地,caffe中并不是这样实现的. 注释里面说: Caffe convolves by reduction to matrix …
Read More -
背景是要把某个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 argument) …
Read More -
在看过caffe代码的三个核心部分,blob,layer,net之后,陷入了不知道以什么顺序继续看的困境。 blob,layer,net只是三个最基本的概念,关键还是在于各个layer. 但是layer这么多,要怎么看呢? 想了一下决定把相同作用的layer放在一起分析。 今天打算先分析一下激活函数。 sigmoid 表达式为 f(t) = 1/(1+e^-t) caffe GPU实现,非常直接 1 2template <typename Dtype> 3__global__ void SigmoidForward(const int n, const Dtype* in, Dtype* out) { 4 …
Read More -
背景 2019年对了好几次faster rcnn,第一次是赛事之窗项目和北京的同事,对齐sdk和训练的实现。 第二次是被tensorRT4和tensorRT5之间默认参数不一致的问题坑了一下。 第三次是被caffe proto中roi align 的默认参数坑了。 虽然debug了这么多次,踩了一堆坑,但是一段时间不用,细节就会慢慢不记得了。因此来记录一下。 faster rcnn,是一种"two stage"的目标检测算法。 所谓"two stage",是说在实际进行目标检测之前,先会通过某种"region proposals" algorithm,来获得一定数量 …
Read More -
背景 基于Conv的方法在某年的ImageNet比赛上又重新被人想起之后,大家发现网络堆叠得越深,似乎在cv的各个任务上表现的越好。 然而事情当然没有无脑退跌深度那么简单,人们发现,当网络深到一定程度时,结果还不如浅一些的网络结构。 可能第一反应是,网路那么深,多了那么多参数,有那么多数据吗? overfit了吧 然而情况没有那么简单。如果只是单纯得overfit,那么应该只有test error很高才对。然而现在的情况是training error也很高。 那这是怎么回事呢? Resnet的团队认为,是因为深层的网络在训练的时候很难收敛。 这个想法是有依据的,因为我们可以通过构造一个较深的网络结构,使得后面的layer学成一 …
Read More -
名词说明 CUDA. 一般来说指的是CUDA SDK. 目前经常使用的是CUDA 8.0和CUDA 10.1两个版本. 8.0和10.1都是SDK的版本号. CUDNN. The NVIDIA CUDA® Deep Neural Network library (cuDNN). 是一个可以为神经网络提供GPU加速的库 compute capability. 是GPU的固有参数,可以理解为GPU的版本.越新的显卡该数值往往越高. tensorRT.NVIDIA TensorRT™ is an SDK for high-performance deep learning inference. 是一个深度学习推理库,旨在提供高性能的推理 …
Read More -
背景 CSAPP:3e第四章配套的实验。 第四章是讲处理器架构的,章节的重点是实现一个六阶段流水线。 lab的内容也是,需要实现一个Y86-64的流水线,并进行性能调优。 准备工作 材料里面sim.tar解压之后,有可能是没办法编译通过的。 原因是tk(a windowing toolkit )在8.5版本的时候废弃了某个接口,与8.6版本不兼容。 因此需要安装tk 8.5或者更低的版本。 在archlinux/manjaro下可以通过aur安装tk85. use tk<=8.5,8.6 or above will not compile Modify the corresponding header file in …
Read More -
2020 to do List
Feb 21, 2020 · 1 min read就..终于再次出现了to do list. 原因是之前一直不知道如何置顶文章.... 竟然一下子就2020年了... 学习模型量化 学习onnx CSAPP(随缘 ai system 课程
Read More -
背景 CSAPP 处理器那章快看完了,猛然发现竟然还有个attacklab.. 之前以为每一章只有一个lab 这个lab是教大家如何找到程序的漏洞并实施攻击。 知道如何实施攻击,才能更好地写出安全的代码。 包含5个phase 前三个没有什么保护措施,栈地址是固定的,可以注入可执行代码,比较容易. 后两个加了随机栈地址以及栈上地址不可执行的保护措施,需要用Return-oriented_programming 的方式搞定. phase 1 第一个比较简单,利用buffer overflow 来将函数的返回地址,替换成一个已知函数的地址,达到执行特定函数的目的。 回忆一下函数调用的机器代码实现,需要先把函数的返回地址压栈,然后开辟栈空 …
Read More -
背景 疫情肆虐,在家百无聊赖,于是开始拆炸弹. 炸弹分为6个阶段,每个阶段必须输入一个特定的字符串,否则炸弹就会爆炸. 提供给我们的是一个.c文件和一个linux可执行文件bomb 1 2/*************************************************************************** 3* Dr. Evil's Insidious Bomb, Version 1.1 4* Copyright 2011, Dr. Evil Incorporated. All rights reserved. 5* 6* LICENSE: 7* 8* Dr. Evil …
Read More