摘要:接收布尔型条件和两个变量作为输入。进行元素级运算,因此比更常用。比较懒惰,只计算满足条件的相应输出变量,而计算所有的输出变量。如果那么计算和,并输出在这个例子中,比花费更少的时间,因为他只计算输出变量中的一个。
IfElse vs Switch
IfElse接收布尔型条件和两个变量作为输入。
Switch接收一个张量(Tensor)以及两个变量作为输入。
Switch进行元素级运算,因此比IfElse更常用。
IfElse比较懒惰,只计算满足条件的相应输出变量, 而Switch计算所有的输出变量。
即:
ifelse(condition, output1, output2): 如果condition:1(0),那么ifelse只计算output1(output2)并输出。
switch(condition, output1, output2): 如果condition:1(0),那么switch计算output1和output2,并输出output1(output2)
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_ifelse = 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_ifelse = theano.function([a, b, x, y], z_ifelse, 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 j in range(n_times): f_ifelse(val1, val2, big_mat1, big_mat2) print("time spent evaluating one value %f sec" % (time.clock() - tic))
在这个例子中,IfElse比Switch花费更少的时间,因为他只计算输出变量中的一个。
如果不使用linker="vm"或linker="cvm",那么ifelse将会和switch一样计算两个输出变量,而且花费的时间和switch一样多。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38661.html
摘要:两者取长补短,所以深度学习框架在年,迎来了前后端开发的黄金时代。陈天奇在今年的中,总结了计算图优化的三个点依赖性剪枝分为前向传播剪枝,例已知,,求反向传播剪枝例,,求,根据用户的求解需求,可以剪掉没有求解的图分支。 虚拟框架杀入从发现问题到解决问题半年前的这时候,暑假,我在SIAT MMLAB实习。看着同事一会儿跑Torch,一会儿跑MXNet,一会儿跑Theano。SIAT的服务器一般是不...
摘要:我认为对机器学习开发者来说,是一个了不起的工具集。这个帖子发出后得到了很多机器学习研究者和开发者的关注,他们纷纷跟贴谈论自己的想法和经验不只是关于和,讨论中还涉及到更多工具。 Theano、TensorFlow、Torch、MXNet 再到近日比较热门的 PyTorch 等等,深度学习框架之间的比较一直以来都是非常受人关注的热点话题。机器之心也曾发表过多篇相关的介绍和对比文章,如《主流深度学...
摘要:另外,当损失函数接近全局最小时,概率会增加。降低训练过程中的学习率。对抗样本的训练据最近信息显示,神经网络很容易被对抗样本戏弄。使用高度正则化会有所帮助,但会影响判断不含噪声图像的准确性。 由 Yoshua Bengio、 Leon Bottou 等大神组成的讲师团奉献了 10 天精彩的讲座,剑桥大学自然语言处理与信息检索研究组副研究员 Marek Rei 参加了本次课程,在本文中,他精炼地...
摘要:八月初,我有幸有机会参加了蒙特利尔深度学习暑期学校的课程,由最知名的神经网络研究人员组成的为期天的讲座。另外,当损失函数接近全局最小时,概率会增加。降低训练过程中的学习率。对抗样本的训练据最近信息显示,神经网络很容易被对抗样本戏弄。 8月初的蒙特利尔深度学习暑期班,由Yoshua Bengio、 Leon Bottou等大神组成的讲师团奉献了10天精彩的讲座,剑桥大学自然语言处理与信息检索研...
摘要:是怎么处理形状信息在构建图的时候,不可能严格执行变量的形状。形状推断问题在图中,将会传播形状的信息。以下情形是目前我们可以做到的当调用时,你可以直接把形状信息传递给。例如你可以在图的任何位置使用添加位置信息。 Theano是怎么处理形状信息(Shape Information) 在构建图的时候,不可能严格执行Theano变量的形状。因为在运行的时候,传递给Theano函数的某一参数的值...
阅读 2160·2023-04-25 19:06
阅读 1359·2021-11-17 09:33
阅读 1740·2019-08-30 15:53
阅读 2535·2019-08-30 14:20
阅读 3519·2019-08-29 12:58
阅读 3513·2019-08-26 13:27
阅读 486·2019-08-26 12:23
阅读 470·2019-08-26 12:22