论文笔记 Network In Network

摘要: 这篇论文思路简单、易实现、效果好,是一篇难得的佳作。从实现的角度理解,就是做了以下两个替换: 下面我们就来分析引入上述两个替换的妙处。首先分析第一个替换的妙处,替换的效果(图示如下) 论文中提到“The linear convolution is sufficient for abstraction 阅读全文
posted @ 2017-06-08 15:23 everyday_haoguo 阅读(335) 评论(0) 推荐(0) 编辑

论文笔记 Unsupervised Learning by Predicting Noise

摘要: This paper introduces a generic framework to train deep networks, end-to-end, with no supervision. 这篇论文主要围绕以下公式展开, 参数含义如下: n: 样本数 l: Loss函数 fθ: 深度网络 y 阅读全文
posted @ 2017-06-07 16:05 everyday_haoguo 阅读(720) 评论(1) 推荐(1) 编辑

论文笔记 Spatial contrasting for deep unsupervised learning

摘要: 在我们设计无监督学习模型时,应尽量做到 无监督学习的目标是为有监督模型提供初始化的参数,理想情况是“这些初始化的参数能够极大提高后续有监督模型准确率,即使有监督任务的训练样本数很少”。类别理解就是,我们在Imagenet上通过有监督的方式训练得到了表达能力很强的网络,在我们迁移至新的任务时(该任务带 阅读全文
posted @ 2017-06-06 23:07 everyday_haoguo 阅读(280) 评论(0) 推荐(0) 编辑

源码分析 Large-Margin Softmax Loss for Convolutional Neural Networks

摘要: 作者在Caffe中引入了一个新层,一般情况在Caffe中引入一个新层需要修改caffe.proto,添加该层头文件*.hpp,CPU实现*.cpp,GPU实现*.cu,代码结果如下图所示: caffe.proto 作者在caffe.proto中引入了largemargin_inner_product 阅读全文
posted @ 2017-06-06 15:45 everyday_haoguo 阅读(2162) 评论(0) 推荐(0) 编辑

Caffe代码分析--crop_layer.cu

摘要: 因为要修改Caffe crop layer GPU部分的代码,现将自己对这部分GPU代码的理解总结一下,请大家多多指教! crop layer完成的功能(以matlab的方式表示):A(N,C,H,W),Reference(n,c,h,w),Offsets(o1, o2, o3,o4), crope 阅读全文
posted @ 2017-06-04 22:13 everyday_haoguo 阅读(697) 评论(0) 推荐(0) 编辑

GPU编程--Shared Memory(4)

摘要: GPU的内存按照所属对象大致分为三类:线程独有的、block共享的、全局共享的。细分的话,包含global, local, shared, constant, and texture memoey, 我们重点关注以下两类内存 Global memory Global memory resides i 阅读全文
posted @ 2017-06-04 11:12 everyday_haoguo 阅读(1405) 评论(0) 推荐(0) 编辑

GPU编程-Thread Hierarchy(3)

摘要: 1. 如果处理的数据是二维的或者三维的,应该怎么办呢? 针对的,我们可以按照二维或者三维的方式,组织线程。老规矩,先代码、后解释 线程可以一维、二维或者三维的方式,组织成Block,在上述代码中,我们指定有一个Block,这个Block按照NxN的二维结构进行组织。如果N就是矩阵相应的维度,那么上述 阅读全文
posted @ 2017-06-03 21:51 everyday_haoguo 阅读(427) 评论(0) 推荐(0) 编辑

GPU编程--kernels(2)

摘要: 下面举一个真实场景理解一下上述问题:用GPU将一幅图像的每个像素分别减去均值。我们可以将每一个像素影射到一个GPU线程,所有线程并行完成减均值操作。问题来了,“线程”如何区分不同的像素呢?在c语言中又该如何表示这种操作呢? 先代码,后解释 对于假设的场景,我们可以这样做(其参考代码):用<<<1,N 阅读全文
posted @ 2017-06-03 17:25 everyday_haoguo 阅读(849) 评论(0) 推荐(0) 编辑

GPU编程--宏观理解篇(1)

摘要: GPU编程与CPU编程最大的不同可以概括为以下两点: 也就是 例如,我们可以将一幅图像的每个像素都影射到一个线程,该线程完成的功能是减去图像均值,可以想象“一瞬间,整幅图像就完成了减均值操作”。而CPU通常是,逐像素进行减均值操作。 CUDA是英伟达公司推出通用并行计算架构。在此架构下,可以简单理解 阅读全文
posted @ 2017-06-03 16:27 everyday_haoguo 阅读(264) 评论(0) 推荐(0) 编辑