go - Go 中 Gorgonia 张量的有效累积乘积?
问题描述
我正在努力寻找为 Gorgonia 张量的累积产品提供资金的最佳方式。例如:
T := ts.New(ts.WithShape(3,4), ts.WithBacking(ts.Range(ts.Float32,1,13)))
for row := 1; row < 3; row++ {
for col :=0; col < 4; col++ {
val1, _ := T.At(row-1, col).(float32)
val2, _ := T.At(row, col).(float32)
newVal := val1*val2
T.SetAt(newVal, row, col)
}
}
我希望输出为:
[1 2 3 4 ]
[5 12 21 32 ]
[45 120 231 384]
这可行,但对于中等大小的张量(500x50),每次迭代需要 2500 微秒秒。我需要它更快。numpy .cumprod() 进行类似的计算大约需要 10-20 微秒。有没有更有效的编码方式?
我正在使用张量,因为我需要进行矩阵乘法,并且我想使用 float32 来进行内存限制。如有必要,我可以将其切换到 gonum 矩阵,但如果有办法使用 float32 来实现,我宁愿不必花费额外的内存。
解决方案
推荐阅读
- node.js - 使用 Nodejs 将参数传递给 CloudFormation 函数
- makefile - ld:未定义的引用,但它应该让它们未解决
- ios - 如何在我的子视图中获取一个按钮以在我的视图控制器中启用 rightbarbuttonitem
- lodash - 是否存在 _.groupBy 的倒数?
- google-sheets - 如何使我的脚本仅在特定行中工作?
- java - 为什么 mongo 弃用了 MongoIterable.forEach(Block)?
- python - 当数据库夹具拆解在测试中失败时该怎么办?
- java - 使用 SciJava 在 jupyter notebook 中运行简单脚本时出错
- ruby-on-rails - Capybara 可以通过溢出检查 HTML 元素是否被覆盖:隐藏的父级?
- .net - Log4net RollingFileAppender 正在覆盖文件而不是将数字附加到结尾