caffe 缺点
优质
小牛编辑
123浏览
2023-12-01
不支持任意数据类型
Caffe大部分数据结构(如Blob、Layer、Net、Solver及其派生类)都是模板类,通过实例化模板参数来支持多种数据类型。
事实上,Caffe只支持float和double两种类型网络,如果创建Blob实例,则会发现缺少Update()计算实现。
Caffe依赖BLAS库实现基本运算,BLAS不支持的数据类型,Caffe同样不支持。
依赖包复杂
卷积层效率不高
架构问题
- 使用C++设计并实现新的Layer,而模型定义仍需要用ProtoBuf描述,二者必须手动实现匹配
- 新增一个层,需要手动实现forward、backward、gradient update三种算法
- 为了支持GPU,需要再手动实现一遍GPU版forward、backward、gradient update
- 新增层需要添加proto描述,如果添加了caffe.proto中的新层id,那么很可能与其他分支冲突
- 只支持单机多卡并行计算,不支持多机多卡分布式计算
- 只支持数据级别并行,不支持模型级别并行
应用场景局限
Caffe从一开始就主要面向计算机视觉、图像分类和识别、目标检测等领域,只考虑图像数据作为输入,而对语音、文本数据支持不好。