Hey there,
I would like to get a vector from two vectors indices and values.
It sounds like a sparse vector (give values and indices, or implicitly use 0), but I didn’t find much doc about it and failed this way.
I looked about scatter
that does not helps. In fact I would like a kind of fill_values
similar to existing fill
but with a vector as argument, not a scalar.
In order words:
Given two vectors:
-
v
FloatTensor,[n, 1]
-
i
LongTensor,[n, 1]
I would like to make a FloatTensor r [dim, 1]
such as:
- for each j in [0, n[:
r[i[j]] = v[j]
(A) -
dim
is known, and for each i in [0, n[ we havedim > i[j]
Since I haven’t found any built-in function I tried to do it with loops, starting with a zeros(dim) vector, iterating over j
and using (A) to copy the value, but I’m facing an error:
~~RuntimeError: copy from Variable to torch.FloatTensor isn't implemented
Edit: using .data
solves this, it was in fact a variable, not a tensor my bad here.
Are loops the only way to do it? I’m not sure how efficient it would be.
Thx