def Q(self, x): self.Q_W1 = tf.Variable(xavier_init([self.x_dim, self.hidden_dim])) self.Q_b1 = tf.Variable(tf.zeros(shape=[self.hidden_dim])) self.Q_W2 = tf.Variable(xavier_init([self.hidden_dim, 10])) self.Q_b2 = tf.Variable(tf.zeros(shape=[10])) self.theta_Q = [self.Q_W1, self.Q_b1, self.Q_W2, self.Q_b2] Q_h1 = tf.nn.relu(tf.matmul(x, self.Q_W1) + self.Q_b1) Q_prob = tf.nn.softmax(tf.matmul(Q_h1, self.Q_W2) + self.Q_b2) return Q_prob
def discriminator(self, x): self.D_W1 = tf.Variable(xavier_init([self.x_dim, self.hidden_dim])) self.D_b1 = tf.Variable(tf.zeros(shape=[self.hidden_dim])) self.D_W2 = tf.Variable(xavier_init([self.hidden_dim, 1])) self.D_b2 = tf.Variable(tf.zeros(shape=[1])) self.theta_D = [self.D_W1, self.D_b1, self.D_W2, self.D_b2] D_h1 = tf.nn.relu(tf.matmul(x, self.D_W1) + self.D_b1) D_logit = tf.matmul(D_h1, self.D_W2) + self.D_b2 D_prob = tf.nn.sigmoid(D_logit) return D_prob
def generator(self, z, c): self.G_W1 = tf.Variable( xavier_init([self.z_dim + self.c_dim, 2 * self.hidden_dim])) self.G_b1 = tf.Variable(tf.zeros(shape=[2 * self.hidden_dim])) self.G_W2 = tf.Variable(xavier_init([2 * self.hidden_dim, self.x_dim])) self.G_b2 = tf.Variable(tf.zeros(shape=[self.x_dim])) self.theta_G = [self.G_W1, self.G_b1, self.G_W2, self.G_b2] z_c = tf.concat(values=[z, c], axis=1) G_h1 = tf.nn.relu(tf.matmul(z_c, self.G_W1) + self.G_b1) G_log_prob = tf.matmul(G_h1, self.G_W2) + self.G_b2 G_prob = tf.nn.sigmoid(G_log_prob) return G_prob
def build(self): # Training variables for Discriminator self.D_W1 = tf.Variable(xavier_init([self.input_dim, 128])) self.D_b1 = tf.Variable(tf.zeros(shape=[128])) self.D_W2 = tf.Variable(xavier_init([128, 1])) self.D_b2 = tf.Variable(tf.zeros(shape=[1])) # Training variables for Generator self.G_W1 = tf.Variable(xavier_init([self.z_dim, 128])) self.G_b1 = tf.Variable(tf.zeros(shape=[128])) self.G_W2 = tf.Variable(xavier_init([128, self.input_dim])) self.G_b2 = tf.Variable(tf.zeros(shape=[self.input_dim])) self.G_samples = self.generator(self.z) D_logit_real = self.discriminator(self.X) D_logit_fake = self.discriminator(self.G_samples) self._loss(D_logit_real, D_logit_fake) self._build_ops()
def weight_variable(name, shape): initial = tf.get_variable(name=name, shape=shape, initializer=xavier_init(shape[0], shape[1])) return tf.Variable(initial)