 # Speeding up a tensor operation

I am trying to speed up the below operation by doing some sort of matrix/vector-multiplication, can anyone see a nice quick solution?
It should also work for a special case where a tensor has shape 0 (torch.Size([])) but i am not able to initialize such a tensor.
See the image below for the type of tensor i am referring to:
tensor to add to test

``````def adstock_geometric(x: torch.Tensor, theta: float):
x_decayed = torch.zeros_like(x)
x_decayed = x

for xi in range(1, len(x_decayed)):
x_decayed[xi] = x[xi] + theta * x_decayed[xi - 1]

return x_decayed

def adstock_multiple_samples(x: torch.Tensor, theta: torch.Tensor):

listtheta = theta.tolist()
if isinstance(listtheta, float):
theta=theta)
x_decayed = torch.zeros((100, 112, 1))
for idx, theta_ in enumerate(listtheta):
theta=theta_)
x_decayed[idx] = x_decayed_one_entry
return x_decayed

if __name__ == '__main__':
ones = torch.tensor()
hundreds = torch.tensor([idx for idx in range(100)])
x = torch.tensor([[idx] for idx in range(112)])