【问题标题】:Conversion to logical from gpuArray is not possible无法从 gpuArray 转换为逻辑
【发布时间】:2016-05-13 19:51:16
【问题描述】:

当我在 matlab 中使用 gpu 运行这个项目时

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

错误是无法从 gpuArray 转换为逻辑 relu 中的错误(第 5 行) 如果 x>0 而 x 的类型是 4-D gpuArray。 这个问题怎么解决,谢谢...

【问题讨论】:

  • 另外,我不知道你在做什么,但你的代码只有在 x 大小为 1x1 时才有效。真的,拥有一个 1x1 gpuArray 是一个糟糕的主意。你的意思是y(x>0)=x(x>0); y(x<0)=0.01*x(x<0)?因为如果其中任何一个为真,第一个 if 将为真。
  • 您好,请考虑接受以下答案之一。虽然这不是强制性的,但对于那些试图帮助你的人来说,这是一个很好的姿态。对于将来可能有类似问题的任何人,它也会使问题看起来已经解决。谢谢=)

标签: matlab deep-learning


【解决方案1】:

我没有并行计算工具箱,所以我会为您提供一个应该工作的示例,根据documentation

gt 操作是为 gpuArray 元素实现的,所以这个应该工作:

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

【讨论】:

    【解决方案2】:

    在这种情况下,MATLAB 不知道如何将非标量 gpuArray 转换为标量 logical 以控制 if 语句。它确实知道如何转换标量,所以你应该简单地做

    if all(x > 0)
        ...
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 2013-06-22
      • 2013-04-04
      • 2019-10-29
      • 2021-06-01
      • 2012-11-22
      • 1970-01-01
      相关资源
      最近更新 更多