2016-03-12 17 views
0

只有在嘗試使用炬力的CUDA功能而不是依賴CPU後纔出現此問題。在`CudaTensor`上使用`apply`方法的異常

我試圖初始化一個卷積神經網絡的權重CudaTensor。功能如下:

function fill_0normal(t,sigma) 
    t:apply(function() return torch.normal(0,sigma) end) 
end 

和它下面的方式調用:

fill_0normal(m.weight, sigma) 

m是卷積模塊,m.weight是一個CudaTensorsigma是一個浮點值。

例外,我得到的是這樣的:什麼可能導致其

/hpc/sw/torch7-2016.02.09/bin/luajit: invalid arguments: number number 
expected arguments: *CudaTensor* [float] [float] 
stack traceback: 
    [C]: at 0x2aaaaf63e040 
    [C]: in function 'func' 
    /hpc/sw/torch7-2016.02.09/share/lua/5.1/torch/FFI.lua:117: in function 'apply' 
    /hpc/sw/torch7-2016.02.09/share/lua/5.1/cutorch/Tensor.lua:3: in function 'apply' 
    setup_model.lua:4: in function 'fill_0normal' 
    setup_model.lua:16: in function 'init_conv' 
    setup_model.lua:43: in function 'init_module' 
    setup_model.lua:90: in function 'initializeNetRandomly' 
    assignment3-cifar10.lua:49: in main chunk 
    [C]: in function 'dofile' 
    .../torch7-2016.02.09/lib/luarocks/rocks/trepl/scm-1/bin/th:145: in main chunk 
    [C]: at 0x00406010 

任何想法?

我也嘗試將torch.normal返回的值轉換爲 一個元素CudaTensor,但它沒有幫助。

+0

在這個問題中,我看不到CUDA內核代碼,CUDA工具包/庫或CUDA運行時錯誤。事實上,lua編譯器在對後端CUDA支持的框架的調用中生成無效參數錯誤並不意味着這個問題,就像書面形式,與CUDA有任何關係。如果您直接爲CUDA API使用cutorch包裝並遇到問題,或者獲取CUDA運行時錯誤,則可能需要將其標記爲CUDA問題。但你顯然不是,因此,這不是一個CUDA問題。 – talonmies

回答

2

您可以直接調用:在張量上正常。

function fill_0normal(t,sigma) do 
    t:normal(0, sigma) 
end 
+0

謝謝,這確實解決了這個問題。但不幸的是,目前還不清楚爲什麼原始代碼無法正常工作。有任何想法嗎? – fstab

+2

因爲你用錯了。看看應用函數簽名:https://github.com/torch/torch7/blob/master/doc/tensor.md#self-applyfunction – smhx