From: François Fleuret Date: Wed, 24 May 2023 15:20:12 +0000 (+0200) Subject: Update. X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=commitdiff_plain;h=7d526f2fa3849a4a049b3a1da4dddb92e3132428;p=pytorch.git Update. --- diff --git a/eingather.py b/eingather.py index f8b3e89..b271100 100755 --- a/eingather.py +++ b/eingather.py @@ -15,7 +15,9 @@ def eingather(op, src, *indexes): s_indexes = re.findall("\(([^)]*)\)", s_src) s_src = re.sub("\([^)]*\)", "_", s_src) - shape = tuple(src.size(s_src.index(v)) for v in s_dst) + all_sizes = tuple(d for s in ( src, ) + indexes for d in s.size()) + s_all = "".join([s_src] + s_indexes) + shape = tuple(all_sizes[s_all.index(v)] for v in s_dst) idx = [] n_index = 0 @@ -54,13 +56,13 @@ def eingather(op, src, *indexes): ####################### -src = torch.rand(3, 5, 7, 11, 13) -index1 = torch.randint(src.size(2), (src.size(4), src.size(1), src.size(4))) +src = torch.rand(3, 5, 7, 11) +index1 = torch.randint(src.size(2), (src.size(3), src.size(1), src.size(3))) index2 = torch.randint(src.size(3), (src.size(1),)) # I want result[a, c, e] = src[c, a, index1[e, a, e], index2[a], e] -result = eingather("ca(eae)(a)e -> ace", src, index1, index2) +result = eingather("ca(eae)(a) -> ace", src, index1, index2) # Check @@ -69,6 +71,6 @@ error = 0 for a in range(result.size(0)): for c in range(result.size(1)): for e in range(result.size(2)): - error += (result[a, c, e] - src[c, a, index1[e, a, e], index2[a], e]).abs() + error += (result[a, c, e] - src[c, a, index1[e, a, e], index2[a]]).abs() print(error.item())