资讯专栏INFORMATION COLUMN

Theano - 条件

mengera88 / 1916人阅读

摘要:接收布尔型条件和两个变量作为输入。进行元素级运算,因此比更常用。比较懒惰,只计算满足条件的相应输出变量,而计算所有的输出变量。如果那么计算和,并输出在这个例子中,比花费更少的时间,因为他只计算输出变量中的一个。

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

相关文章

  • 从NNVM看2016年深度学习框架发展趋势

    摘要:两者取长补短,所以深度学习框架在年,迎来了前后端开发的黄金时代。陈天奇在今年的中,总结了计算图优化的三个点依赖性剪枝分为前向传播剪枝,例已知,,求反向传播剪枝例,,求,根据用户的求解需求,可以剪掉没有求解的图分支。 虚拟框架杀入从发现问题到解决问题半年前的这时候,暑假,我在SIAT MMLAB实习。看着同事一会儿跑Torch,一会儿跑MXNet,一会儿跑Theano。SIAT的服务器一般是不...

    ThinkSNS 评论0 收藏0
  • PyTorch和TensorFlow到底哪个更好?看看一线开发者怎么说

    摘要:我认为对机器学习开发者来说,是一个了不起的工具集。这个帖子发出后得到了很多机器学习研究者和开发者的关注,他们纷纷跟贴谈论自己的想法和经验不只是关于和,讨论中还涉及到更多工具。 Theano、TensorFlow、Torch、MXNet 再到近日比较热门的 PyTorch 等等,深度学习框架之间的比较一直以来都是非常受人关注的热点话题。机器之心也曾发表过多篇相关的介绍和对比文章,如《主流深度学...

    coordinate35 评论0 收藏0
  • Yoshua Bengio等大神传授:26条深度学习经验

    摘要:另外,当损失函数接近全局最小时,概率会增加。降低训练过程中的学习率。对抗样本的训练据最近信息显示,神经网络很容易被对抗样本戏弄。使用高度正则化会有所帮助,但会影响判断不含噪声图像的准确性。 由 Yoshua Bengio、 Leon Bottou 等大神组成的讲师团奉献了 10 天精彩的讲座,剑桥大学自然语言处理与信息检索研究组副研究员 Marek Rei 参加了本次课程,在本文中,他精炼地...

    Lowky 评论0 收藏0
  • Yoshua Bengio等大神传授:26条深度学习经验

    摘要:八月初,我有幸有机会参加了蒙特利尔深度学习暑期学校的课程,由最知名的神经网络研究人员组成的为期天的讲座。另外,当损失函数接近全局最小时,概率会增加。降低训练过程中的学习率。对抗样本的训练据最近信息显示,神经网络很容易被对抗样本戏弄。 8月初的蒙特利尔深度学习暑期班,由Yoshua Bengio、 Leon Bottou等大神组成的讲师团奉献了10天精彩的讲座,剑桥大学自然语言处理与信息检索研...

    Salamander 评论0 收藏0
  • Theano - theano如何处理形状信息

    摘要:是怎么处理形状信息在构建图的时候,不可能严格执行变量的形状。形状推断问题在图中,将会传播形状的信息。以下情形是目前我们可以做到的当调用时,你可以直接把形状信息传递给。例如你可以在图的任何位置使用添加位置信息。 Theano是怎么处理形状信息(Shape Information) 在构建图的时候,不可能严格执行Theano变量的形状。因为在运行的时候,传递给Theano函数的某一参数的值...

    muddyway 评论0 收藏0

发表评论

0条评论

mengera88

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<