def f(name, h, width, n_out=None): n_out = n_out or int(h.get_shape()[3]) with tf.variable_scope(name): h = tf.nn.relu(Z.conv2d("l_1", h, width)) h = tf.nn.relu(Z.conv2d("l_2", h, width, filter_size=[1, 1])) h = Z.conv2d_zeros("l_last", h, n_out) return h
def prior(name, y_onehot, hps): with tf.variable_scope(name): n_z = hps.top_shape[-1] h = tf.zeros([tf.shape(y_onehot)[0]]+hps.top_shape[:2]+[2*n_z]) if hps.learntop: h = Z.conv2d_zeros('p', h, 2*n_z) if hps.ycond: h += tf.reshape(Z.linear_zeros("y_emb", y_onehot, 2*n_z), [-1, 1, 1, 2 * n_z]) pz = Z.gaussian_diag(h[:, :, :, :n_z], h[:, :, :, n_z:]) def logp(z1): objective = pz.logp(z1) return objective def sample(eps=None, eps_std=None): if eps is not None: # Already sampled eps. Don't use eps_std z = pz.sample2(eps) elif eps_std is not None: # Sample with given eps_std z = pz.sample2(pz.eps * tf.reshape(eps_std, [-1, 1, 1, 1])) else: # Sample normally z = pz.sample return z def eps(z1): return pz.get_eps(z1) return logp, sample, eps
def prior(name, y_onehot, hps): with tf.variable_scope(name): n_z = hps.top_shape[-1] h = tf.zeros([tf.shape(y_onehot)[0]] + hps.top_shape[:2] + [2 * n_z]) if hps.learntop: h = Z.conv2d_zeros('p', h, 2 * n_z) if hps.ycond: h += tf.reshape(Z.linear_zeros("y_emb", y_onehot, 2 * n_z), [-1, 1, 1, 2 * n_z]) pz = Z.gaussian_diag(h[:, :, :, :n_z], h[:, :, :, n_z:]) def logp(z1): objective = pz.logp(z1) return objective def sample(eps=None, eps_std=None): if eps is not None: # Already sampled eps. Don't use eps_std z = pz.sample2(eps) elif eps_std is not None: # Sample with given eps_std z = pz.sample2(pz.eps * tf.reshape(eps_std, [-1, 1, 1, 1])) else: # Sample normally z = pz.sample return z def eps(z1): return pz.get_eps(z1) return logp, sample, eps
def f(name, h, width, n_out=None): n_out = n_out or int(h.get_shape()[3]) with tf.variable_scope(name): h = tf.nn.relu(Z.conv2d("l_1", h, width)) h = tf.nn.relu(Z.conv2d("l_2", h, width, filter_size=[1, 1])) h = Z.conv2d_zeros("l_last", h, n_out) return h
def split2d_prior(z): n_z2 = int(z.get_shape()[3]) n_z1 = n_z2 h = Z.conv2d_zeros("conv", z, 2 * n_z1) mean = h[:, :, :, 0::2] logs = h[:, :, :, 1::2] return Z.gaussian_diag(mean, logs)
def split2d_prior(z): n_z2 = int(z.get_shape()[3]) n_z1 = n_z2 h = Z.conv2d_zeros("conv", z, 2 * n_z1) mean = h[:, :, :, 0::2] logs = h[:, :, :, 1::2] return Z.gaussian_diag(mean, logs)
def split2d_prior(z, hps): shape = Z.int_shape(z) n_z2 = int(z.get_shape()[3]) n_z1 = n_z2 h = tf.zeros([tf.shape(z)[0]] + shape[1:3] + [2 * n_z1]) if hps.learnprior: h = Z.conv2d_zeros("conv", z, 2 * n_z1) mean = h[:, :, :, 0::2] logs = h[:, :, :, 1::2] return Z.gaussian_diag(mean, logs)
def f_resnet(name, h, width, n_out=None): n_out = n_out or int(h.get_shape()[3]) with tf.variable_scope(name): h = tf.nn.relu(Z.conv2d("l_1", h, width)) h = Z.conv2d_zeros("l_2", h, n_out) return h
def f_resnet(name, h, width, n_out=None): n_out = n_out or int(h.get_shape()[3]) with tf.variable_scope(name): h = tf.nn.relu(Z.conv2d("l_1", h, width)) h = Z.conv2d_zeros("l_2", h, n_out) return h