簡體   English   中英

Theano.Tensor.Sum函數有什么問題?

[英]What is wrong in Theano.Tensor.Sum function?

我試圖在Theano中實現一個新節點,並且為了測試每一步,我將所有內容放在一邊並測試輸出結果。 這些步驟之一是在二維中測試求和函數。 輸出對於第一個維度是好的,但是當我應用第二個維度時,它將得到奇怪的結果。 我將輸出與Numpy進行了比較。 請在下面查看代碼和結果。

我做了另一個實驗,所以我將其分為兩個問題:

  1. 第一個問題:

     arr = np.ones((2, 100, 100)).astype(np.float32) x = T.ftensor3('x') tester = T.sum(x) tester2k = T.sum(x, axis=2) s1 = theano.function([x], tester) s2k = theano.function([x], tester2k) print s1(arr) print s2k(arr) The first gives 5625 instead of 20000 The second gives 30 instead of 100 [30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30. 30................... 
  2. 第二個問題

     arr = np.array([[[.1,.2],[.3,.4]],[[.2,.5],[.6,.7]],[[.2,.6],[.7,.4]]]).astype(np.float32) x = T.ftensor3('x') y = T.max(x) z2 = T.sum(T.exp(x), axis=(2,1)) tester1 = T.exp(x) tester2 = T.sum(tester1, axis=2) tester3 = T.sum(tester2, axis=1) s1 = theano.function([x], tester1) s2 = theano.function([x], tester2) s3 = theano.function([x], tester3) final = theano.function([x], z2) firstValue = s1(arr) print firstValue print "\\n" secValue = s2(arr) print secValue print "\\n" thirdValue = s3(arr) print thirdValue print '\\n' print final(arr) print "-----------------\\n" print firstValue[0,:,:] print "\\n" # print firstValue[0,:,:].sum() firstSum = np.sum(firstValue, axis=2) print firstSum print np.sum(firstSum, axis=1) 

    這是輸出。

     [[[ 1.10517097 1.22140276] [ 1.34985888 1.49182475]] [[ 1.22140276 1.64872122] [ 1.82211888 2.01375294]] [[ 1.22140276 1.82211888] [ 2.01375294 1.49182475]]] [[ 2.32657385 2.84168363] [ 2.87012386 3.8358717 ] [ 3.04352164 3.50557756]] [ 3.67643261 4.69224262 5.05727482] [ 3.67643261 4.69224262 5.05727482] ----------------- [[ 1.10517097 1.22140276] [ 1.34985888 1.49182475]] [[ 2.32657385 2.84168363] [ 2.87012386 3.8358717 ] [ 3.04352164 3.50557756]] [ 5.16825771 6.70599556 6.54909897] 

如您所見,第一個軸為2的維將得到正確的求和結果,但是當我對一個軸進行求和時,結果不會得到任何數字。 我測試了兩次乘以2,然后再乘以1,並通過給出兩個軸(2,1)來測試功能。

更新:

第一個問題,結果並不代表實際價值

第二個問題,當使用keepdims=True順序應用求和函數時,結果總和良好,但是當使用One函數給出兩個軸(1,2)時,即使keepdims=True ,結果也是錯誤的。

此問題與Theano.0.10以下的版本有關,一旦更新,便解決了該問題。 萬一有人面臨同樣的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM