def build(self, save_path = 'this-model.ckpt', data_save_path = 'this-data.bin'): self.multiG = multiG.multiG() self.multiG.load(data_save_path) self.tf_parts = model.TFParts(num_rels1=self.multiG.KG1.num_rels(), num_ents1=self.multiG.KG1.num_ents(), num_rels2=self.multiG.KG2.num_rels(), num_ents2=self.multiG.KG2.num_ents(), dim=self.multiG.dim, #batch_sizeK=self.batch_sizeK, #batch_sizeA=self.batch_sizeA, L1=self.multiG.L1) c = tf.ConfigProto(inter_op_parallelism_threads=3, intra_op_parallelism_threads=3) c.gpu_options.allow_growth = True self.sess = sess = tf.Session(config=c) self.tf_parts._saver.restore(sess, save_path) # load it value_ht1, value_r1, value_ht2, value_r2, value_M, value_b = sess.run([self.tf_parts._ht1_norm, self.tf_parts._r1, self.tf_parts._ht2_norm, self.tf_parts._r2, self.tf_parts._M, self.tf_parts._b]) # extract values. #value_ht1, value_r1, value_ht2, value_r2, value_M = sess.run([self.tf_parts._ht1_norm, self.tf_parts._r1, self.tf_parts._ht2_norm, self.tf_parts._r2, self.tf_parts._M]) #sess.close() self.vec_e[1] = np.array(value_ht1) self.vec_e[2] = np.array(value_ht2) self.vec_r[1] = np.array(value_r1) self.vec_r[2] = np.array(value_r2) self.mat = np.array(value_M) self._b = np.array(value_b)
def build(self, save_path='this-model.ckpt', data_save_path='this-data.bin'): self.multiG = multiG.multiG() self.multiG.load(data_save_path) self.tf_parts = model.TFParts( num_rels1=self.multiG.KG1.num_rels(), num_ents1=self.multiG.KG1.num_ents(), num_rels2=self.multiG.KG2.num_rels(), num_ents2=self.multiG.KG2.num_ents(), dim=self.multiG.dim, #batch_sizeK=self.batch_sizeK, #batch_sizeA=self.batch_sizeA, L1=self.multiG.L1) self.sess = sess = tf.Session() self.tf_parts._saver.restore(sess, save_path) # load it value_ht1, value_r1, value_ht2, value_r2, value_M, value_b = sess.run([ self.tf_parts._ht1_norm, self.tf_parts._r1, self.tf_parts._ht2_norm, self.tf_parts._r2, self.tf_parts._M, self.tf_parts._b ]) # extract values. #value_ht1, value_r1, value_ht2, value_r2, value_M = sess.run([self.tf_parts._ht1_norm, self.tf_parts._r1, self.tf_parts._ht2_norm, self.tf_parts._r2, self.tf_parts._M]) #sess.close() self.vec_e[1] = np.array(value_ht1) self.vec_e[2] = np.array(value_ht2) self.vec_r[1] = np.array(value_r1) self.vec_r[2] = np.array(value_r2) self.mat = np.array(value_M) self._b = np.array(value_b)
this_dim = 50 if len(sys.argv) > 1: this_dim = int(sys.argv[1]) model_path = sys.argv[2] data_path = sys.argv[3] kgf1 = sys.argv[4] kgf2 = sys.argv[5] alignf = sys.argv[6] KG1 = KG() KG2 = KG() KG1.load_triples(filename=kgf1, splitter='@@@', line_end='\n') KG2.load_triples(filename=kgf2, splitter='@@@', line_end='\n') this_data = multiG(KG1, KG2) this_data.load_align(filename=alignf, lan1='en', lan2='fr', splitter='@@@', line_end='\n') # In[ ]: m_train = Trainer() m_train.build(this_data, dim=this_dim, batch_sizeK=128, batch_sizeA=64, a1=5., a2=0.5,
def build(self, save_path='this-model.ckpt', data_save_path='this-data.bin', method='transe', bridge='CG', int_method='gumbel'): self.multiG = multiG.multiG() self.multiG.load(data_save_path) self.method = method self.bridge = bridge self.int_method = int_method self.tf_parts = model.TFParts(num_rels1=self.multiG.KG1.num_rels(), num_ents1=self.multiG.KG1.num_ents(), num_rels2=self.multiG.KG2.num_rels(), num_ents2=self.multiG.KG2.num_ents(), method=self.method, bridge=self.bridge, dim1=self.multiG.dim1, dim2=self.multiG.dim2, int_method=int_method, L1=self.multiG.L1) print(self.method, self.bridge, self.int_method) #load config = tf.ConfigProto() config.gpu_options.allow_growth = True self.sess = sess = tf.Session(config=config) self.tf_parts._saver.restore(sess, save_path) # load it # if self.tf_parts.bridge == "CMP-double": # value_ht1, value_r1, value_ht2, value_r2, value_Mc, value_bc, value_Me, value_be = sess.run( # [self.tf_parts._ht1_norm, self.tf_parts._r1, self.tf_parts._ht2_norm, self.tf_parts._r2, self.tf_parts._Mc, self.tf_parts._bc, self.tf_parts._Me, self.tf_parts._be]) # extract values. # self._Mc = np.array(value_Mc) # self._bc = np.array(value_bc) # self._Me = np.array(value_Me) # self._be = np.array(value_be) # print(self._Mc.shape, self._bc.shape, self._Me.shape, self._be.shape) # else: # value_ht1, value_r1, value_ht2, value_r2, value_M, value_b = sess.run( # [self.tf_parts._ht1_norm, self.tf_parts._r1, self.tf_parts._ht2_norm, self.tf_parts._r2, self.tf_parts._M, self.tf_parts._b]) # extract values. # self.mat = np.array(value_M) # self._b = np.array(value_b) # print(self.mat.shape, self._b.shape) value_ht1, value_r1, ht2_min, ht2_delta, value_r2_head, value_r2_tail = sess.run( [ self.tf_parts._ht1_norm, self.tf_parts._r1, self.tf_parts._ht2.min_embed, self.tf_parts._ht2.delta_embed, self.tf_parts._r2_head, self.tf_parts._r2_tail ]) self.vec_e[1] = np.array(value_ht1) self.vec_e[2] = np.array(ht2_min) self.vec_e[3] = np.array(ht2_delta) self.vec_r[1] = np.array(value_r1) self.vec_r[2] = np.array(value_r2_head) self.vec_r[3] = np.array(value_r2_tail) self._ht2 = BoxMethods(ht2_min.shape[1], ht2_min.shape[0], int_method=self.int_method) print(self.vec_e[1].shape, self.vec_e[2].shape, self.vec_r[1].shape, self.vec_r[2].shape) sess.close()