首页 > 其他分享 >Theano 中文文档 0.9 - 7.2.4 条件

Theano 中文文档 0.9 - 7.2.4 条件

时间:2023-05-02 15:02:14浏览次数:57  
标签:0.9 big linker 7.2 switch theano ifelse time Theano


7.2.4 条件

译者:Python 文档协作翻译小组,原文:Conditions

本文以 CC BY-NC-SA 4.0 协议发布,转载请保留作者署名和文章出处。

Python 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。

IfElse和Switch

  • 这两个op在符号变量上构建一个条件。
  • IfElse接收一个布尔条件和两个变量作为输入。
  • Switch接收一个张量作为条件,两个变量作为输入。switch是按元素操作,因此比ifelse更通用。
  • switch对两个输出变量同时求值,ifelse是延迟的并且只求值一个条件的变量。

示例

from theano import tensor as T
from theano.ifelse import ifelse
import theano, time, numpy

a,b = T.scalars('a', 'b')
x,y = T.matrices('x', 'y')

z_switch = T.switch(T.lt(a, b), T.mean(x), T.mean(y))
z_lazy = ifelse(T.lt(a, b), T.mean(x), T.mean(y))

f_switch = theano.function([a, b, x, y], z_switch,
                           mode=theano.Mode(linker='vm'))
f_lazyifelse = theano.function([a, b, x, y], z_lazy,
                               mode=theano.Mode(linker='vm'))

val1 = 0.
val2 = 1.
big_mat1 = numpy.ones((10000, 1000))
big_mat2 = numpy.ones((10000, 1000))

n_times = 10

tic = time.clock()
for i in range(n_times):
    f_switch(val1, val2, big_mat1, big_mat2)
print('time spent evaluating both values %f sec' % (time.clock() - tic))

tic = time.clock()
for i in range(n_times):
    f_lazyifelse(val1, val2, big_mat1, big_mat2)
print('time spent evaluating one value %f sec' % (time.clock() - tic))

在这个例子中,IfElse op比起Switch花费更少的时间(大约一半),因为它只计算两个变量中的一个。

$ python ifelse_switch.py
time spent evaluating both values 0.6700 sec
time spent evaluating one value 0.3500 sec

除非使用linker='vm'linker='cvm'ifelse将计算两个变量并花费与switch相同的计算时间。虽然linker当前未默认设置为cvm,但在不久的将来将会设置为它。

没有自动优化将switch替换为使用broadcasted的标量的ifelse,因为这不总是更快。查看这个ticket

注意

如果你使用test values,则将计算IfElse的所有分支。这是正常的,因为使用test_value意味着当我们构建它时,由于Python的贪婪评估和测试值的语义,所有的都将被计算。当我们构建两个分支时,它们都将被执行测试值。这在编译的Theano函数的执行期间不引起任何改变。


标签:0.9,big,linker,7.2,switch,theano,ifelse,time,Theano
From: https://blog.51cto.com/wizardforcel/6239975

相关文章

  • Theano 中文文档 0.9 - 7.2.3 Theano中的导数
    7.2.3Theano中的导数译者:Python文档协作翻译小组,原文:DerivativesinTheano。本文以CCBY-NC-SA4.0协议发布,转载请保留作者署名和文章出处。Python文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。计算梯度现在让我们使用Theano来完成一个......
  • Theano 中文文档 0.9 - 7. 教程
    7.教程译者:Python文档协作翻译小组,原文:Tutorial。本文以CCBY-NC-SA4.0协议发布,转载请保留作者署名和文章出处。Python文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。让我们开始一个交互式会话(例如使用python或ipython)并导入Theano。>>>......
  • Theano 中文文档 0.9 - 7.2.1 起手式 —— 代数
    7.2.1起手式——代数译者:Python文档协作翻译小组,原文:BabySteps-Algebra。本文以CCBY-NC-SA4.0协议发布,转载请保留作者署名和文章出处。Python文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。两个标量相加为了让我们开始使用Theano并......
  • Theano 中文文档 0.9 - 6. 更新Theano
    6.更新Theano译者:Python文档协作翻译小组,原文:UpdatingTheano。本文以CCBY-NC-SA4.0协议发布,转载请保留作者署名和文章出处。Python文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。根据你如何安装Theano,选择下面三个部分中的一个。你应该......
  • Visual AssistX Version 10.9.2488 Cracked
    任何问题请反馈至邮箱:[email protected](随缘查看邮件)Anyporbs->[email protected]再次声明:本破解补丁仅供交流学习和研究使用,不可用于商业。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。Notice:thispatcherisforcommunication,lear......
  • Visual AssistX Version 10.9.2488 Cracked
    任何问题请反馈至邮箱:[email protected](随缘查看邮件)Anyporbs->[email protected]再次声明:本破解补丁仅供交流学习和研究使用,不可用于商业。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。Notice:thispatcherisforcommunication,lear......
  • centos7 安装MySql 安装5.7.28
    1、先执行查询:rpm-qa|grepmariadb执行结果如:mariadb-libs-5.5.64-1.el7.x86_642、先执行删除:rpm-e--nodepsmariadb-libs3、下载MySQL数据库:这里使用的是mysql-5.7.28版本4、将下载好的MySQL安装包上传到服务器5、到目录中解压文件:tar-xvfmysql-5.7.28-1.el7.x86_6......
  • [Unity脚本运行时更新]C#7.2新特性
    洪流学堂微信公众号。本文是该系列《Unity脚本运行时更新带来了什么?》的第7篇。洪流学堂公众号回复runtime,获取本系列所有文章。Unity2017-2018.2中的4.x运行时已经支持到C#6,之前的文章已经介绍完毕。Unity2018.3将支持到C#7.3,今天我们来看看C#7.2新特性能给代码带来什么吧,不过这......
  • Day 27 27.2 JS进阶之window对象
    JS-Function对象之window对象window是客户端浏览器对象模型的基类,window对象是客户端JavaScript的全局对象。一个window对象实际上就是一个独立的窗口,对于框架页面来说,浏览器窗口每个框架都包含一个window对象。(1)全局作用域在客户端浏览器中,window对象是访问BOM......
  • iis搭建discuz7.2 的曲折经历 y以及各种报错的处理
    环境windowsserver 2008R2  mysql 5.1.73 iis6 php5.6安装PHP解压PHP,我给的路径是C:\Users\Administrator\Desktop\php,大伙儿随意把php.ini-production改名为php.ini(用于开发环境的话,就改那个development)修改扩展路径extension_dir="./ext"启用MySQL扩展(即去......