aboutsummaryrefslogtreecommitdiffstats
path: root/extensions-builtin/Lora/lyco_helpers.py
diff options
context:
space:
mode:
authorAUTOMATIC1111 <16777216c@gmail.com>2023-08-05 05:01:38 +0000
committerAUTOMATIC1111 <16777216c@gmail.com>2023-08-05 05:01:38 +0000
commitef1698fd6dbd6387341a1eeeded068ff1476ee50 (patch)
treeddaa0cf76e8cf95b93f63909a026ae3d5eab460a /extensions-builtin/Lora/lyco_helpers.py
parent0fae47e97445df4e7de4d85538a80917fc2a2457 (diff)
parentc613416af375092f55b9bc8649c949e95d250c44 (diff)
downloadstable-diffusion-webui-gfx803-ef1698fd6dbd6387341a1eeeded068ff1476ee50.tar.gz
stable-diffusion-webui-gfx803-ef1698fd6dbd6387341a1eeeded068ff1476ee50.tar.bz2
stable-diffusion-webui-gfx803-ef1698fd6dbd6387341a1eeeded068ff1476ee50.zip
Merge branch 'dev' into extra-networks-always-visible
Diffstat (limited to 'extensions-builtin/Lora/lyco_helpers.py')
-rw-r--r--extensions-builtin/Lora/lyco_helpers.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/extensions-builtin/Lora/lyco_helpers.py b/extensions-builtin/Lora/lyco_helpers.py
new file mode 100644
index 00000000..279b34bc
--- /dev/null
+++ b/extensions-builtin/Lora/lyco_helpers.py
@@ -0,0 +1,21 @@
+import torch
+
+
+def make_weight_cp(t, wa, wb):
+ temp = torch.einsum('i j k l, j r -> i r k l', t, wb)
+ return torch.einsum('i j k l, i r -> r j k l', temp, wa)
+
+
+def rebuild_conventional(up, down, shape, dyn_dim=None):
+ up = up.reshape(up.size(0), -1)
+ down = down.reshape(down.size(0), -1)
+ if dyn_dim is not None:
+ up = up[:, :dyn_dim]
+ down = down[:dyn_dim, :]
+ return (up @ down).reshape(shape)
+
+
+def rebuild_cp_decomposition(up, down, mid):
+ up = up.reshape(up.size(0), -1)
+ down = down.reshape(down.size(0), -1)
+ return torch.einsum('n m k l, i n, m j -> i j k l', mid, up, down)