mirror of
https://github.com/tinygrad/tinygrad.git
synced 2026-08-29 12:36:07 +00:00
cleanup Tensor.triu and Tensor.tril (#2953)
`.where` does the dtype and shape conversions for 0, no need to use zeros_like
This commit is contained in:
+2
-4
@@ -666,10 +666,8 @@ class Tensor:
|
||||
def _tri(r:sint, c:sint, k:int=0, **kwargs) -> Tensor:
|
||||
assert all_int((r,c)), "does not support symbolic"
|
||||
return Tensor.arange(r, **kwargs).unsqueeze(1).expand(r,c) <= Tensor.arange(-k, c-k, **kwargs).unsqueeze(0).expand(r,c)
|
||||
def triu(self, k:int=0) -> Tensor:
|
||||
return Tensor._tri(self.shape[-2], self.shape[-1], k=k, device=self.device).where(self, Tensor.zeros_like(self))
|
||||
def tril(self, k:int=0) -> Tensor:
|
||||
return Tensor._tri(self.shape[-2], self.shape[-1], k=k+1, device=self.device).where(Tensor.zeros_like(self), self)
|
||||
def triu(self, k:int=0) -> Tensor: return Tensor._tri(self.shape[-2], self.shape[-1], k=k, device=self.device).where(self, 0)
|
||||
def tril(self, k:int=0) -> Tensor: return Tensor._tri(self.shape[-2], self.shape[-1], k=k+1, device=self.device).where(0, self)
|
||||
|
||||
# ***** mlops (unary) *****
|
||||
|
||||
|
||||
Reference in New Issue
Block a user