# coding: utf-8 """ BigGAN config. """ from __future__ import (absolute_import, division, print_function, unicode_literals) import copy import json class BigGANConfig(object): """ Configuration class to store the configuration of a `BigGAN`. Defaults are for the 128x128 model. layers tuple are (up-sample in the layer ?, input channels, output channels) """ def __init__(self, output_dim=128, z_dim=128, class_embed_dim=128, channel_width=128, num_classes=1000, layers=[(False, 16, 16), (True, 16, 16), (False, 16, 16), (True, 16, 8), (False, 8, 8), (True, 8, 4), (False, 4, 4), (True, 4, 2), (False, 2, 2), (True, 2, 1)], attention_layer_position=8, eps=1e-4, n_stats=51): """Constructs BigGANConfig. """ self.output_dim = output_dim self.z_dim = z_dim self.class_embed_dim = class_embed_dim self.channel_width = channel_width self.num_classes = num_classes self.layers = layers self.attention_layer_position = attention_layer_position self.eps = eps self.n_stats = n_stats @classmethod def from_dict(cls, json_object): """Constructs a `BigGANConfig` from a Python dictionary of parameters.""" config = BigGANConfig() for key, value in json_object.items(): config.__dict__[key] = value return config @classmethod def from_json_file(cls, json_file): """Constructs a `BigGANConfig` from a json file of parameters.""" with open(json_file, "r", encoding='utf-8') as reader: text = reader.read() return cls.from_dict(json.loads(text)) def __repr__(self): return str(self.to_json_string()) def to_dict(self): """Serializes this instance to a Python dictionary.""" output = copy.deepcopy(self.__dict__) return output def to_json_string(self): """Serializes this instance to a JSON string.""" return json.dumps(self.to_dict(), indent=2, sort_keys=True) + "\n"