示例#1
0
    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
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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)