Я пытаюсь найти лучший способ финансировать совокупный продукт Gorgonia Tensor. Например:
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 для ограничения памяти. При необходимости я мог бы переключить его на матрицы гонума, но я бы предпочел не тратить дополнительную память, если есть способ сделать это с помощью float32.