Beispiel #1
0
    def generate_continuous_variations(self, session, row_size, variations=3, iteration=None):
        categorical_noise = create_categorical_noise(
            self.categorical_cardinality,
            size=variations
        )
        continuous_fixed = create_continuous_noise(
            num_continuous=self.num_continuous,
            style_size=self.style_size,
            size=variations
        )
        linear_variation = np.linspace(-2.0, 2.0, row_size)
        images = []

        for contig_idx in range(self.num_continuous):
            for var_idx in range(variations):
                continuous_modified = continuous_fixed[var_idx:var_idx+1, :].repeat(
                    row_size, axis=0
                )

                # make this continuous variable vary linearly over the row:
                continuous_modified[:, contig_idx] = linear_variation

                z_c_vectors = encode_infogan_noise(
                    self.categorical_cardinality,
                    [cat[var_idx:var_idx+1].repeat(row_size, axis=0) for cat in categorical_noise],
                    continuous_modified
                )

                images.append(
                    (
                        create_image_strip(
                            self._generate(session, z_c_vectors),
                            zoom=self._zoom, gutter=self._gutter
                        ),
                        "continuous variable %d, variation %d" % (
                            contig_idx,
                            var_idx
                        )
                    )
                )

        self._add_image_summary(
            session, images, iteration=iteration
        )
Beispiel #2
0
 def generate_categorical_variations(self, session, row_size, iteration=None):
     images = []
     continuous_noise = create_continuous_noise(
         num_continuous=self.num_continuous,
         style_size=self.style_size,
         size=row_size
     )
     categorical_noise = create_categorical_noise(
         categorical_cardinality=self.categorical_cardinality,
         size=row_size
     )
     for c_idx, cardinality in enumerate(self.categorical_cardinality):
         categorical_noise_modified = [sample.copy() for sample in categorical_noise]
         for i in range(cardinality):
             categorical_noise_modified[c_idx][:] = i
             z_c_vectors = encode_infogan_noise(
                 categorical_cardinality=self.categorical_cardinality,
                 categorical_samples=categorical_noise_modified,
                 continuous_samples=continuous_noise
             )
             # show a simpler name when there is only a single categorical
             # variable
             if len(self.categorical_cardinality) > 1:
                 name = "categorical variable %d-%d" % (c_idx, i,)
             else:
                 name = "category %d" % (i,)
             images.append(
                 (
                     create_image_strip(
                         self._generate(session, z_c_vectors),
                         zoom=self._zoom, gutter=self._gutter
                     ),
                     name
                 )
             )
     self._add_image_summary(session, images, iteration=iteration)