From db3be55ebde7a4e01142a8a9d2b0f162390bc5a0 Mon Sep 17 00:00:00 2001 From: ceramisch <carlos.ramisch@lis-lab.fr> Date: Fri, 10 Jan 2025 00:36:23 +0100 Subject: [PATCH] Add cm6 code --- cm-code/biaffine.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100755 cm-code/biaffine.py diff --git a/cm-code/biaffine.py b/cm-code/biaffine.py new file mode 100755 index 0000000..15fb2dd --- /dev/null +++ b/cm-code/biaffine.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +import numpy as np + +n = 4 +d = 10 + +Hhead = np.random.rand(n,d) # head vectors as rows +Hdep = np.random.rand(n,d) # dep vectors as rows +Uarc = np.random.rand(d,d) # biaffine intermediate matrix +uarc = np.random.rand(d,1) # biaffine bias + +Sarc_original = Hhead @ Uarc @ Hdep.T + Hhead @ uarc +#print(Sarc_original) + +ubias = np.vstack((Uarc.T, uarc.T)) # Uarc transposition not in paper, but not important since learned +Hdepext = np.hstack((Hdep,np.ones((n, 1)))) +Sarc_simple = ((Hdepext @ ubias) @ Hhead.T).T # final transpose: dependents as columns +#print(Sarc_simple) + +print(f"Original and simplified versions identical: {np.allclose(Sarc_original, Sarc_simple)}") # quality up to tolerance -- GitLab