Haskell 加速复制矩阵
Posted
技术标签:
【中文标题】Haskell 加速复制矩阵【英文标题】:Haskell Accelerate replicate matrix 【发布时间】:2021-06-14 03:04:29 【问题描述】:如何在 Haskell Accelerate 中复制矩阵?
例如,我有一个矩阵mat :: Matrix (Z :. 2 :. 5) ...
。我想得到一个形状为Z :. 9 :. 2 :. 5
的三维数组。
我尝试使用A.replicate (A.lift (Z :. 9 :. All)) mat
,但出现错误
无法将类型“Z”与“DIM0 :.”匹配。诠释' 预期类型:Acc (Array (SliceShape ((Z :. Int) :. All)) a) 实际类型:Acc(矩阵a)
这是什么意思?
同样,如果我有一个形状为Z :. 9 :. 5
的矩阵,我怎样才能得到一个形状为Z :. 9 :. 2 :. 5
的三维数组?
【问题讨论】:
【参考方案1】:问题是切片需要与输入数组具有相同的秩(维数)。 All
并不表示“所有其余维度”,而仅表示“此维度中的所有元素”。因此,您可以通过以下方式解决您的问题:
A.replicate (A.lift (Z :. 9 :. All :. All)) mat
这也提供了一些关于如何回答第二个问题的直觉:
A.replicate (A.lift (Z :. All :. 2 :. All)) mat
我不知道是否有办法说“所有其他维度”。
错误信息Couldn't match type 'Z' with 'DIM0 :. Int'
表示你的形状排名不正确。您需要添加另一个维度。如果它说:Couldn't match type 'Z' with 'Z :. Int'
,也许会更容易阅读。
【讨论】:
以上是关于Haskell 加速复制矩阵的主要内容,如果未能解决你的问题,请参考以下文章