首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地实现Foreign.Storable来创建向量?

如何正确地实现Foreign.Storable来创建向量?
EN

Stack Overflow用户
提问于 2018-08-22 01:55:51
回答 1查看 138关注 0票数 2

我一直在做一个用列表来计算人工神经网络操作的项目。现在,我想将其转换为Data.Vector,以提高其效率。然而,目前我很难实现Foreign.Storable的定义,这是非常重要的。

好的,首先,我使用了Data.Array.Repa进行计算,有一个类型同义词,如下所示(CAMTypes.hs):

代码语言:javascript
复制
type NTTVU = Array U VShape NTT

然后,我想以如下方式使用Data.Vector

代码语言:javascript
复制
import qualified Data.Vector.Storable as VS
-- ...
trs = createThreshold 3 0 [9,8,7] :: NTTVU

但是,我得到以下错误:

代码语言:javascript
复制
$> VS.singleton trs
*** Exception: Prelude.undefined
CallStack (from HasCallStack):
  error, called at libraries/base/GHC/Err.hs:79:14 in base:GHC.Err
  undefined, called at ./Data/Vector/Storable/Mutable.hs:131:22 in vector-0.12.0.1-JlawpRjIcMJIYPJVsWriIA:Data.Vector.Storable.Mutable
CallStack (from -prof):
  Data.Vector.Storable.Mutable.basicUnsafeNew.size (Data/Vector/Storable/Mutable.hs:131:7-36)
  Data.Vector.Storable.Mutable.basicUnsafeNew (Data/Vector/Storable/Mutable.hs:(124,3)-(132,38))
  Data.Vector.Storable.Mutable.CAF:lvl12_r7YZK (<no location info>)

我已经完成了instance Storable NTTVU where的实现,但仍然在抱怨;我启用了分析,但没有告诉我更多的信息;尝试了按步骤进行调试,但也没有成功。希望有人知道很多关于它和如何解决它。

有关更多上下文,整个工程和相关文件:

EN

回答 1

Stack Overflow用户

发布于 2018-08-22 11:11:59

我发现了问题:sizeOf

当我实现它时,它依赖于vec来存在,并且定义了值,然而,情况并非如此。内存大小应该在向量存储实现之前就知道,这就是为什么它要创建错误。

因此,现在我已经将大小固定为"4",但是如果您想要的是运行时分配,则不要使用它。

以下是该解决方案的提交:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51958883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档