政务网站建设具体指导意见,一个域名绑定多个网站,运维培训机构哪个好,网站代做多少钱前言
按照官网教程#xff0c;学习条件语句Switch和ifelse的使用
参考地址: conditions
性能对比
ifElse是将布尔变量和两个变量当做输入
Switch是将张量和两个变量当做输入. 因为Switch是元素级操作#xff0c;所以比ifElse更具一般性
Switch需要对所有输出变量进行评…前言
按照官网教程学习条件语句Switch和ifelse的使用
参考地址: conditions
性能对比
ifElse是将布尔变量和两个变量当做输入
Switch是将张量和两个变量当做输入. 因为Switch是元素级操作所以比ifElse更具一般性
Switch需要对所有输出变量进行评估ifElse只需要计算条件中一个变量的结果
用法
需要实现的表达式
output{x,aby,a≥b\begin{aligned}
output=\begin{cases}
x,a\lt b\\
y,a\ge b
\end{cases}
\end{aligned}使用Switch语句
#使用Switcha,bT.dscalars(a,b)
x,yT.dmatrices(a,b)
z_switchT.switch(T.lt(a,b),T.mean(x),T.mean(y))
f_switchtheano.function([a,b,x,y],z_switch,modetheano.Mode(linkervm))
val10.
val21.
big_mat1numpy.ones((10000,1000))
big_mat2numpy.ones((10000,1000))
n_times10#记录执行时间tictime.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))#time spent evaluating both values 0.232891 sec
使用ifelse语句
#使用ifElsefrom theano.ifelse import ifelse#一定要用引入的不能用theano.ifelse, 会出问题
a,bT.dscalars(a,b)
x,yT.dmatrices(a,b)
z_lazy ifelse(T.lt(a, b), T.mean(x), T.mean(y))
f_lazyifelsetheano.function([a,b,x,y],z_lazy,modetheano.Mode(linkervm))
val10.
val21.
big_mat1numpy.ones((10000,1000))
big_mat2numpy.ones((10000,1000))
n_times10#记录执行时间tictime.clock()
for i in range(n_times):f_lazyifelse(val1,val2,big_mat1,big_mat2)
print(time spent evaluating both values %f sec % (time.clock() - tic))#time spent evaluating both values 0.122027 sec可以发现由于开头说的ifelse比较懒只执行一条, 所以时间短
【PS】怎么感觉没C的switch那么强大, 还是两个选择, 以后见到其他用法再补充, 一步步学
这篇博客划划水, 就学学这两个条件语句的使用, 目前除了性能差别, 在功能上并未发现区别, 都是根据第一个表达式去决定选择第二个参数或是第三个参数, 如果有复杂的功能, 后面肯定会接触到, 暂时就这样.
然而比较好玩的是看到了两个函数T.mean(),T.lt(), 感觉theano.tensor应该有很多功能, 下一篇博客就摘取一些感觉比较重要的函数贴出来.
本篇博客code: 链接: https://pan.baidu.com/s/1o8Sd9VG 密码: 8t8f