Caffe

news2024/11/23 1:01:41

目录

 1、简述    

2、项目起源       

3、架构设计

4、极智AI相关内容


 1、简述    

    Caffe(全称Convolutional Architecture for Fast Feature Embedding)是一个兼具表达性、速度和思维模块化的深度学习框架,由伯克利人工智能研究小组和伯克利视觉和学习中心开发。虽然其内核是用C++编写的,但Caffe有Python和Matlab相关接口。

2、项目起源       

     Caffe是一个深度学习框架,最初开发于加利福尼亚大学伯克利分校。Caffe在BSD许可下开源,使用C++编写,带有Python接口。是贾扬清在加州大学伯克利分校攻读博士期间创建了Caffe项目。项目托管于GitHub,拥有众多贡献者。Caffe应用于学术研究项目、初创原型甚至视觉、语音和多媒体领域的大规模工业应用。雅虎还将Caffe与Apache Spark集成在一起,创建了一个分布式深度学习框架CaffeOnSpark。2017年4月,Facebook发布Caffe2,加入了递归神经网络等新功能。2018年3月底,Caffe2并入PyTorch。

3、架构设计

     

        Caffe 完全开源,并且在有多个活跃社区沟通解答问题,同时提供了一个用于训练、测试等完整工具包,可以帮助使用者快速上手。此外 Caffe 还具有以下特点:

模块性:Caffe 以模块化原则设计,实现了对新的数据格式,网络层和损失函数轻松扩展。

表示和实现分离:Caffe 已经用谷歌的 Protocl Buffer定义模型文件。使用特殊的文本文件 prototxt 表示网络结构,以有向非循环图形式的网络构建。

Python和MATLAB结合: Caffe 提供了 Python 和 MATLAB 接口,供使用者选择熟悉的语言调用部署算法应用。

GPU 加速:利用了 MKL、Open BLAS、cu BLAS 等计算库,利用GPU实现计算加速。

简单来讲,Caffe 中的数据结构是以 Blobs-layers-Net 形式存在。其中,Blobs 是通过 4 维向量形式(num,channel,height,width)存储网络中所有权重,激活值以及正向反向的数据。作为 Caffe 的标准数据格式,Blob 提供了统一内存接口。Layers 表示的是神经网络中具体层,例如卷积层等,是 Caffe 模型的本质内容和执行计算的基本单元。layer 层接收底层输入的 Blobs,向高层输出 Blobs。在每层会实现前向传播,后向传播。Net 是由多个层连接在一起,组成的有向无环图。一个网络将最初的 data 数据层加载数据开始到最后的 loss 层组合为整体。 

4、极智AI相关内容

      caffe 是一个 古老而又优秀的深度学习训练框架,用过 caffe 的大部分都是从业 AI 三四年以上的开发者了。caffe 现在听起来更像 AI 训练框架的上古神兽,现在很多的训练中都不太会用 caffe 了,但它与现在主流的 AI 训练框架却紧密结合 (2017 年 4 月,Facebook 发布 Caffe2,加入了递归神经网络等新功能。2018 年 3 月底,Caffe2 并入了 PyTorch);另外有些场景还是会用到:某些特定硬件部署 (如海思、国产硬件 或 其他一些低算力硬件),这些 "自研推理框架" 大多会 优先 支持 caffe 模型的导入。理由可能也比较简单:(1) 具备规划推理框架的 "大佬", 可能最开始就是用 caffe 的,对此会比较熟悉;(2) caffe 算子定义清晰,使用 google protobuf,具有编译校验功能;(3) caffe 算子粒度大,对推理支持起来比较友好... (当然可能还会有更多原因)。

     大家知道,caffe 的作者是大名鼎鼎的 贾扬清,其同样也是著名框架 tensorflow 的核心开发者,目前是阿里副总裁、阿里达摩院系统AI实验室负责人。

