From 54d415ee77baab1b1ed9725d0e26bcfd2b4189e7 Mon Sep 17 00:00:00 2001 From: dikanquit Date: Fri, 29 May 2026 11:12:45 +0200 Subject: [PATCH] LSTMCell: use distinct h0/c0 zero tensors (Tensor.zeros(...),)*2 shared one Tensor across h0 and c0 --- tinygrad/nn/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tinygrad/nn/__init__.py b/tinygrad/nn/__init__.py index d8c120466d595..629e1d355a35e 100644 --- a/tinygrad/nn/__init__.py +++ b/tinygrad/nn/__init__.py @@ -411,7 +411,7 @@ def __init__(self, input_size:int, hidden_size:int, bias:bool=True): self.bias_hh: Tensor|None = Tensor.zeros(hidden_size*4) if bias else None def __call__(self, x:Tensor, hc:tuple[Tensor, Tensor]|None=None) -> tuple[Tensor, Tensor]: - if hc is None: hc = (Tensor.zeros(x.size(0), self.weight_hh.size(1), dtype=x.dtype, device=x.device, buffer=False),)*2 + if hc is None: hc = tuple(Tensor.zeros(x.size(0), self.weight_hh.size(1), dtype=x.dtype, device=x.device, buffer=False) for _ in range(2)) gates = x.linear(self.weight_ih.T, self.bias_ih) + hc[0].linear(self.weight_hh.T, self.bias_hh) i, f, g, o = gates.chunk(4, dim=1) i, f, g, o = i.sigmoid(), f.sigmoid(), g.tanh(), o.sigmoid()