import tensorflow as tf

        self.train_step = None
        self.post_step = None
        self.graph = tf.Graph()
        with self.graph.as_default():
            self.head_input = tf.placeholder(tf.int32, shape=[None])
            self.rel_input = tf.placeholder(tf.int32, shape=[None])
            self.tail_input = tf.placeholder(tf.int32, shape=[None])
            self.target = tf.placeholder(tf.float32, shape=[None])

    def _create_model(self, train_triples):
        ''' Subclasses must build Graph and set self.train_step '''
        raise Exception('subclass must implement')
