def _build_generator_given_z(self): z = Input(shape=(self.z_dim, ), name='z') z_bits = Subtensor(*self.pos_z_bits, axis=1)(z) z_labels = Subtensor(*self.pos_z_labels, axis=1)(z) z_offset = Subtensor(*self.pos_z_offset, axis=1)(z) bits = ThresholdBits()(z_bits) nb_labels_without_bits = self.labels_shape[0] - self.nb_bits generated_labels = get_label_generator( z_labels, self.generator_units, nb_output_units=nb_labels_without_bits) labels_normed = NormSinCosAngle(0)(generated_labels) labels = concat([bits, labels_normed], name='labels') fake = self.generator_given_z_and_labels([z_offset, labels]) self.generator_given_z = Model([z], [fake]) sample_tensors = self.sample_generator_given_z_and_labels( [z_offset, labels]) sample_tensors = [ name_tensor(t, n) for t, n in zip( sample_tensors, self.sample_generator_given_z_and_labels.output_names) ] self.sample_generator_given_z_output_names = ['labels'] + \ self.sample_generator_given_z_and_labels_output_names self.sample_generator_given_z = Model([z], [labels] + sample_tensors)
def test_get_mask_driver(): batch_shape = (64, 22) n = 50 input = Input(shape=batch_shape[1:]) output = get_label_generator(input, nb_units=n, nb_output_units=n) model = Model(input, output) model.compile('adam', 'mse') x = np.random.sample(batch_shape) y = np.random.sample((64, n)) model.train_on_batch(x, y)
def _build_generator_given_z(self): z = Input(shape=(self.z_dim,), name='z') z_bits = Subtensor(*self.pos_z_bits, axis=1)(z) z_labels = Subtensor(*self.pos_z_labels, axis=1)(z) z_offset = Subtensor(*self.pos_z_offset, axis=1)(z) bits = ThresholdBits()(z_bits) nb_labels_without_bits = self.labels_shape[0] - self.nb_bits generated_labels = get_label_generator( z_labels, self.generator_units, nb_output_units=nb_labels_without_bits) labels_normed = NormSinCosAngle(0)(generated_labels) labels = concat([bits, labels_normed], name='labels') fake = self.generator_given_z_and_labels([z_offset, labels]) self.generator_given_z = Model([z], [fake]) sample_tensors = self.sample_generator_given_z_and_labels([z_offset, labels]) sample_tensors = [name_tensor(t, n) for t, n in zip(sample_tensors, self.sample_generator_given_z_and_labels.output_names)] self.sample_generator_given_z_output_names = ['labels'] + \ self.sample_generator_given_z_and_labels_output_names self.sample_generator_given_z = Model([z], [labels] + sample_tensors)