Hello, I have a simple question for you but confused me a lot.
Suppose I got a tensor A in [batch_size, n, m], and I need to get a tenor B from A in the same shape, for B[:, i, :] = f(B[:, i-1, :], A[:, i, :]), the f could be any function that complex enough. The initial state of B, namely B[:, 0, :] could be any, say, all zero vector.
To get B, I need a for loop:
for i in range(A.shape[1]):
B[:, i, :] = f(B[:, i-1, :], A[:, i, :])
However this cost much time espetially when A.shape[1] is very large for the backpropogation of gradient.
For example, one f I meet is:    B[:, i, :] = (B[:, i - 1, :] + cat([zeros(batch_size, A.shape[1], 0), B[:, i - 1, : -1]], -1)) * A[:, i, :]
How to accelerate or avoid this for loop?
Thank you for your answer~~~~