首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Theano 中文文档 0.9 - 3. Theano一览

Theano 中文文档 0.9 - 3. Theano一览

作者头像
ApacheCN_飞龙
发布于 2022-12-01 08:11:12
发布于 2022-12-01 08:11:12
1.4K00
代码可运行
举报
文章被收录于专栏:信数据得永生信数据得永生
运行总次数:0
代码可运行

3. Theano一览

译者:Python 文档协作翻译小组,原文:Theano at a Glance。 本文以 CC BY-NC-SA 4.0 协议发布,转载请保留作者署名和文章出处。 Python 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。

Theano是一个Python库,它允许你定义、优化和求值数学表达式,特别是具有多维数组(numpy.ndarray)的数学表达式。对于涉及大量数据的问题,使用Theano可以获得与手工编写的C实现不相上下的速度。它还可以通过利用最近的GPU超过CPU上的C多个数量级。

Theano将计算机代数系统(CAS)的各个方面与优化编译器的各个方面相结合。它还可以为许多数学运算生成定制的C代码。CAS与优化编译的这种组合对于复杂数学表达式重复求值并且求值速度很关键的任务特别有用。对于许多不同的表达式每个求值一次的情况,Theano可以最小化编译/分析的开销,但仍然提供诸如自动微分等符号特征。

