工欲善其事,必先利其器  

你想选哪个? 如何选?先来介绍下,也许有帮助。。。

介绍下几个名词:

卷积神经网络(Convolutional Neural Network,CNN)

CNN是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,且该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,对于大型图像处理有出色表现。主要用来识别位移、缩放及其他形式扭曲不变性的二维图形,由于CNN的特征检测层是通过训练数据进行学习的,所以在使用CNN时,避免了显式的特征抽取,而是隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。

递归神经网络(Recurrent neural Network,RNN)

RNN神经网络是一种节点定向连接成环的人工神经网络。网络的内部状态可以展示动态时序行为。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等。具有更强的动态行为和计算能力。

NumPy(Numeric Python)

一个用Python实现的科学计算包,是Python的一种开源数值计算扩展,包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。提供了许多高级的数值编程工具,可用来存储和处理大型矩阵,如矩阵数据类型、矢量处理、以及精密的运算库,是专为进行严格的数字处理而产生。基本可以认为NumPy将Python变成了一种免费的更强大的MatLab系统。

TensorFlow

用于数值计算的使用数据流图的开源软件库。

TensorFlow 是较低级别的符号库(比如 Theano)和较高级别的网络规范库(比如Blocks 和Lasagne)的混合。虽然它是Python 深度学习库集合的最新成员,不过在Google Brain 团队支持下,它已经是最大的活跃社区了。它支持在多GPUs 上运行深度学习模型,为高效的数据流水线提供使用程序,并具有用于模型的检查,可视化和序列化的内置模块。且TensorFlow支持 Keras(一个很优秀的深度学习库)。

优点:由软件巨头 Google支持,非常大的社区,低级和高级接口网络训练,比基于 Theano配置更快的模型编译,完全地多 GPU支持。

Keras

Python 的深度学习库。支持Convnets(基于GPU实现的卷积神经网络)、递归神经网络等。在Theano 或者TensorFlow 上运行。

Keras 也许是水平最高,对用户最友好的库了。由 Francis Chollet(Google Brain团队中的另一个成员)编写和维护。它允许用户选择其所构建的模型是在 Theano上或是在 TensorFlow上的符号图上执行。Keras的用户界面受启发于 Torch。由于部分非常优秀的文档和其相对易用性,Keras的社区非常大并且非常活跃。TensorFlow已经与 Keras一起支持内置,所以很快 Keras将是 TensorFlow项目的一个分组。

优点:可供选择的 Theano或者 TensorFlow后端,直观、高级别的端口,更易学习。

缺点:不太灵活。

Caffe

Caffe 起初并不是一个通用框架,而仅仅关注计算机视觉,但它具有非常好的通用性。

Caffe 具有很好的 CNN建模能力,但是 RNN资源就少很多,所以它更多的是面向图像识别、推荐引擎和自然语言识别等方向的应用,不面向其他深度学习应用诸如语音识别、时间序列预测、图像字幕和文本等其他需要处理顺序信息的任务。

优点:良好的CNN建模能力。

缺点:不够灵活,有限的参考文献/资源。

    

    CNN 建模能力

卷积神经网络(CNN)经常被用于图像识别、推荐引擎和自然语言识别等方向的应用。CNN由一组多层的神经网络组成,在运行时会将输入的数据进行预定义分类的评分。CNN也可用于回归分析,例如构成自动驾驶汽车中有关转向角的模型。评价一种框架的 CNN建模能力考虑以下几个特性:定义模型的机会空间、预构建层的可用性、以及可用于连接这些层的工具和功能。其中Theano,Caffe和MXNet都有很好的 CNN建模能力。另外,TensorFlow因为易于建立的 Inception V3模型,PyTorch 因为其丰富的 CNN 资源(易于使用的时间卷积集)使得这两种框架在 CNN 建模能力上脱颖而出。

    RNN 建模能力

循环神经网络(RNN)常用于语音识别,时间序列预测,图像字幕和其他需要处理顺序信息的任务。目前,Microsoft的 CNTK和 PyTorch 有着丰富的 RNN教程和预构建模型。另外,目前很流行的 TensorFlow中也有一些 RNN 资源,且Keras中更是有很多使用 TensorFlow的 RNN 示例。

