caffe源代码
Charel_CHEN
这个作者很懒,什么都没留下…
展开
-
Solver基类
Solver通过Net初始化之后,网络已经建立完成,在这里可以理解为建立了一些列操作图(operations grap)之前在Net、Layer中实现了一些前向反向传播的函数,以及分配内存空间,在Solver中,实现的主要是实质性的网络训练过程,包括正则化,每一层的局部学习率,学习率的衰减,以及数据块data - diff的操作等操作。Solver的核心是Step函数,迭代的训练网络,更...原创 2018-07-28 14:54:57 · 904 阅读 · 0 评论 -
Caffe源代码之卷积层和反卷积层
Caffe源代码之卷积层和反卷积层标签[空格] : Caffe源代码Caffe源代码之卷积层和反卷积层举例Conv_layer头文件Conv_layer源文件BaseConvolutionLayer头文件BaseConvolutionLayer源文件im2col col2im卷积层是深度学习核心中的核心,反卷积网络则是广泛应用于图像分割领域。在Caffe中,卷...原创 2018-08-13 10:47:01 · 1687 阅读 · 0 评论 -
Caffe源代码之池化层
Caffe源代码之池化层池化层(PoolingLayer)在深度学习的结构中占很重要的一部分,其功能是缩小输入特征图的尺度,增大输出特征图的感受野,在有的网络中,通过全局池化层,将二维特征图变成一维特征向量。池化层有两个特点:(1)输出特征图尺度普遍小于输入特征图尺度;(2)池化层并没有可学习的参量,因此,再反向传播的过程中,只需要求输入特征图的梯度(bottom_diff)。下面,我们来看看...原创 2018-08-02 16:20:15 · 1159 阅读 · 0 评论 -
Caffe源代码之SoftmaxWithLoss交叉熵损失函数
SoftmaxWithLoss交叉熵损失函数在Caffe中,SoftmaxWithLoss和Softmax的前向传播基本一样,唯一有点区别的是SoftmaxWithLoss计算了损失值,用于打印在终端。SoftmaxWithLoss继承于Loss基类,Loss基类继承于Layer基类。因此,SoftmaxWithLoss算是Layer基类的孙子类。首先,我们来看一下,Loss类。Los...原创 2018-08-01 23:19:01 · 1723 阅读 · 0 评论 -
Caffe源代码之Softmax前后向传播
Caffe源代码之Softmax前后向传播之前的几个博客介绍了Caffe中,网络训练过程中,数据块怎么存储的、层怎么搭建的、网络怎么进行管理层和数据的、网络怎么进行优化的,接下来几篇博客就集中到某些层上面了,比如说,Softmax层、卷积层、反卷积层、池化层、BN层以及SoftmaxWithLoss层的相关代码了。今天分享Softmax层的代码,在之前的一个博客里面,笔者推到了Softma...原创 2018-07-30 22:58:50 · 618 阅读 · 0 评论 -
Caffe源代码之Net源文件
Net源文件Net源文件之前介绍了头文件,头文件中,主要定义了一些简单的内联函数以及声明一些成员函数,总的来说,Net实现的是网络中的层、层的输入输出变量、层的权重的统一调度(因为变量太多了)#include <algorithm>#include <map>#include <set>#include <string&am原创 2018-07-23 01:08:35 · 674 阅读 · 0 评论 -
Caffe源代码之Net头文件
Net头文件[TOC] 通过Layer以及Blob这两大模块之后,就可以盖楼了, 我们可以这样形象的理解Blob相当于盖楼的材料(砖),Layer相当于大楼中的每一层,Net是这栋大楼了。那么Net怎样的调度Blob、Layer两大模块的呢? 还是一样的,我们先看看,头文件定义了哪些成员函数和成员变量,分别表示个啥玩意#ifndef CAFFE_NET_HPP_...原创 2018-07-22 00:58:34 · 450 阅读 · 0 评论 -
Caffe源代码之Layer基类
Layer基类Layer基网络是是各个层的基类,数据读入层、损失层以及中间的操作层都是继承于Layer的,头文件就是Layer基类的核心部分Layer基类Layer基网络头文件Layer基类源文件总结Layer基网络头文件我们先来看看头文件定义了什么成员函数和变量#ifndef CAFFE_LAYER_H_#define CAFFE_LAYER_...原创 2018-07-21 17:20:28 · 377 阅读 · 0 评论 -
caffe源码阅读之Blob数据块
Blob数据块Blob数据块是Caffe最基本,也是最重要的模块,Blob数据块用来存储每一层数据的输入、输出以及每一层的权值,可以说Blob是Caffe的基石。Blob数据块blob头文件SyncedMemory头文件SyncedMemory源文件Blob源文件blob头文件头文件中,定义了简单的内联函数,以及一些成员变量,最重要的是data_, d...原创 2018-07-21 13:09:20 · 541 阅读 · 0 评论 -
Softmax交叉熵损失函数 反向传播公式推导
Softmax交叉熵损失函数 反向传播公式推导标签(空格分隔): Caffe源代码Softmax交叉熵损失函数: J=−∑i=1Kyiln(zi)zi=exi∑j=1KexjJ=−∑i=1Kyiln(zi)zi=exi∑j=1Kexj\begin{array}{l}J = - \sum\limits_{i = 1}^K {{y_i}\ln ({z_i})} \\{z_i} =...原创 2018-07-28 23:42:57 · 4407 阅读 · 1 评论 -
Softmax 反向传播公式推导
Softmax 反向传播公式推导标签(空格分隔): Caffe源代码Softmax是深度学习最常见的激活函数,能够将输入按照某一维度进行归一化,输出(0, 1)的值Softmax函数形式为: f(xi)=exi∑j=1Kexjf(xi)=exi∑j=1Kexjf({x_i}) = \frac{{{e^{{x_i}}}}}{{\sum\limits_{j = 1}^K {{e^{...原创 2018-07-28 23:08:26 · 4697 阅读 · 4 评论 -
Caffe源代码之SGDSolver更新代码-ApplyUpdate()
Caffe源代码之SGDSolver更新代码-ApplyUpdate()在我之前的博客Solver中,说明了在Solver中怎样进行Step训练、测试、打印结果、保存中间模型以及恢复训练的。但是在Solver基类中,有一个纯虚函数ApplyUpdate(),该函数是用来进行权值更新的,不同的优化器有不同的优化方法 (1)最基础的优化器,随机梯度下降法,单纯的梯度的负方向乘以学习率,作为权重的...原创 2018-07-28 16:14:32 · 980 阅读 · 0 评论 -
temporal segment networks 核心代码
temporal segment networks 核心代码标签(空格分隔): 源码temporal segment networks 核心代码网络结构 prototxt视频图像的读入 video_data_layer网络测试网络结构 prototxt先来看看prototxt网络配置,以光流的为例,prototxt核心部分如下,这里只摘取了,数据输入层和...原创 2018-08-08 20:15:12 · 2234 阅读 · 1 评论