Theano的编译器对这些符号表达式应用许多不同复杂度的优化。这些优化包括,但不限于:

  • 使用GPU进行计算
  • 恒定折叠
  • 合并相似的子图,避免冗余计算
  • 算术简化(例如x*y/x -> y, --x -> x
  • 在各种上下文中插入高效的BLAS操作(例如GEMM
  • 使用内存别名来避免计算
  • 使用就地操作,无论它涉不涉及到别名
  • 元素子表达式的循环融合
  • 数值稳定性的改进(例如和)
  • 完整列表请参阅优化

Theano是在LISA实验室编写的,以支持高效机器学习算法的快速开发。Theano以希腊数学家命名,她可能是毕达哥拉斯的妻子。Theano根据BSD许可证(link)发布。

先睹为快

这里是如何使用Theano的示例。它没有展示Theano的许多功能,但它具体说明了Theano是什么。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import theano
from theano import tensor

# declare two symbolic floating-point scalars
a = tensor.dscalar()
b = tensor.dscalar()

# create a simple expression
c = a + b

# convert the expression into a callable object that takes (a,b)
# values as input and computes a value for c
f = theano.function([a,b], c)

# bind 1.5 to 'a', 2.5 to 'b', and evaluate 'c'
assert 4.0 == f(1.5, 2.5)

Theano不是一个正常意义上的编程语言,因为你在Python中编写一个程序来为Theano构建表达式。在某种程度上它仍然像一个编程语言,因为你必须

  • 声明变量(a,b)并给出它们的类型
  • 构建表达式来表示如何将这些变量放在一起
  • 将表达式图编译为函数,以便将它们用于计算。

可以把theano.function看作一个编译器的接口,它从纯粹的符号图中构建一个可调用的对象。Theano的最重要的特性之一是theano.function可以优化图,甚至将其中的一些或全部编译为本机机器指令。

它做了什么,但是其它库没有做?

Theano是一个Python库和优化编译器,用于处理和求值表达式,特别是矩阵表达式。矩阵的操作通常使用numpy包来完成,那么什么是Theano做的而Python和numpy没有做的呢?

  • 执行速度优化:Theano可以使用g++nvcc将表达式图的部分编译成CPU或GPU指令,它们运行起来比纯Python快得多。
  • 符号微分:Theano可以自动构建用于计算梯度的符号图。
  • 稳定性优化:Theano可以识别[某些]数值不稳定的表达式,并使用更稳定的算法计算它们。

最接近Theano的Python包是sympy。Theano比Sympy更注重张量表达,并有更多的机制进行编译。Sympy具有更复杂的代数规则,可以处理更多种类的数学运算(如序列,极限和积分)。

如果将numpyMATLABsympyMathematica进行比较,Theano是一种试图结合两个世界的最好的部分的东西。

入门

安装Theano

在你的系统上下载并安装Theano的说明。

教程

开始使用Theano的基本功能。如果你是新手,去这里!

API文档

Theano提供的细节。建议先通读教程

可在此处找到在线文档的PDF版本。

Theano的愿景

这是我们对Theano的愿景。这是给人们对Theano未来的一个期望,但我们不能承诺实现所有的。这也应该能帮助你理解Theano与其他计算工具的关系。

  • 支持张量和稀疏运算
  • 支持线性代数运算
  • 图变换
    • 微分/高阶微分
    • ‘R’和’L’微分运算符
    • 速度/内存优化
    • 数值稳定性优化
  • 可以使用多种编译语言、指令集:C/C++、CUDA、OpenCL、PTX、CAL、AVX …
  • 延迟求值
  • 循环
  • 并行执行(SIMD、多核,集群上的多节点,分布式多节点)
  • 支持NumPy所有功能和SciPy的基本功能
  • 在Theano中轻松封装库函数

注意:短期没有计划支持多节点计算。

Theano愿景的状态

以下是截至2013年12月3日(Theano版本0.6之后)的愿景状态:

  • 我们支持使用numpy.ndarray对象的张量,我们支持对它们的许多操作。
  • 我们通过使用scipy.{csc,csr,bsr} _matrix对象支持稀疏类型,并支持对它们的一些操作。
  • 我们已经开始实现/封装更高级的线性代数运算。
  • 我们有许多图变换,涵盖上面列出的4个类别。
  • 我们可以通过更好的存储优化和指令选择来改进图转换。
    • 类似于在优化阶段的自动调整,但这不适用于只有1个的操作。
    • 使用示例:根据输入大小确定是否应将计算移动到GPU。
    • 可能实现:允许fgraph中的Theano变量拥有超过1个所有者。
  • 我们支持Python 2和Python 3。
  • 我们对float32类型的张量有一个CUDA后端。
  • 已经开始尝试通用GPU ndarray(GPU张量)(在libgpuarray项目中启动)
    • 将GPU后端移到Theano外部。
    • 将在Windows上为GPU提供更好的支持,并在CPU上支持OpenCL后端。
  • 循环可以工作,但并不是所有的相关优化都已完成。
  • cvm链接器允许延迟求值。它是当前的默认链接器。
    • 如何让DebugMode检查?目前,DebugMode非延迟地检查计算。
  • CPU上的SIMD并行性来自编译器。
  • 多核并行支持有限。如果外部BLAS实现支持它,许多点通过gemm,gemv和ger并行化。此外,支持逐个元素的操作。请参阅Multi cores support in Theano
  • 无多节点支持。
  • 实现大多数但不是所有NumPy的函数/别名。* https://github.com/Theano/Theano/issues/1080
  • 将现有的Python函数封装的更简单并写成文档。
  • 我们知道如何从对象类型(张量、稀疏矩阵、dtype、broadcast 标志)分离共享变量内存存储位置,但我们需要这样做。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Theano 中文文档 0.9 - 7.2.3 Theano中的导数
现在让我们使用Theano来完成一个稍微复杂的任务:创建一个函数,该函数计算相对于其参数x的某个表达式y的导数。为此,我们将使用宏T.grad。例如,我们可以计算
ApacheCN_飞龙
2022/12/01
7390
Theano 中文文档 0.9 - 7.2.3 Theano中的导数
Theano 中文文档 0.9 - 1. 欢迎
Theano是一个Python库,允许你定义、优化和有效地求值涉及多维数组的数学表达式。Theano的功能:
ApacheCN_飞龙
2022/12/01
5510
Theano 中文文档 0.9 - 1. 欢迎
Theano 中文文档 0.9 - 7.2.2 更多示例
现在开始,通过浏览库的Basic Tensor Functionality这一部分,开始更加系统地熟悉Theano的基本对象和操作是非常明智的。
ApacheCN_飞龙
2022/12/01
1.1K0
Theano 中文文档 0.9 - 7.2.2 更多示例
Theano 中文文档 0.9 - 7.2.6 Theano如何处理形状信息
在构建图形时,不可能严格执行Theano变量的形状,因为在运行时间为Theano函数的参数提供的特定值可能会调整其图形中的Theano变量的形状。
ApacheCN_飞龙
2022/12/01
5780
Theano 中文文档 0.9 - 7.2.1 起手式 —— 代数
为了让我们开始使用Theano并获得我们正在使用的感觉,让我们做一个简单的函数:将两个数字加在一起。这里是你怎么做:
ApacheCN_飞龙
2022/12/01
3430
Theano 中文文档 0.9 - 7.2.4 条件
在这个例子中,IfElse op比起Switch花费更少的时间(大约一半),因为它只计算两个变量中的一个。
ApacheCN_飞龙
2022/12/01
3220
Theano 中文文档 0.9 - 2. 发行说明
亮点: - cuDNN v5卷积支持(cuDNN v3不再支持) - 修复几个崩溃
ApacheCN_飞龙
2022/12/01
4430
Theano 中文文档 0.9 - 7.2.5 循环
Scan示例:计算序列x(t) = tanh(x(t - 1).dot(W) + y(t).dot(U) + p(T - t).dot(V))
ApacheCN_飞龙
2022/12/01
4900
Theano 中文文档 0.9 - 4. 要求
如果你想要编译的代码更快(推荐),确保你安装了g++(Windows/Linux)或Clang(OS X)。
ApacheCN_飞龙
2022/12/01
8110
tensorflow+入门笔记︱基本张量tensor理解与tensorflow运行结构与相关报错
**张量是所有深度学习框架中最核心的组件,因为后续的所有运算和优化算法都是基于张量进行的。**几何代数中定义的张量是基于向量和矩阵的推广,通俗一点理解的话,我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。
悟乙己
2020/03/27
1.3K0
开发丨深度学习框架太抽象?其实不外乎这五大核心组件
许多初学者觉得深度学习框架抽象,虽然调用了几个函数/方法,计算了几个数学难题,但始终不能理解这些框架的全貌。 为了更好地认识深度学习框架,也为了给一些想要自己亲手搭建深度学习框架的朋友提供一些基础性的指导,日前来自苏黎世联邦理工学院计算机科学系的硕士研究生Gokula Krishnan Santhanam在博客上撰文,概括了大部分深度学习框架都会包含的五大核心组件,为我们详细剖析了深度学习框架一般性的内部组织结构。以下由AI科技评论编译。 Gokula Krishnan Santhanam认为,大部分深度学
AI科技评论
2018/03/09
1.4K0
开发丨深度学习框架太抽象?其实不外乎这五大核心组件
Theano 中文文档 0.9 - 5.3 Windows安装说明
如果你想从GitHub安装Theano的前沿或开发版本,请确保你正在阅读此页面的最新版本。
ApacheCN_飞龙
2022/12/01
1.5K0
告别选择困难症,我来带你剖析这些深度学习框架基本原理
无论你喜欢或不喜欢,深度学习就在这里等着你来学习,伴随着技术淘金热而来的过多的可选项,让新手望而生畏。
AI研习社
2018/09/25
1.4K0
告别选择困难症,我来带你剖析这些深度学习框架基本原理
动手Theano:最强大的Python科学工具之一
也许已经听说过有关Theano的内容,但是究竟是什么呢?一种编程语言?编译器?Python库?好吧,实际上,这就是所有这些东西:Theano开发为以非常有效的方式编译,实现和评估数学表达式。实际上,它允许开发人员使用CPU和GPU来执行代码。现在,可能想知道使用GPU而不是CPU运行代码的优势是什么。
代码医生工作室
2020/05/07
9960
Theano 中文文档 0.9 - 5.2 Mac OS安装说明
如果你想从GitHub安装Theano的前沿或开发版本,请确保你正在阅读此页面的最新版本。
ApacheCN_飞龙
2022/12/01
1.6K0
Theano 中文文档 0.9 - 5.4 CentOS 6安装说明
如果你想从GitHub安装Theano的前沿或开发版本,请确保你正在阅读此页面的最新版本。
ApacheCN_飞龙
2022/12/01
1.1K0
在GPU上运行,性能是NumPy的11倍,这个Python库你值得拥有
导读:NumPy是数据计算的基础,更是深度学习框架的基石。但如果直接使用NumPy计算大数据,其性能已成为一个瓶颈。
IT阅读排行榜
2019/04/09
3.2K0
在GPU上运行,性能是NumPy的11倍,这个Python库你值得拥有
JAX 中文文档(十七)
缩写Central Processing Unit,CPU 是大多数计算机中可用的标准计算架构。JAX 可以在 CPU 上运行计算,但通常在 GPU 和 TPU 上可以实现更好的性能。
ApacheCN_飞龙
2024/06/22
2130
详解 6 大主流深度学习框架
导读:近几年,随着深度学习的爆炸式发展,相关理论和基础架构得到了很大突破,它们奠定了深度学习繁荣发展的基础。这其中涌现了几个著名的深度学习平台,本文将对这些平台进行简要介绍。
IT阅读排行榜
2022/03/11
4.7K0
详解 6 大主流深度学习框架
谷歌大规模机器学习:模型训练、特征工程和算法选择 (32PPT下载)
【新智元导读】在 ThingsExpo 会议上,谷歌软件工程师 Natalia Ponomareva 作了有关如何在大规模机器学习中取得成功的讲座。Natalia 回顾了可用于对大量数据进行机器学习模型训练的框架,解释了特征工程和算法选择,并提供了有关如何避免错误的 tips。这是一份非常实用的机器学习指导手册。本文后半部分谈了如何选择深度学习框架的问题,以及Theano 贡献者、苏黎世联邦理工学院的深度学习研究者 Gokula Krishnan Santhanam 对常用深度学习框架基本构成的分析。 谷歌
新智元
2018/03/27
1.3K0
谷歌大规模机器学习:模型训练、特征工程和算法选择 (32PPT下载)
推荐阅读
相关推荐
Theano 中文文档 0.9 - 7.2.3 Theano中的导数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档