in ebm_combine.py [0:0]
def conceptcombine(sess, kvs, data, latents, save_exp_dir):
X_NOISE = kvs['X_NOISE']
LABEL_SIZE = kvs['LABEL_SIZE']
LABEL_SHAPE = kvs['LABEL_SHAPE']
LABEL_POS = kvs['LABEL_POS']
LABEL_ROT = kvs['LABEL_ROT']
model_size = kvs['model_size']
model_shape = kvs['model_shape']
model_pos = kvs['model_pos']
model_rot = kvs['model_rot']
weight_size = kvs['weight_size']
weight_shape = kvs['weight_shape']
weight_pos = kvs['weight_pos']
weight_rot = kvs['weight_rot']
x_mod = X_NOISE
for i in range(FLAGS.num_steps):
if FLAGS.cond_scale:
e_noise = model_size.forward(x_mod, weight_size, label=LABEL_SIZE)
x_grad = tf.gradients(e_noise, [x_mod])[0]
x_mod = x_mod + tf.random_normal(tf.shape(x_mod), mean=0.0, stddev=0.005)
x_mod = x_mod - FLAGS.step_lr * x_grad
x_mod = tf.clip_by_value(x_mod, 0, 1)
if FLAGS.cond_shape:
e_noise = model_shape.forward(x_mod, weight_shape, label=LABEL_SHAPE)
x_grad = tf.gradients(e_noise, [x_mod])[0]
x_mod = x_mod + tf.random_normal(tf.shape(x_mod), mean=0.0, stddev=0.005)
x_mod = x_mod - FLAGS.step_lr * x_grad
x_mod = tf.clip_by_value(x_mod, 0, 1)
if FLAGS.cond_pos:
e_noise = model_pos.forward(x_mod, weight_pos, label=LABEL_POS)
x_grad = tf.gradients(e_noise, [x_mod])[0]
x_mod = x_mod + tf.random_normal(tf.shape(x_mod), mean=0.0, stddev=0.005)
x_mod = x_mod - FLAGS.step_lr * x_grad
x_mod = tf.clip_by_value(x_mod, 0, 1)
if FLAGS.cond_rot:
e_noise = model_rot.forward(x_mod, weight_rot, label=LABEL_ROT)
x_grad = tf.gradients(e_noise, [x_mod])[0]
x_mod = x_mod + tf.random_normal(tf.shape(x_mod), mean=0.0, stddev=0.005)
x_mod = x_mod - FLAGS.step_lr * x_grad
x_mod = tf.clip_by_value(x_mod, 0, 1)
print("Finished constructing loop {}".format(i))
x_final = x_mod
data_try = data[:10]
data_init = 0.5 + 0.5 * np.random.randn(10, 64, 64)
label_scale = latents[:10, 2:3]
label_shape = np.eye(3)[(latents[:10, 1]-1).astype(np.uint8)]
label_rot = latents[:10, 3:4]
label_rot = np.concatenate([np.cos(label_rot), np.sin(label_rot)], axis=1)
label_pos = latents[:10, 4:]
feed_dict = {X_NOISE: data_init, LABEL_SIZE: label_scale, LABEL_SHAPE: label_shape, LABEL_POS: label_pos,
LABEL_ROT: label_rot}
x_out = sess.run([x_final], feed_dict)[0]
im_name = "im"
if FLAGS.cond_scale:
im_name += "_condscale"
if FLAGS.cond_shape:
im_name += "_condshape"
if FLAGS.cond_pos:
im_name += "_condpos"
if FLAGS.cond_rot:
im_name += "_condrot"
im_name += ".png"
x_out_pad, data_try_pad = np.ones((10, 66, 66)), np.ones((10, 66, 66))
x_out_pad[:, 1:-1, 1:-1] = x_out
data_try_pad[:, 1:-1, 1:-1] = data_try
im_output = np.concatenate([x_out_pad, data_try_pad], axis=2).reshape(-1, 66*2)
impath = osp.join(save_exp_dir, im_name)
imsave(impath, im_output)
print("Successfully saved images at {}".format(impath))