add fix_noise option

This commit is contained in:
2022-09-20 22:55:32 +00:00
parent 27b9d4412e
commit 456a8b2c37
+7 -3
View File
@@ -159,8 +159,12 @@ class CVAE(tf.keras.Model):
return x return x
def reparameterize(self, mean, logvar): def reparameterize(self, mean, logvar, fix_noise=False):
if not fix_noise:
eps = tf.random.normal(shape=mean.shape) eps = tf.random.normal(shape=mean.shape)
else:
eps = tf.random.normal(shape=(1, mean.shape[1]))
eps = tf.tile(eps, [mean.shape[0],1])
return eps * tf.exp(logvar * .5) + mean return eps * tf.exp(logvar * .5) + mean
@@ -172,7 +176,7 @@ class CVAE(tf.keras.Model):
return logits return logits
def call(self, inputs, training=None, zero_latent=False): def call(self, inputs, training=None, zero_latent=False, fix_noise=False):
uv_unposed, uv_template, uv_body_posed, uv_curv = inputs uv_unposed, uv_template, uv_body_posed, uv_curv = inputs
uv_unposed, uv_template, uv_body_posed = tf.transpose(uv_unposed, [0,2,3,1]), tf.transpose(uv_template, [0,2,3,1]), tf.transpose(uv_body_posed, [0,2,3,1]) uv_unposed, uv_template, uv_body_posed = tf.transpose(uv_unposed, [0,2,3,1]), tf.transpose(uv_template, [0,2,3,1]), tf.transpose(uv_body_posed, [0,2,3,1])
z_static = self.static_enc(uv_template) z_static = self.static_enc(uv_template)
@@ -182,7 +186,7 @@ class CVAE(tf.keras.Model):
x = tf.concat([uv_unposed, uv_template, uv_body_posed, uv_curv], axis=-1) x = tf.concat([uv_unposed, uv_template, uv_body_posed, uv_curv], axis=-1)
mean, logvar = self.encoder(x) mean, logvar = self.encoder(x)
z = self.reparameterize(mean, logvar) z = self.reparameterize(mean, logvar, fix_noise)
z_cond = tf.concat([z_static, z_body, z_curv], axis=-1) z_cond = tf.concat([z_static, z_body, z_curv], axis=-1)
z_cond = self.cond_encoder(z_cond) z_cond = self.cond_encoder(z_cond)