但是,相信很多用过 caffe 的同学,也都会吐槽:caffe 的安装真的是吐血。没错,搭建深度学习环境中有两个堪称麻烦:(1) opencv 源码编译;(2) caffe 的编译安装。关于 caffe 的安装,由于 caffe 推出的时间比较早,且早就不再更新维护了,所以对于一些更新的系统环境上编译 caffe,就可能会遇到各种问题,如在 cudnn8 上编译原生的 caffe,你就会发现编译过不了。但一旦你把 caffe 安装好了,到了使用阶段,你就会发现 caffe 用起来特别方便,甚至都不要求你有编码能力,直接改一些 prototxt 就可以轻松上手训练可用的深度学习模型,而且 caffe 出来的模型,对于模型部署是最友好的。

我本身对于 caffe 也有浓厚的感情,也属于那一批刚学深度学习时用的还是 caffe 的同学。所以我之前也写了挺多关于 caffe 的一些文章,涉及 caffe 的编译安装 (包括适配 cudnn8)、一些 caffe 的算子实现解读等,这里整理了一下:

  • 极智AI | ubuntu cudnn8 源码编译caffe:https://blog.csdn.net/weixin_42405819/article/details/118114026
  • 极智AI | 让 caffe-cudnn8 支持 yolov3:https://blog.csdn.net/weixin_42405819/article/details/118193046
  • 极智AI | 一文看懂 caffe 生成 VOC0712 lmdb 数据集:https://blog.csdn.net/weixin_42405819/article/details/118878863
  • 极智AI | 谈谈 caffe 的 bn 和 scale 算子:https://blog.csdn.net/weixin_42405819/article/details/120418688
  • 极智AI | 谈谈 caffe 的 conv 算子:https://blog.csdn.net/weixin_42405819/article/details/120618607
  • 极智AI | caffe proto 校验模型结构 prototxt 讲解:https://blog.csdn.net/weixin_42

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/418329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小红书热词速看 | 古茗有何营销动作?

【导语】 据古茗官方数据,新系列推出当日即售空,单店最高出杯420杯,最快24小时内卖断货;上架3天,销量突破100万杯;10天,就售出了343万杯,其中2款牛油果奶昔用掉了40万斤牛油果&…

Hadoop完全分布式运行模式配置(开发重点)

目录 Hadoop是一个海量数据存储和计算的框架 Hadoop优点: 3.2 完全分布式运行模式(开发重点) 3.2.1 虚拟机准备 3.2.2 编写集群分发脚本xsync 3.2.3 SSH无密登录配置 3.2.4 集群配置 3.2.5 群起集群 3.2.6 配置历史服务器 3.2.7 配…

SpringBoot【运维实用篇】---- SpringBoot程序的打包与运行

SpringBoot【运维实用篇】---- SpringBoot程序的打包与运行程序打包程序运行SpringBoot程序打包失败处理命令行启动常见问题及解决方案刚开始做开发学习的小伙伴可能在有一个知识上面有错误的认知,我们天天写程序是在Idea下写的,运行也是在Idea下运行的。…

【从零开始学Skynet】基础篇(七):Mysql数据库常用API

在上一篇中我们完成了对Mysql数据库的准备工作之后,这一篇我们写一个程序测试一下。 1、Mysql API 在写程序之前,我们先学习一下Mysql数据库常用API的使用: API说明mysql.connet(args)连接数据库,参数args是一个Lua表&#xff0c…

责任链设计模式(Chain of Responsibility Pattern)[论点:概念、组成角色、图示、相关代码、框架中的运用、适用场景]

文章目录概念组成角色相关图示示例代码框架中的应用适用场景:概念 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,其主要目的是将请求的发送者和接收者解耦。这种模式创建了一系列处理器对象,每个处…

Shell Script

目录Shell Script的概述Shell的主要版本Shell脚本的建立与执行Shell中的变量Shell中的特殊字符通配符双引号倒引号()顺序分隔符(;)管道符逻辑与(&&)和逻辑或(||)…

synchronized原理详解

众所周知,使用多线程可以极大地提升程序的性能,但如果多线程使用不合理,也会带来很多不可控的问题,例如线程安全问题。 什么是线程安全问题呢?如果多个线程同时访问某个方法时,这个方法无法得到我们预期的…

同步FIFO、异步FIFO详细介绍、verilog代码实现、FIFO最小深度计算、简答题

