def run(): dims = 20 negrate = 1 batsize = 100 epochs = 3000 path = "../../data/Family/SN-" traind, valid, test = family.getdata(path) lemb = VectorEmbed.indim(traind.numsubjs+2).outdim(dims).Wreg(l2reg(0.000001))() remb = VectorEmbed.indim(traind.numsubjs+2).outdim(dims).Wreg(l2reg(0.000001))() inp = Input(T.imatrix()) out = ((inp[:, 0] >> lemb) & (inp[:, 2] >> remb)) >> DotProduct() >> Sigmoid() outtest = Output(T.fvector()) loss = (out & outtest) >> MSELoss() trainer = Trainer\ .batsize(batsize)\ .epochs(epochs)\ .onrun(getonrun())\ .offrun(offrun)\ .offepoch(getoffepoch(out))\ .onbatch(getonbatch(negrate))\ .optimizer(sgd(lr=1.))\ .batchtransformer(transbat) trainer\ .loss(loss)\ trainer.train(traind, valid)\ .test(test)
def run(): dims = 60 negrate = 1 batsize = 100 epochs = 800 path = "../../data/Family/SN-" traind, valid, test = family.getdata(path) semb = VectorEmbed.indim(traind.numsubjs+2).outdim(dims).Wreg(l2reg(0.000000001))() oemb = VectorEmbed.indim(traind.numsubjs+2).outdim(dims).Wreg(l2reg(0.000000001))() remb = MatrixEmbed.indim(traind.numrels).outdim(dims).idxoffset(traind.numsubjs+2).Wreg(l2reg(0.000000001))() inp = Input(T.imatrix()) sembvec = (inp[:, 0] >> semb) sremb = (inp[:, 1] & sembvec) >> remb out = (sremb & (inp[:, 2] >> oemb)) >> DotProduct() >> Sigmoid() print out(np.asarray([[1, 720, 6]], dtype="int32")) outtest = Output(T.fvector()) loss = (out & outtest) >> MSELoss() trainer = Trainer\ .batsize(batsize)\ .epochs(epochs)\ .onrun(getonrun())\ .offrun(offrun)\ .offepoch(getoffepoch(out))\ .onbatch(getonbatch(negrate))\ .optimizer(sgd(lr=1.))\ .batchtransformer(transbat) trainer\ .loss(loss)\ trainer.train(traind, valid)\ .test(test)