projects
/
pytorch.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a73bd6c
)
Update.
author
François Fleuret
<francois@fleuret.org>
Wed, 24 May 2023 15:20:12 +0000
(17:20 +0200)
committer
François Fleuret
<francois@fleuret.org>
Wed, 24 May 2023 15:20:12 +0000
(17:20 +0200)
eingather.py
patch
|
blob
|
history
diff --git
a/eingather.py
b/eingather.py
index
f8b3e89
..
b271100
100755
(executable)
--- 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)
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
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]
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
# 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)):
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())
print(error.item())