2016-05-13 27 views
0

當我使用GPU來在MATLAB運行此項目轉換爲從gpuArray邏輯是不可能

function y = relu(x) 
     if x>0 
     y=x; 
     else 
     y=0.1*x; 
     end 

誤差轉換爲從gpuArray邏輯是不可能 錯誤RELU(5行) 如果x > 0 而x的類型是4-D gpuArray。 如何解決這個問題,謝謝...

+0

也,我不知道你在做什麼,但你的代碼的工作只有在'x'是大小1×1。真的,擁有1x1 gpuArray是一個可怕的想法。你是否指y(x> 0)= x(x> 0); Y(x <0的)= 0.01 * X(X <0)'?因爲如果其中任何一個是真的,第一個如果將是真的。 –

+0

嗨,請考慮接受下面的答案之一。雖然這不是強制性的,但對於那些試圖幫助你的人來說,這是一個不錯的姿態。這也將使這個問題看起來解決了將來可能有類似問題的任何人。謝謝=) –

回答

1

我沒有並行計算工具箱,所以我會爲你提供一個例子應該工作,根據documentation

gt操作是gpuArray元件來實現,所以這應該工作

function y = relu(x) 
if gt(x,0) 
    y=x; 
else 
    y=0.1*x; 
end 
0

在這種情況下,MATLAB不知道如何將一個非標量gpuArray轉換成標logical來控制if聲明。它不知道如何轉換成標量,因此你應該做的只是

if all(x > 0) 
    ... 
end