首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LuaJIT ffi光盘与火炬张量的最佳转换

LuaJIT ffi光盘与火炬张量的最佳转换
EN

Stack Overflow用户
提问于 2016-05-22 13:37:10
回答 1查看 480关注 0票数 1

执行LuaJIT ffi cdata 1和火炬张量2之间转换的最佳方法是什么。

根据Mike在lua用户邮件列表3中的答复,如果我们真的想将cdata转换为lua平原表,我们必须做一个循环来将每个条目复制到一个新创建的条目中。实际上,火炬张量提供了更好的LuaJIT ffi访问4的接口。所以,我目前的解决方案是先做一个循环,然后将cdata转换成lua平原表,然后调用张量构造函数,从表5创建张量。

但实际上,在我的情况下,我需要做类似的转换之间的LuaJIT ffi cdata和火炬张量非常频繁,有没有更好的方法,而不是循环复制?

  • 1 (Creating cdata Objects组)
  • 2
  • 3
  • 4
  • 5
EN

Stack Overflow用户

回答已采纳

发布于 2016-05-22 17:41:43

如果您的cdata表示一个连续的数据数组,那么您可以使用ffi.copy。下面是一个玩具示例:

代码语言:javascript
运行
复制
require 'torch'
ffi = require 'ffi'

-- create a random float array
n = 3
x = torch.rand(n):float()
cdata = x:data()
assert(type(cdata) == 'cdata')

-- copy this cdata into a destination tensor
y = torch.FloatTensor(n)
ffi.copy(y:data(), cdata, n*ffi.sizeof('float'))

assert(x:equal(y))
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37375078

复制
相关文章

相似问题

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