[AI]AI章1 框架选型的更多相关文章

  1. TypeScript 强类型 JavaScript – Rafy Web 框架选型

    今天看到了 AngularJs 2.0 版本将基于 TypeScript 构建 的消息.与同事们对 TypeScript 展开了讨论.本文记录一些个人的想法. 理想的 JavaScript 开发模式 ...

  2. 第19章 集合框架(3)-Map接口

    第19章 集合框架(3)-Map接口 1.Map接口概述 Map是一种映射关系,那么什么是映射关系呢? 映射的数学解释 设A,B是两个非空集合,如果存在一个法则,使得对A中的每一个元素a,按法则f,在 ...

  3. 第18章 集合框架(2)-Set接口

    第18章 集合框架(2)-Set接口 Set是Collection子接口,模拟了数学上的集的概念 Set集合存储特点 1.不允许元素重复 2.不会记录元素的先后添加顺序 Set只包含从Collecti ...

  4. Atitit.js javascript的rpc框架选型

    Atitit.js javascript的rpc框架选型 1. Dwr1 2. 使用AJAXRPC1 2.2. 数据类型映射表1 3. json-rpc轻量级远程调用协议介绍及使用2 3.1. 2.3 ...

  5. 混合App 框架选型

    个人一直想做个App,但是学习 IOS 的过程发现 原生的做界面还是听麻烦的就放弃了.后来就转到混合式App阵营了 混合式App 定义 Hybrid App(混合模式移动应用)是指介于web-app. ...

  6. atitit.ajax 最佳实践跟框架选型 o99

    atitit.ajax 最佳实践跟框架选型 1. 选型框架dwr/dwr3 跟jq 1 2. DWR方便的地方分为两个地方. 1 3. dwr 优点: 1 4. 缺点: 2 5. 根jq的区别 2 1 ...

  7. atitit. groupby linq的实现(1)-----linq框架选型 java .net php

    atitit.  groupby linq的实现(1)-----linq框架选型 java .net php 实现方式有如下 1. Dsl/ Java8 Streams AP ,对象化的查询api , ...

  8. atitit.RESTful服务的概览and框架选型

    atitit.RESTful服务的概览and框架选型 1. REST基础概念: 1 2. URL说明: 1 3.  1 4. RESTful框架选型 2 1. spring mvc( recomm) ...

  9. atititt.java定时任务框架选型Spring Quartz 注解总结

    atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz  (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...

  10. 第3章 Struts2框架--1、Struts2环境搭建

    第3章 Struts2框架--1.Struts2环境搭建 搭建步骤: 1.从下载http://struts.apache.org 没找到Struts2.3.16版,就下载了2.3.29 2.拷贝后解压 ...

随机推荐

  1. File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:

    1.centos7 系统,自带python2.7 ,我安装了python3.5 并设置为系统默认python ,yum 语法不支持 2.解决办法: ls /usr/bin | grep python选 ...

  2. 04_web基础(九)考核与评估

  3. Compute Shader

    [Compute Shader] 1.Similar to regular shaders, compute shaders are Asset files in your project, with ...

  4. kali域名解析错误解决

    浏览器出现不能上网的的现象,推测是DNS解析有问题,想要修改DNS vim /etc/resolv.conf nameserver 202.96.134.133 nameserver 114.114. ...

  5. JMeter学习(七)聚合报告之 90% Line 正确理解(转载)

    转载自 http://www.cnblogs.com/yangxia-test 90% Line 参数正确的含义: 虽然,我的上面理解有一定的道理,显然它是错误的.那看看JMeter 官网是怎么说的? ...

  6. Oracle 入门

    一.安装Oracle 11g 服务端 服务端安装教程:https://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html 二.安装客户端 客 ...

  7. Could not open Selected VM debug port (8700) (转)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 在运行项目的时候,eclipse弹出提示框“Could not open Selected VM debug port (8700). Make ...

  8. mock.js 劫持 ajax,模拟数据

    http://mockjs.com/ Mock.js 是一款前端开发中拦截Ajax请求再生成随机数据响应的工具.可以用来模拟服务器响应. 优点是非常简单方便, 无侵入性, 基本覆盖常用的接口数据类型. ...

  9. as3.0视频的快进有拖动条

    package com{ import flash.display.MovieClip; import flash.events.MouseEvent; import fl.video.FLVPlay ...

  10. ES3之变量提升 ( hoisting )

    JavaScript引擎在预编译时,会将声明(函数声明.变量声明)自动提升至函数或全局代码的顶部.但是赋值不会提升. Because variable declarations (and declar ...