def svhn_encoder(x, numHidden, labels, num_labels, mb_size, image_width): in_width = image_width layerLst = [] c = [3, 64, 128, 256, 256] layerLst += [ConvPoolLayer(in_channels = c[0], out_channels = c[1], kernel_len = 5, batch_norm = False)] layerLst += [ConvPoolLayer(in_channels = c[1], out_channels = c[1], kernel_len = 5, batch_norm = False)] layerLst += [ConvPoolLayer(in_channels = c[1], out_channels = c[1], kernel_len = 5, stride=2, batch_norm = False)] layerLst += [ConvPoolLayer(in_channels = c[1], out_channels = c[2], kernel_len = 5, batch_norm = False)] layerLst += [ConvPoolLayer(in_channels = c[2], out_channels = c[2], kernel_len = 5, batch_norm = False)] layerLst += [ConvPoolLayer(in_channels = c[2], out_channels = c[2], kernel_len = 5, stride=2, batch_norm = False)] layerLst += [ConvPoolLayer(in_channels = c[2], out_channels = c[3], kernel_len = 5, batch_norm = False)] layerLst += [ConvPoolLayer(in_channels = c[3], out_channels = c[3], kernel_len = 5, batch_norm = False)] layerLst += [ConvPoolLayer(in_channels = c[3], out_channels = c[4], kernel_len = 5, stride=2, batch_norm = False)] layerLst += [HiddenLayer(num_in = 4 * 4 * c[4], num_out = numHidden, flatten_input = True, batch_norm = False)] layerLst += [HiddenLayer(num_in = numHidden, num_out = numHidden, batch_norm = True)] outputs = [normalize(x.transpose(0,3,1,2))] for i in range(0, len(layerLst)): outputs += [layerLst[i].output(outputs[-1])] h1 = HiddenLayer(num_in = numHidden + num_labels, num_out = numHidden, batch_norm = True) h2 = HiddenLayer(num_in = numHidden, num_out = numHidden, batch_norm = True) h1_out = h1.output(T.concatenate([outputs[-1], labels], axis = 1)) h2_out = h2.output(h1_out) return {'layers' : layerLst + [h1,h2], 'extra_params' : [], 'output' : h2_out}
def imagenet_encoder(x, numHidden, mb_size, image_width): vgg_out = vgg_network(x, mb_size, image_width) h1 = HiddenLayer(num_in = 4 * 4 * 512, num_out = numHidden, flatten_input = True, activation = 'relu', batch_norm = True) h2 = HiddenLayer(num_in = numHidden, num_out = numHidden, activation = 'relu', batch_norm = True) out1 = h1.output(vgg_out['output']) out2 = h2.output(out1) params = vgg_out['params'] return {'layers' : [h1, h2], 'extra_params' : params, 'output' : out2}
raise Exception() labels_reshaped = T.zeros(shape = (config['mb_size'], config['num_labels'])) labels_reshaped = T.set_subtensor(labels_reshaped[T.arange(config['mb_size']), labels], 1.0) encoder = encoder_class(x, numHidden, mb_size=config['mb_size'], image_width=config['image_width']) encoder_layers = encoder['layers'] encoder_output = encoder['output'] encoder_extra_params = encoder['extra_params'] z_mean_layer = HiddenLayer(num_in=numHidden, num_out=numLatent, activation=None) z_var_layer = HiddenLayer(num_in=numHidden, num_out=numLatent, activation='softplus') z_mean = z_mean_layer.output(encoder_output) z_var = T.maximum(1.0e-6, z_var_layer.output(encoder_output)) z_sampled = T.matrix() z_reconstruction = z_mean + z_sampled * T.sqrt(z_var) def join(a,b): return T.concatenate([a,b], axis = 1) if config["dataset"] == "imagenet": from Decoders.Imagenet import decoder decoder = decoder(z = join(z, labels_reshaped), z_sampled = join(z_sampled, labels_reshaped), numHidden = numHidden, numLatent = numLatent + config['num_labels'], mb_size = config['mb_size'], image_width = config['image_width']) elif config["dataset"] == "svhn" or config['dataset'] == 'cifar': from Decoders.Svhn import svhn_decoder decoder = svhn_decoder(z = join(z, labels_reshaped), z_sampled = join(z_sampled, labels_reshaped), numHidden = numHidden, numLatent = numLatent + config['num_labels'], mb_size = config['mb_size'], image_width = config['image_width'])
elif config['dataset'] == 'stl': from Encoders.Stl import encoder as encoder_class else: raise Exception() encoder = encoder_class(x, numHidden, mb_size=config['mb_size'], image_width=config['image_width']) encoder_layers = encoder['layers'] encoder_output = encoder['output'] encoder_extra_params = encoder['extra_params'] z_mean_layer = HiddenLayer(num_in=numHidden, num_out=numLatent, activation=None) z_var_layer = HiddenLayer(num_in=numHidden, num_out=numLatent, activation='softplus') z_mean = z_mean_layer.output(encoder_output) z_var = T.maximum(z_var_layer.output(encoder_output), 1e-12) z_sampled = srng.normal(size=(config['mb_size'], numLatent)) z = z_sampled * T.sqrt(z_var) + z_mean if config["dataset"] == "imagenet": from Decoders.Imagenet import imagenet_decoder decoder = imagenet_decoder(z=z, z_sampled=z_sampled, numHidden=numHidden, numLatent=numLatent, mb_size=config['mb_size'], image_width=config['image_width']) elif config["dataset"] == "svhn" or config['dataset'] == 'cifar': from Decoders.Svhn import svhn_decoder decoder = svhn_decoder(z=z, z_sampled=z_sampled, numHidden=numHidden, numLatent=numLatent, mb_size=config['mb_size'], image_width=config['image_width']) elif config['dataset'] == 'stl': from Decoders.Stl import decoder decoder = decoder(z_reconstruction=z, z_sampled=z_sampled, numHidden=numHidden, numLatent=numLatent, mb_size=config['mb_size'], image_width=config['image_width'])