Haskell 加速复制矩阵
Haskell Accelerate replicate matrix
如何在 Haskell Accelerate 中复制矩阵?
比如我有一个矩阵mat :: Matrix (Z :. 2 :. 5) ...
。我想得到一个形状为 Z :. 9 :. 2 :. 5
的三维数组。
我尝试使用 A.replicate (A.lift (Z :. 9 :. All)) mat
,但出现错误
Couldn't match type ‘Z’ with ‘DIM0 :. Int’
Expected type: Acc (Array (SliceShape ((Z :. Int) :. All)) a)
Actual type: Acc (Matrix a)
这是什么意思?
同样,如果我有一个形状为 Z :. 9 :. 5
的矩阵,我怎样才能得到一个形状为 Z :. 9 :. 2 :. 5
的三维数组?
问题是切片需要与输入数组具有相同的等级(维数)。 All
并不代表 'all the rest of the dimensions',它只代表 'all the elements in this dimension'。因此,您可以通过以下方式解决您的问题:
A.replicate (A.lift (Z :. 9 :. All :. All)) mat
这也给出了一些关于如何回答第二个问题的直觉:
A.replicate (A.lift (Z :. All :. 2 :. All)) mat
不知道有没有办法说'all the rest of the dimensions'.
错误信息Couldn't match type 'Z' with 'DIM0 :. Int'
表示你的形状排名不正确。您需要添加另一个维度。如果它说:Couldn't match type 'Z' with 'Z :. Int'
.
可能会更容易阅读
如何在 Haskell Accelerate 中复制矩阵?
比如我有一个矩阵mat :: Matrix (Z :. 2 :. 5) ...
。我想得到一个形状为 Z :. 9 :. 2 :. 5
的三维数组。
我尝试使用 A.replicate (A.lift (Z :. 9 :. All)) mat
,但出现错误
Couldn't match type ‘Z’ with ‘DIM0 :. Int’ Expected type: Acc (Array (SliceShape ((Z :. Int) :. All)) a) Actual type: Acc (Matrix a)
这是什么意思?
同样,如果我有一个形状为 Z :. 9 :. 5
的矩阵,我怎样才能得到一个形状为 Z :. 9 :. 2 :. 5
的三维数组?
问题是切片需要与输入数组具有相同的等级(维数)。 All
并不代表 'all the rest of the dimensions',它只代表 'all the elements in this dimension'。因此,您可以通过以下方式解决您的问题:
A.replicate (A.lift (Z :. 9 :. All :. All)) mat
这也给出了一些关于如何回答第二个问题的直觉:
A.replicate (A.lift (Z :. All :. 2 :. All)) mat
不知道有没有办法说'all the rest of the dimensions'.
错误信息Couldn't match type 'Z' with 'DIM0 :. Int'
表示你的形状排名不正确。您需要添加另一个维度。如果它说:Couldn't match type 'Z' with 'Z :. Int'
.