コード例 #1
0
    def _resnet(self, input):
        with tf.variable_scope(self.name, reuse=self._reuse):
            num_filters = [128, 256, 512, 512]
            if self._image_size == 256:
                num_filters.append(512)

            E = input
            E = ops.conv_block(E,
                               64,
                               'C{}_{}'.format(64, 0),
                               4,
                               2,
                               self._is_train,
                               self._reuse,
                               norm=None,
                               activation='leaky',
                               bias=True)
            for i, n in enumerate(num_filters):
                E = ops.residual(E,
                                 n,
                                 'res{}_{}'.format(n, i + 1),
                                 self._is_train,
                                 self._reuse,
                                 norm=self._norm,
                                 bias=True)
                E = tf.nn.avg_pool(E, [1, 2, 2, 1], [1, 2, 2, 1], 'SAME')
            E = tf.nn.relu(E)
            E = tf.nn.avg_pool(E, [1, 8, 8, 1], [1, 8, 8, 1], 'SAME')
            E = ops.flatten(E)
            mu = ops.mlp(E,
                         self._latent_dim,
                         'FC8_mu',
                         self._is_train,
                         self._reuse,
                         norm=None,
                         activation=None)
            log_sigma = ops.mlp(E,
                                self._latent_dim,
                                'FC8_sigma',
                                self._is_train,
                                self._reuse,
                                norm=None,
                                activation=None)

            z = mu + tf.random_normal(
                shape=tf.shape(self._latent_dim)) * tf.exp(log_sigma)

            self._reuse = True
            self.var_list = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,
                                              self.name)
            return z, mu, log_sigma
コード例 #2
0
    def _convnet(self, input):
        with tf.variable_scope(self.name, reuse=self._reuse):
            num_filters = [64, 128, 256, 512, 512, 512, 512]
            if self._image_size == 256:
                num_filters.append(512)

            E = input
            for i, n in enumerate(num_filters):
                E = ops.conv_block(E,
                                   n,
                                   'C{}_{}'.format(n, i),
                                   4,
                                   2,
                                   self._is_train,
                                   self._reuse,
                                   norm=self._norm if i else None,
                                   activation='leaky')
            E = ops.flatten(E)
            mu = ops.mlp(E,
                         self._latent_dim,
                         'FC8_mu',
                         self._is_train,
                         self._reuse,
                         norm=None,
                         activation=None)
            log_sigma = ops.mlp(E,
                                self._latent_dim,
                                'FC8_sigma',
                                self._is_train,
                                self._reuse,
                                norm=None,
                                activation=None)

            z = mu + tf.random_normal(
                shape=tf.shape(self._latent_dim)) * tf.exp(log_sigma)

            self._reuse = True
            self.var_list = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,
                                              self.name)
            return z, mu, log_sigma