- Python快樂編程:人工智能深度學習基礎
- 千鋒教育高教產品研發部編著
- 444字
- 2022-07-27 18:56:03
2.8 Theano中的條件表達式
Theano雖然是基于Python的工具包,但它本身屬于符號語言,因此無法直接使用Python中的if語句。IfElse和Switch這兩種操作都是基于符號變量建立約束條件。IfElse將boolean作為條件,將兩個變量作為輸入;Switch將tensor作為條件,將兩個變量作為輸入。Switch是一個逐元素的操作,這一特性使得它比IfElse更加通用。
Switch在兩個輸出變量上進行評估,而IfElse只對一個關于條件的變量進行評估。

運行結果如下所示:
python ifelse_switch.py time spent evaluating both values 0.234337 sec time spent evaluating one value 0.134876 sec
在這個例子中,IfElse操作比Switch花費的時間更少,從結果看,這次操作中IfElse節省了大約一半的時間。這是因為IfElse只計算了兩個變量中的一個。
只有在使用linker='vm'或者linker='cvm'的情況下,IfElse才會計算兩個變量,計算時間與Switch相同。綜上所述,IfElse與Switch主要區別有以下兩點:
· IfElse的條件表達式condition只支持標量值,而Switch的條件表達式可以是任意形式的符號變量。在實際使用Theano的過程中,Switch的應用更為廣泛。
· IfElse的運算具有惰性,從上面的例子中可以看出,IfElse的執行過程采用了“短路”策略,只會執行其中一個分支,而Switch會執行全部的分支,當全部分支執行完成后才根據條件表達式condition的值返回執行結果。
推薦閱讀
- HornetQ Messaging Developer’s Guide
- The DevOps 2.3 Toolkit
- Java程序設計(慕課版)
- 編程的修煉
- ASP.NET MVC4框架揭秘
- HTML5 移動Web開發從入門到精通(微課精編版)
- Visual Basic程序設計(第3版):學習指導與練習
- 數據結構(Python語言描述)(第2版)
- 名師講壇:Spring實戰開發(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- R Deep Learning Cookbook
- Kotlin從基礎到實戰
- 編程與類型系統
- Flowable流程引擎實戰
- 深入理解BootLoader
- Java程序設計入門(第2版)