Exemple #1
0
    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)
Exemple #2
0
 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,
Exemple #4
0
    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()