1、深度学习框架介绍几个相对出名的框架CaffeTheanoLasagneTensorFlowKerasMXNetTorch与PytorchCaffe优点 第一个主流的工业级深度学习工具。在计算机视觉领域Caffe依然是最流行的工具包。很多常用论文的网络拥有caffe实现 网络结构定义简单,网络则使用Protobuf定义 缺点:1)它有很多扩展,但是由于一些遗留的架构问题,不够灵活且对递归网络和语言建模的支持很差。2)基于层的网络结构,其扩展性不好,对于新增加的层,需要自己实现(forward,backward and gradient update)Caffe的全称应该是Convolutiona
2、l Architecture for Fast Feature Embedding,它是一个清晰、高效的深度学习框架,它是开源的,核心语言是C+,它支持命令行、Python和Matlab接口,它既可以在CPU上运行也可以在GPU上运行。实现模块化。Theano优点 相对灵活 正确使用的话性能较好缺点 陡峭的学习曲线 大量的底层 API 编译复杂符号图的时候可能会很慢Theano 不仅仅是一个可以独立使用的库,它还是我们下面介绍的很多框架的底层数值计算引擎;它来自蒙特利尔大学 MILA 实验室,由 Frdric Bastien 最早创建。Theano 提供的 API 相对底层,因此如果你希望高效
3、运行 Theano,你必须对它的底层算法非常熟悉。如果你拥有丰富的机器学习理论知识与经验,并且你希望对于自己的模型有细粒度的控制或者自己动手创建新的模型,那么 Theano 是个不错的选择。总结而言,Theano 最大的优势就是其灵活性。Lasagne优点 还是比较灵活的 比 Theano 提供了更高层的抽象接口 文档与代码更为条理清晰缺点 社区并不是很活跃鉴于 Theano 着重打造面向符号数学的工具库,Lasagne 提供了基于 Theano 的相对高层的抽象,使它对于偏向工程的深度学习开发者更为友好。它最早由 DeepMind 的研究学者 Sander Dieleman 开发与维护。不同
4、于 Theano 中网络模型需要指定为符号变量的表达式,Lasagne 允许用户以层的概念来定义网络,并且引入了所谓的“Conv2DLayer”与“DropoutLayer”。Lasagne 以牺牲部分灵活性为代价提供了常用的组件来进行层构建、初始化、模型正则化、模型监控与模型训练。TensorFlow优点由 Google 支持社区很繁荣同时提供了底层与高层的网络训练接口,还要tflearn,tfslim上层接口比 Theano 提供了更高层的抽象接口比 Theano 能够更快地训练模型缺点对 RNN 的支持度仍然落后于 Theano一开始的时候性能不是很好,但已经有所改进使用数据流图进行数值
5、计算的开源软件库。TensorFlow 集成了类似于 Theano 这样底层的符号计算功能,也包含了类似于 Blocks 或者 Lasagne 这样的高层 API。尽管 TensorFlow 登上 Python 深度学习库的时间尚短,但是它已经成为了最受瞩目、社区最为庞大的工具。TensorFlow 由 Google 大脑团队发布并且维护,它支持多 GPU 的机器学习模型,提供了高效的数据管道以及内建的用于审视、可视化以及序列化模型的功能。最近 TensorFlow 团队决定添加对于 Keras 的内建支持,使得 TensorFlow 具备更好的可用性。尽管社区都认同 TensorFlow 是
6、有缺陷的,但是因为其社区的庞大与项目背后支持力量,学习 TensorFlow 会是个不错的选择;。Keras优点 你可以自由选择使用 Theano 或者 TensorFlow 直观,高级的接口 相对简单的学习曲线缺点 与其他相比灵活性略差支持卷积神经网络,循环神经网络的 Python 深度学习库,能够运行在 Theano 或者 TensorFlow 之上。Keras 算是这个列表中提供了最高层接口、用户使用最友好的深度学习库了。它由 Google 大脑团队的 Francis Chollet 创建与维护;它允许用户自由选择底层模型构建框架,可以是 Theano 或者 TensorFlow。Ker
7、as 的用户交互借鉴了 Torch,如果你有基于 Lua 进行机器学习的经验,Keras 会是很值得一试的工具。因为 Keras 完善的文档与简单易用的接口,Keras 的社区非常繁荣与活跃。最近,TensorFlow 团队宣布计划将内建支持 Keras,因此不久的将来 Keras 会是 TensorFlow 项目的子集了吧。MXNet优点 相当快的评测结果 彻底的灵活性缺点 社区最小 比 Theano 更陡峭的学习曲线MXNet 致力于提供兼顾性能与灵活性的深度学习框架。作为 Amazon 的钦定深度学习框架,MXNet 也算是性能最好的深度学习框架之一了。它提供了类似于 Theano 与
8、TensorFlow 的数据流图,并且支持多 GPU 配置,提供了类似于 Lasagne 与 Blocks 的相对高阶的模型构建块,还能运行在多种硬件设备上(包括移动设备)。Python 只是 MXNet 支持的多种语言之一,它还提供了基于 R,Julia,C+,Scala,Matlab 以及 JavaScript 的多种接口。如果你专注于效率,那么 MXNet 是个不二选择,不过你可能会要让自己习惯 MXNet 中很多的奇怪设定。Pytorch与torch优点 由 Facebook 支持与维护 支持动态图计算 同时提供了高层接口与底层接口 代码逻辑很PYTHON缺点 与竞争者相比还不成熟 除
9、了官方文档之外的相关资料尚处于短缺支持强力 GPU 加速的 Python Tensor 与 动态神经网络库。PyTorch 问世不过数周,在我们的深度学习框架列表中尚属新生儿。虽然 PyTorch 主要基于 Lua Torch,但是它是由 Facebook 人工智能研究团队(FAIR)支持的,并且它设计初衷就是用来处理动态计算图问题,这个特性也是其他的 Theano,TensorFlow,以及其他扩展框架所没有的。虽然 PyTorch 尚未成熟,但是因为它这一特性我们相信它会在未来的 Python 深度学习生态系统中占据一席之地,并且我们认为它是个非常不错的选项。Keras优点 你可以自由选择
10、使用 Theano 或者 TensorFlow 直观,高级的接口 相对简单的学习曲线缺点 与其他相比灵活性略差支持卷积神经网络,循环神经网络的 Python 深度学习库,能够运行在 Theano 或者 TensorFlow 之上。Keras 算是这个列表中提供了最高层接口、用户使用最友好的深度学习库了。它由 Google 大脑团队的 Francis Chollet 创建与维护;它允许用户自由选择底层模型构建框架,可以是 Theano 或者 TensorFlow。Keras 的用户交互借鉴了 Torch,如果你有基于 Lua 进行机器学习的经验,Keras 会是很值得一试的工具。因为 Keras
11、 完善的文档与简单易用的接口,Keras 的社区非常繁荣与活跃。最近,TensorFlow 团队宣布计划将内建支持 Keras,因此不久的将来 Keras 会是 TensorFlow 项目的子集了吧。比较表Data augmentation 训练:随机crop。训练时候,对于256256的图片进行随机crop到224224,然后允许水平翻转,那么相当与将样本倍增到(256-224)2)*2=2048。测试:测试时候,对左上、右上、左下、右下、中间做了5次crop,然后翻转,共10个crop,之后对结果求平均。Crop大小不能太小,能够保证原始信息不能损失太多 这样相等于增加了训练数据,效果可能会更好How can we fine-tune a pre-trained ImageNet model(e.g.VGG16)with images having 4(or more)channels?迁移学习谢谢15 以上有不当之处,请大家给与批评指正,以上有不当之处,请大家给与批评指正,谢谢大家!谢谢大家!