【theano-windows】学习笔记四——theano中的条件语句
生活随笔
收集整理的這篇文章主要介紹了
【theano-windows】学习笔记四——theano中的条件语句
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
按照官網教程,學習條件語句Switch和ifelse的使用
參考地址: conditions
性能對比
ifElse是將布爾變量和兩個變量當做輸入
Switch是將張量和兩個變量當做輸入. 因為Switch是元素級操作,所以比ifElse更具一般性
Switch需要對所有輸出變量進行評估,ifElse只需要計算條件中一個變量的結果
用法
需要實現的表達式
使用Switch語句
#使用Switcha,b=T.dscalars('a','b') x,y=T.dmatrices('a','b') z_switch=T.switch(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')) 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))#time spent evaluating both values 0.232891 sec使用ifelse語句
#使用ifElsefrom theano.ifelse import ifelse#一定要用引入的,不能用theano.ifelse, 會出問題 a,b=T.dscalars('a','b') x,y=T.dmatrices('a','b') z_lazy = ifelse(T.lt(a, b), T.mean(x), T.mean(y)) 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_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
總結
以上是生活随笔為你收集整理的【theano-windows】学习笔记四——theano中的条件语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡黑屋什么意思?情节严重会影响征信!
- 下一篇: 【theano-windows】学习笔记