图示全连接层

  • 如上图所示,该全链接层输入n * 4,输出为n * 2,n为batch
  • 该层有两个参数W和B,W为系数,B为偏置项
  • 该层的函数为F(x) = W*x + B,则W为4 * 2的矩阵,B 为 1 * 2 的矩阵

从公式理解全连接层

假设第N层为全连接层,输入为Xn,输出为Xn+1,其他与该层无关的信息可以忽略

  • 该层公式有Xn+1 = Fn(Xn) = W * Xn + B

前向传播

  • 已知Xn,Xn+1 = W * Xn + B, 为前向传播

反向传播

反响传播这里需要求两个梯度,loss 对 W的梯度 和 loss 对 B 的梯度,

  • loss 对 W 的梯度

    • 具体公式如下:
  • loss 对 B 的梯度
    • 具体公式如下:
  • 上面两个梯度都用到了loss 对 该层输出的梯度,所以在这层应该把loss 对该层输入的梯度传递到上一层。
    • 具体公式如下:

caffe中innerproduct的代码

前向传播

这一步在代码里面分为两步:

  • Xn+1 = W * Xn,如下图:

  • Xn+1 = Xn+1 + B,如下图:
  • 和上面推导的一样

反向传播

这里需要求三个梯度,loss 对 W的梯度 ,loss 对 B的梯度, loss 对 Xn的梯度

  • loss 对 W 的梯度

    • 公式:
    • 代码: 
    • 以上公式和推导的公式有点区别,后面加多loss 对W 的梯度,实现的是累积梯度
  • loss 对 B 的梯度
    • 公式:
    • 代码:
    • 以上公式和推导的公式有点区别,后面加多loss 对B 的梯度,实现的是累积梯度
  • loss 对 Xn 的梯度,:
    • 公式: 
    • 代码:
    • 公式和推导的并无区别

caffe源码 全连接层的更多相关文章

  1. caffe之(四)全连接层

    在caffe中,网络的结构由prototxt文件中给出,由一些列的Layer(层)组成,常用的层如:数据加载层.卷积操作层.pooling层.非线性变换层.内积运算层.归一化层.损失计算层等:本篇主要 ...

  2. caffe怎么把全连接层转成convolutional层

    caffe中有把fc层转化为conv层的,其实怎么看参数都是不变的,对alex模型来说,第一个fc层的参数是4096X9216,而conv的维度是4096x256x6x6,因此参数个数是不变的,只是需 ...

  3. caffe源码 池化层 反向传播

    图示池化层(前向传播) 池化层其实和卷积层有点相似,有个类似卷积核的窗口按照固定的步长在移动,每个窗口做一定的操作,按照这个操作的类型可以分为两种池化层: 输入参数如下: 输入: 1 * 3 * 4 ...

  4. Caffe源码阅读(1) 全连接层

    Caffe源码阅读(1) 全连接层 发表于 2014-09-15   |   今天看全连接层的实现.主要看的是https://github.com/BVLC/caffe/blob/master/src ...

  5. caffe源码 卷积层

    通俗易懂理解卷积 图示理解神经网络的卷积 input: 3 * 5 * 5 (c * h * w) pading: 1 步长: 2 卷积核: 2 * 3 * 3 * 3 ( n * c * k * k ...

  6. caffe中全卷积层和全连接层训练参数如何确定

    今天来仔细讲一下卷基层和全连接层训练参数个数如何确定的问题.我们以Mnist为例,首先贴出网络配置文件: name: "LeNet" layer { name: "mni ...

  7. caffe源码阅读

    参考网址:https://www.cnblogs.com/louyihang-loves-baiyan/p/5149628.html 1.caffe代码层次熟悉blob,layer,net,solve ...

  8. caffe源码学习

    本文转载自:https://buptldy.github.io/2016/10/09/2016-10-09-Caffe_Code/ Caffe简介 Caffe作为一个优秀的深度学习框架网上已经有很多内 ...

  9. Caffe源码中caffe.proto文件分析

    Caffe源码(caffe version:09868ac , date: 2015.08.15)中有一些重要文件,这里介绍下caffe.proto文件. 在src/caffe/proto目录下有一个 ...

随机推荐

  1. sk_buff结构--转载

    套接字缓存之sk_buff结构 https://www.cnblogs.com/wanpengcoder/p/7529486.html 来此此处 sk_buff结构用来描述已接收或者待发送的数据报文信 ...

  2. Redis分布式锁的正确使用与实现原理

    模拟一个电商里面下单减库存的场景. 1.首先在redis里加入商品库存数量. 2.新建一个Spring Boot项目,在pom里面引入相关的依赖. <dependency> <gro ...

  3. python分类

    python是一种动态解释性的强类型语言. python下分几个类别,分别是cpython,jypython,ironpython,pypy等等,这些属于不同的解释器,但编写规范只有一个就是pytho ...

  4. docker下启动单机nacos

    docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server 参数说明: MODE standalo ...

  5. 网络系列之 jsonp 百度联想词

    jsonp 可以跨域,ajax 不可以,ajax 会受到浏览器的同源策略影响,何为同源策略? 同源策略就是,如果 A 网站 想拿 B网站里的资源, 那么 有三个条件, 你得满足才能拿. 第一个:域名相 ...

  6. 统计API调用次数

    使用redis的有序集合, Zincrby https://redis.io/commands/zincrby 使用的symfony框架的这个方法,会返回接口名称 $request->getPa ...

  7. kube-flannel.yml 文件

    ---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: flannelrules: - api ...

  8. Linux中的基本命令无法使用,报Command not found的错误的解决方法

    一般我们在Linux中执行命令的时候,会报 Command not found 的错误,报这种错误一般有两种原因:一是你的系统中没有安装这个命令,需要你手动安装,另外一种原因就是平常这些命令用着好好的 ...

  9. Windows10通过NFS挂载linux目录

    大致分为以下三大步骤: 一.启动NFS服务器 二.启动NFS客户端 三.挂载NFS目录 工具: win10.虚拟机Ubuntu18.0系统 一. 启动linux的NFS服务端: 以下均为Ubuntu操 ...

  10. SpringBoot 整合邮件oh-my-email 实现发送邮件功能

    导读 最近手头上要负责整个Message Gateway服务的搭建,涉及到:微信推送(点我直达).短信.邮件等等,到github上发现有个微型的开源邮件框架,整理下来,以备项目中使用到,到时候应该会使 ...