From d81313dda42ee3c59397b20cbf6174f01c60a11c Mon Sep 17 00:00:00 2001 From: Maciej Skorski Date: Thu, 3 Dec 2020 18:59:23 +0100 Subject: [PATCH] adding code and simple tests --- README.md | 6 +++++- model/__init__.py | 1 + model/__init__.pyc | Bin 0 -> 145 bytes model/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 176 bytes model/__pycache__/model.cpython-36.pyc | Bin 0 -> 624 bytes model/core/__init__.py | 0 model/core/__init__.pyc | Bin 0 -> 109 bytes model/core/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 154 bytes model/core/__pycache__/model.cpython-36.pyc | Bin 0 -> 629 bytes model/core/model.py | 17 +++++++++++++++++ model/core/model.pyc | Bin 0 -> 715 bytes model/tests/__init__.py | 0 .../tests/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 155 bytes model/tests/__pycache__/test.cpython-36.pyc | Bin 0 -> 1390 bytes model/tests/test.py | 10 ++++++++++ model/tests/test.pyc | Bin 0 -> 1415 bytes 16 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 model/__init__.py create mode 100644 model/__init__.pyc create mode 100644 model/__pycache__/__init__.cpython-36.pyc create mode 100644 model/__pycache__/model.cpython-36.pyc create mode 100644 model/core/__init__.py create mode 100644 model/core/__init__.pyc create mode 100644 model/core/__pycache__/__init__.cpython-36.pyc create mode 100644 model/core/__pycache__/model.cpython-36.pyc create mode 100644 model/core/model.py create mode 100644 model/core/model.pyc create mode 100644 model/tests/__init__.py create mode 100644 model/tests/__pycache__/__init__.cpython-36.pyc create mode 100644 model/tests/__pycache__/test.cpython-36.pyc create mode 100644 model/tests/test.py create mode 100644 model/tests/test.pyc diff --git a/README.md b/README.md index 3a9a513..95fd7fb 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ # Fast Word2Vec TF -Fast implementation of Word2Vec in Tensorflow \ No newline at end of file +Fast implementation of Word2Vec in Tensorflow + +## Run Tests + +fast_TF_Word2Vec$python3 -m model.tests.test \ No newline at end of file diff --git a/model/__init__.py b/model/__init__.py new file mode 100644 index 0000000..75ea5b5 --- /dev/null +++ b/model/__init__.py @@ -0,0 +1 @@ +from .core.model import * diff --git a/model/__init__.pyc b/model/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..024dea7693f56e6e4bc83914ee18c7f66122b9bd GIT binary patch literal 145 zcmZSn%*(Y!&ryk0?N2?tQr1}I#blWGSx5TpwL DCYBf^ literal 0 HcmV?d00001 diff --git a/model/__pycache__/__init__.cpython-36.pyc b/model/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..72e614988bc90ee05f3030c6be35d0f8b92520a2 GIT binary patch literal 176 zcmXr!<>lI&UT%I$YR*cAB4(fznE2(SpOK%Ns-K&foSB-X?~m(TK0Y%qvm`!Vub}c4hYe7yG$+*#WMeT9GXMY@ C!Yv8_ literal 0 HcmV?d00001 diff --git a/model/__pycache__/model.cpython-36.pyc b/model/__pycache__/model.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..70cb1a535a5b83af06f766e53ed121fbcba364bf GIT binary patch literal 624 zcmYjPOOMkq5ccHZq-l%L9uPMqZn+Qyw-o{;5ZqR<%S*mQA)ao#%A;#1kRbO|#0?>S z20w+rkSnMDg}uNyEz*wljX%%lvB!^x^LZ59`JMiB82iJnnM?dBLEj=LnS_D~kiK-K z_Z5UA;f%$6M;bf1nkN!Jt#Ukm`ReWQ{oJ=vvMFIsct+6Q$TjQ&jJJg!3M_YwYhdea z{E<6`5$D8Rf=BQTm!yx(m)_Q)2AjaD#?Ik}Z*6`^JTRejr2CylhWKr^nNTz|6UvB8 zbjDt@Q}%%lLS_3WJD_T)2*zR%Ue>Mj?k`z98JuP@@cn57KhK&aDiP?*7V!%Xyv&-i zEyNVNbymq#u1YN?jmj#$t~H9A3T2yPTGZ#dEoqXN9wH@XRXiP_8=w~)%a16#L*FY- zb%>x($FK;x|D^BiN^8Lneb}daHh4Dviz$1i{BdNQ5?2p)q77+?f49Dul(1xTbY1T$zd`mJOr0tq9CU+(%D`MIh3xrxb{ zsag6i`N^fZsd**E`a!A1sfk6&8Tx67#U=3}Zt>yyMJYyMsmc1e`6;P6`pNl4srvEp cnR%Hd@$q^EmA5!-fD)xSsdgX>ih-B`0L`B!_5c6? literal 0 HcmV?d00001 diff --git a/model/core/__pycache__/model.cpython-36.pyc b/model/core/__pycache__/model.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2dc435eec2dd294f2e0e4366f8e978c0321d6ca0 GIT binary patch literal 629 zcmYjPOK;RL5ccHZWV5>n^?3kjq4}PaV9mf8!TjmmfLD2WeNhYCS0;Dfp z>3s#^NH}LP-;u^nujh%x&#N2{PhPz}e4P6>N;W0T2}cC|jaWQgBqn+ZijGog&g zMCa@^J7XW{AXK)0x&x|)ieM}T;bq-Q@BWg-lfh{g1HUMFEMMVea$M)Mb=BzP3^isd zUnYx8H|d*~>HAvAC+{#%%35NP{Gxs4Jz#TV)2u3{y qMc;(Qu810}bgdRe{YBa59_6u|TW&_e5I&kD literal 0 HcmV?d00001 diff --git a/model/core/model.py b/model/core/model.py new file mode 100644 index 0000000..52a427f --- /dev/null +++ b/model/core/model.py @@ -0,0 +1,17 @@ +import tensorflow as tf + +def logp(x,y,embedx,embedy,device='/device:GPU:0'): + with tf.device(device): + # embeded vectors: x is central and y is context + y_embed = tf.gather(embedy,y) # (N_BATCH,N_DIM) + x_embed = tf.gather(embedx,x) # (N_BATCH,N_DIM) + + # logprob of (y,x) and of (x,) + yx_logp = tf.squeeze( tf.matmul(tf.expand_dims(x_embed,1),tf.expand_dims(y_embed,-1)) ) # (N_BATCH,) + x_logp = tf.matmul(embedy,tf.transpose(x_embed)) # (N_WORDS,N_BATCH) + x_logp = tf.reduce_logsumexp(x_logp,axis=0) # (N_BATCH,) + + # logprob of (y|x) + y_x_logp = yx_logp - x_logp # (N_BATCH,1) + logp = tf.reduce_mean(y_x_logp) + return logp \ No newline at end of file diff --git a/model/core/model.pyc b/model/core/model.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de0ddd5420191e8c94afa18c36f7414d2495c1da GIT binary patch literal 715 zcmZ`%O;6lF47HQ}OiMwFDj|W?Yfhz7Z>T~@9C|}#R~3lMD(nn2RkGRcOdvto6TSC$ z@F%$Qd-wtH>_&nM(fEz$&9le055{_e6O2bhW)2iQ!kyZpf(Sw)#17-Tu45Sq!buh?A znXT1OuW=q~qKKM^CMTG|@hM;uOHW5B1GQ~014ydWrPwJR0=!JmU-%xj|Km{iGV#Cc z()Yo-Kc%%dR_Q$Pd6{_`ldTrX+)PcHJFkhB$=odpXZ;3lm)4XsJI#tqSLTpvNK586 zna7gCOJS8_t?6xkZcX*#)?=+ss;H-WsTEbP{JN4y78=vK1C_T2=~x6Yc2aO3;N^v} z*{q O*UHT9OPrIw-UrVO&5=F; literal 0 HcmV?d00001 diff --git a/model/tests/__init__.py b/model/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/model/tests/__pycache__/__init__.cpython-36.pyc b/model/tests/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..236d8b15097e0683dfde8d527fee6099e06d8a7c GIT binary patch literal 155 zcmXr!<>fL|IT_CY1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnFAx2U{M=Oi+{EO} z)GU3M{N&Qy)Vz{n{h-w1)Wo9X4E?mk;*$6fxA^eOV literal 0 HcmV?d00001 diff --git a/model/tests/__pycache__/test.cpython-36.pyc b/model/tests/__pycache__/test.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0a59c167be369fcd57e7d9a7c586a2b897dabb58 GIT binary patch literal 1390 zcmZ`(&2AGh5VpO$*=?FurIbGjL4^>~a%iM-tx%=50S=@hiCVOm)oSfD8#ZyUHC&DFth6I6Ba`pz9S7C!`NB`g8(BCJZ1EaN#tK)0NUVjosalnfXL(p^BZ)<0LoU zcr+3UfVx`b-Je8N!OP$6dQT2SeUPM?=-0PpIv$8&q3bQ7MWWJPy_@JF?lj_ksrdSy zNb3X1MP4reskU-$bY!Zi#x_6&0U~)qj~`#-vvzUt3N z!Z4B3kTP^kwWQfmV`2PETNvlu8%eH3NYxyiw~R|M52~qIFjE6Ops`R0U8KiPZb3dh zJj0H-(b8hyfC;DHDB?evriMEQHa*Cqa3=Ko5-@^2?joCg;PZjB$j6eG*F2u@i9DC9 zhf?J{@~jehR#O-&bd?W-@$@Lq3R5eYw~|Z?ZRR>hBeA2DR3Wp34b}g1E;D7V7r>DY zKoIKE6;``FU-o!2te7BM4qwuI~|S;4i?s512w7Q!_}iVH}6P3C6>$ xKsctFN+s6plQjXN*h=7!fOl`LY)Ipx;Z2cDuu&%YHQuF0ECCJJ^3t*w(0`RLMZ*99 literal 0 HcmV?d00001 diff --git a/model/tests/test.py b/model/tests/test.py new file mode 100644 index 0000000..6f712dd --- /dev/null +++ b/model/tests/test.py @@ -0,0 +1,10 @@ +import unittest +from ..core.model import * + +class TestTensorflowSetup(unittest.TestCase): + + def test_version2x(self): + self.assertTrue(tf.version.VERSION.startswith('2')) + +if __name__ == '__main__': + unittest.main() diff --git a/model/tests/test.pyc b/model/tests/test.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a4ebdb49c67f9f765b619cf5be7ab216d468df23 GIT binary patch literal 1415 zcmb7D!EVz)5S?`rH!Z1DC?FMaKfnRkQ=BG zg{Ro_cOggC`Ju1!`SDxpPs+@#u=31HEVl~*NMqm;rX2&TQ3ap^RoW5{qZZChc#Dh1 z0hW6NaSlQX=hP4zE?op-5Usv6@H{;&Oa1nbj-mjzzXOpvXDfgBWtkSf1ADnx*sA8x zhUsiEjqnu}ZWEdZA@_{(>Eg_9G@e8+hOiuCi&+7ssX+IjTmyPx#Lxx8fz;UPx&$5* zc#XO&wE&v2Mm?&Q*013}?lk)qLjAOGR%yhWtR#jPPtF;I^lUqOYHF=VJwUx`u zIS8?qo(MT?|2t4kn1{ID3{=