[AI]AI章1 框架选型
工欲善其事,必先利其器
你想选哪个? 如何选?先来介绍下,也许有帮助。。。
介绍下几个名词:
卷积神经网络(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 框架选型的更多相关文章
- TypeScript 强类型 JavaScript – Rafy Web 框架选型
今天看到了 AngularJs 2.0 版本将基于 TypeScript 构建 的消息.与同事们对 TypeScript 展开了讨论.本文记录一些个人的想法. 理想的 JavaScript 开发模式 ...
- 第19章 集合框架(3)-Map接口
第19章 集合框架(3)-Map接口 1.Map接口概述 Map是一种映射关系,那么什么是映射关系呢? 映射的数学解释 设A,B是两个非空集合,如果存在一个法则,使得对A中的每一个元素a,按法则f,在 ...
- 第18章 集合框架(2)-Set接口
第18章 集合框架(2)-Set接口 Set是Collection子接口,模拟了数学上的集的概念 Set集合存储特点 1.不允许元素重复 2.不会记录元素的先后添加顺序 Set只包含从Collecti ...
- Atitit.js javascript的rpc框架选型
Atitit.js javascript的rpc框架选型 1. Dwr1 2. 使用AJAXRPC1 2.2. 数据类型映射表1 3. json-rpc轻量级远程调用协议介绍及使用2 3.1. 2.3 ...
- 混合App 框架选型
个人一直想做个App,但是学习 IOS 的过程发现 原生的做界面还是听麻烦的就放弃了.后来就转到混合式App阵营了 混合式App 定义 Hybrid App(混合模式移动应用)是指介于web-app. ...
- atitit.ajax 最佳实践跟框架选型 o99
atitit.ajax 最佳实践跟框架选型 1. 选型框架dwr/dwr3 跟jq 1 2. DWR方便的地方分为两个地方. 1 3. dwr 优点: 1 4. 缺点: 2 5. 根jq的区别 2 1 ...
- atitit. groupby linq的实现(1)-----linq框架选型 java .net php
atitit. groupby linq的实现(1)-----linq框架选型 java .net php 实现方式有如下 1. Dsl/ Java8 Streams AP ,对象化的查询api , ...
- atitit.RESTful服务的概览and框架选型
atitit.RESTful服务的概览and框架选型 1. REST基础概念: 1 2. URL说明: 1 3. 1 4. RESTful框架选型 2 1. spring mvc( recomm) ...
- atititt.java定时任务框架选型Spring Quartz 注解总结
atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...
- 第3章 Struts2框架--1、Struts2环境搭建
第3章 Struts2框架--1.Struts2环境搭建 搭建步骤: 1.从下载http://struts.apache.org 没找到Struts2.3.16版,就下载了2.3.29 2.拷贝后解压 ...
随机推荐
- mysql5.7.10开启慢查询
MySql提供慢SQL日志的功能,能够记录下响应时间超过一定阈值的SQL查询,以便于我们定位糟糕的查询语句. 首先,查询当前mysql数据库是否开启了慢查询日志功能: show VARIABLES l ...
- Netty 能做什么
作为一个学Java的,如果没有研究过Netty,那么你对Java语言的使用和理解仅仅停留在表面水平,会点SSH,写几个MVC,访问数据库和缓存,这些只是初等Java程序员干的事.如果你要进阶,想了解J ...
- javase中javax源码下载地址
OracleJDK 和 OpenJDK 源码都可以参考. OpenJDK 源码下载 http://hg.openjdk.java.net/jdk7/jdk7/jdk/file 我主要是想下载 java ...
- django models返回数据根据某字段倒序排列
例如有一个models表叫做report,report表中有一个endtime,想将结果按照endtime倒序排列 正序排列的方法:[models对象.objects.order_by(“字段名& ...
- Linux 字符设备驱动及一些简单的Linux知识
一.linux系统将设备分为3类:字符设备.块设备.网络设备 1.字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面向流的设备,常见 ...
- CUDA 编程的基本模式
reproduced from: http://www.cnblogs.com/muchen/p/6306747.html 前言 本文将介绍 CUDA 编程的基本模式,所有 CUDA 程序都基于此模式 ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛----随手记录帖
这是跟学长学姐组队来打的最爽的一次比赛了,也可能是互相组队最后一次比赛了,南哥和楼学姐,省赛之后就退役了,祝他们能考研和面试都有happy ending! 虽然最后没有把F题的n^2约数的数学题写完, ...
- DialogFragment 对话框 碎片
package com.example.m_evolution; import android.app.Dialog; import android.app.DialogFragment; impor ...
- Oracle触发器用法实例详解
转自:https://www.jb51.net/article/80804.htm. 本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件 ...
- c语言的基础知识
break只对应for循环,while循环,switch case分支. (a>b)?y:n 如果A大于B,那么选择Y的结果,如果A小于B,那么选择N的结果. ^在c语言中代表的是按位异或 ...