如何在theano中獲取tensor的boolean值?
02-06
我的代碼是這樣的:
import theano.tensor as Tfrom theano import functiona = T.scalar(a)
b = T.scalar(b)if T.switch(T.eq(a, b), a, b): c = a + belse:
c = a - bf = function([a, b], c)print f(2, 2)print f(2, 3)按邏輯應該分別輸出4和-1, 實際輸出的卻是4和5,也就是不管a是否等於b, if條件的值都是真,這是為什麼啊
問題中的用法不太正確。Theano接近函數式語言(functional programming),你的if只會在編譯時起作用。也就是說,如果在編譯時T.switch(T.eq(a, b), a, b)結果為True,接下來始終會執行c = a + b。正確的用法參見Theano.Conditions。在你的例子中應該是:
z_switch = T.switch(T.eq(a, b), a+b, a-b) # 定義一個switch
f_switch = theano.function([a, b], z_switch,
mode=theano.Mode(linker=vm)) # 建立switch調用函數
print f_switch(a, b) # 調用
另外此類問題建議在Theano-user (Google 網上論壇) 上問。
推薦閱讀: