def vae(observed, x_dim, z_dim, n, n_particles=1): with zs.BayesianNet(observed=observed) as model: z_mean = tf.zeros([n, z_dim]) z = zs.Normal('z', z_mean, std=1., group_ndims=1, n_samples=n_particles) lx_z = tf.layers.dense(z, 500, activation=tf.nn.relu) lx_z = tf.layers.dense(lx_z, 500, activation=tf.nn.relu) x_logits = tf.layers.dense(lx_z, x_dim) x_mean = zs.Implicit("x_mean", tf.sigmoid(x_logits), group_ndims=1) x = zs.Bernoulli('x', x_logits, group_ndims=1) return model
def vae(observed, x_dim, z_dim, n, y): with zs.BayesianNet(observed=observed) as model: z_mean = tf.zeros([n, z_dim]) z = zs.Normal('z', z_mean, std=1., group_ndims=1) z_plus_y = tf.concat([z, tf.cast(y, tf.float32)], axis=1) lx_z = tf.layers.dense(z_plus_y, 500, activation=tf.nn.relu) lx_z = tf.layers.dense(lx_z, 500, activation=tf.nn.relu) x_logits = tf.layers.dense(lx_z, x_dim) x_mean = zs.Implicit("x_mean", tf.sigmoid(x_logits), group_ndims=1) x = zs.Bernoulli('x', x_logits, group_ndims=1) return model, x_mean
def cvae(observed, x_dim, y_dim, z_dim, n, n_particles=1): with zs.BayesianNet(observed=observed) as model: y = zs.Empirical('y', tf.int32, (n, y_dim)) z_mean = tf.zeros([n, z_dim]) z = zs.Normal('z', z_mean, std=1., group_ndims=1, n_samples=n_particles) z = tf.to_float(z[0]) yz = tf.concat([tf.to_float(y), z], axis=1) lx_yz = tf.layers.dense(tf.to_float(yz), 500, activation=tf.nn.relu) lx_yz = tf.layers.dense(lx_yz, 500, activation=tf.nn.relu) x_logits = tf.layers.dense(lx_yz, x_dim) x_mean = zs.Implicit('x_mean', tf.sigmoid(x_logits), group_ndims=1) x = zs.Bernoulli('x', logits=x_logits, group_ndims=1) return model
def vae(observed, x_dim, z_dim, n, n_particles=1): with zs.BayesianNet(observed=observed) as model: y = zs.OnehotCategorical('y', logits=tf.ones([n, 10]), group_ndims=1, n_samples=n_particles) y = tf.to_float(y) y = tf.reshape(y, (1, n, 10)) z_mean = tf.zeros([n, z_dim]) z = zs.Normal('z', z_mean, std=1., group_ndims=1, n_samples=n_particles) z = tf.concat([z, y], 2) lx_z = tf.layers.dense(z, 500, activation=tf.nn.relu) lx_z = tf.layers.dense(lx_z, 500, activation=tf.nn.relu) x_logits = tf.layers.dense(lx_z, x_dim) x_mean = zs.Implicit("x_mean", tf.sigmoid(x_logits), group_ndims=1) x = zs.Bernoulli('x', x_logits, group_ndims=1) return model