2014-10-05 41 views
0

問題:在使用像PLSA機器學習算法的巨大浮點值被服用大量的時間限制浮點陣列以較少的小數點

我們的問題是。現在,我們如何才能將浮點精度降低到小數點後兩位並進行數學運算?

我們有什麼:

用以下命令numpy的初始化np.zeros([2,4,3],np.float)

ndarray: [[[ 0.09997559 0.   0.89990234] 
    [ 0.   0.   0.  ] 
    [ 0.   0.   0.  ] 
    [ 0.   0.   0.  ]] 

[[ 0.   0.   0.  ] 
    [ 0.30004883 0.30004883 0.30004883] 
    [ 0.   0.   0.  ] 
    [ 0.   0.   0.  ]]] 


**What we needed:** 

[[[ 0.1   0.   0.9] 
    [ 0.   0.   0.  ] 
    [ 0.   0.   0.  ] 
    [ 0.   0.   0.  ]] 

[[ 0.   0.   0.  ] 
    [ 0.3   0.3   0.3  ] 
    [ 0.   0.   0.  ] 
    [ 0.   0.   0.  ]]] 
+3

這不是浮點工作原理。 – 2014-10-05 17:50:27

+0

嗨,奧利弗......這種情況下有沒有其他選擇? – Mandzzz 2014-10-05 19:11:31

回答

1

你可以使用半精度浮減少內存使用量(符號位,5位指數,10位尾數)。請參閱this

>>> b=np.zeros([2,4,3],np.float) 
>>> b.nbytes 
192 
>>> c=np.zeros([2,4,3],np.float16) 
>>> c.nbytes 
48