文章目录前言一、多bit数据流跨时钟域传输——FIFO1、FIFO分类2、常见参数3、与普通存储器的区别4、FIFO优缺点二、同步FIFO1、计数器法2、高位扩展法3、单端口和双端口RAM3.1 单端口RAM3.2 双端口RAM4、例化双端口RAM实现同步FIFO三、异步FIFO1、格雷码1.1 二进制和格雷码之间…

spring5(五):AOP操作

spring5(五):AOP操作前言一、代理模式1、场景模拟2、代理模式2.1 概念2.2 静态代理2.3 动态代理二、AOP概述1、什么是 AOP?2、相关术语3、作用三、AOP底层原理1、AOP 底层使用动态代理2、AOP(JDK 动态代理)2.1 编写 J…

VR全景展示,VR全景平台,助理全景展示新模式

引言: VR全景展示是一种新型的展示方式,它利用虚拟现实技术和全景拍摄技术,使参观者可以身临其境地进入虚拟展览空间。这种展示方式不仅能够提供更加沉浸式的参观体验,还可以解决传统展览所面临的时间和地域限制等问题。 VR全景展…

【Java实战篇】Day7.在线教育网课平台

文章目录一、需求:课程审核1、需求分析2、建表与数据模型3、接口定义4、Mapper层开发5、Service层开发6、完善controller层二、需求:课程发布1、需求分析2、建表与数据模型3、技术方案4、接口定义5、消息处理SDK6、Mapper层开发7、Service层开发8、页面静…

unity,射手游戏

文章目录介绍一,制作玩家具体函数脚本PlayerCharacter三、 制作玩家控制脚本 PlayerController,调用上面的函数方法四、 制作子弹脚本 shell五、 给玩家挂载脚本六、 制作坦克脚本七、 给坦克添加组件八、 开始游戏,播放动画九、 下载介绍 3…

seata学习笔记

Seata 官网: https://seata.io/zh-cn/index.html 是什么? Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式…

MySQL中的float类型慎用!慎用!慎用!

在前端输入一串数字后有时候展示值与输入的内容一致,有时候却不一致。经分析,原来是MySQL数据库中字该字段的类型是float,该字段的值超过6位有效数字后就会进行四舍五入截取,举例来说:假设float类型字段的输入值是1234…

十八、MySQL 变量、分支结构IF、CASE...WHEN详解

文章目录一、变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量1.2 用户变量1.2.1 用户变量分类1.2.2 会话用户变量1.2.3 局部变量1.2.4 对比会话用户变量与局部变量二、定义条件与处理程序2.1 案例分析2.2 定义条件2.3 定义处理程序2.4 案例解决三、流程控制3.1 分支结构…

[C++]类与对象下篇

目录 类与对象下篇:: 1.再谈构造函数 2.static成员 3.友元 4.内部类 5.匿名对象 6.拷贝对象时的编译器优化 7.再次理解封装 8.求12...n(不能使用乘除法、循环、条件判断) 9.计算日期到天数的转换 10.日期差值 11.打印日期 12.累加天数 类与对象下篇&…

数据结构与算法七 堆

一 堆 1.1 堆定义 堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。 堆的特性: 它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后…

4月最新编程排行出炉,第一名ChatGPT都在用~

作为一名合格的(准)程序员,必做的一件事是关注编程语言的热度,编程榜代表了编程语言的市场占比变化,它的变化更预示着未来的科技风向和机会! 快跟着一起看看本月排行有何看点: 4月Tiobe排行榜前…

【CSS】使用 固定定位 实现顶部导航栏 ( 核心要点 | 固定定位元素居中设置 | 代码示例 )

文章目录一、核心要点分析1、顶部导航栏要点2、固定定位垂直居中设置二、代码示例一、核心要点分析 实现下图所示功能 : 上方有一个固定导航栏 , 水平居中设置 ;左右两侧各一个广告栏 , 垂直居中设置 ; 1、顶部导航栏要点 顶部导航栏要点 : 使用固定定位 , 上边偏移设置为 0 …

Linux Ubuntu虚拟机下载安装以及初始配置--VMware、Ubuntu、Xshell、Xftp

一、下载准备 Ubuntu系统下载链接(系统本身):官网链接 VMware虚拟机下载链接(搭载Ubuntu系统):网盘链接密码XMKD Xshell下载链接(虚拟机远程连接):官网链接 Xftp下载…