def init_gen_model(state): gen_model = nn.Sequential() gen_model.add( nn.Linear(state['noise_size'], state['g_num_filters'] * 4 * 7 * 7, weight=state['g_init'], use_bias=False)) gen_model.add(nn.BatchNorm(state['g_num_filters'] * 4 * 7 * 7)) gen_model.add(nn.Expression(T.nnet.relu)) gen_model.add( nn.Expression(lambda x: T.reshape(x, (x.shape[0], state['g_num_filters' ] * 4, 7, 7)))) gen_model.add( nn.Deconvolutional(filter_size=(4, 4), num_filters=state['g_num_filters'] * 4, num_channels=state['g_num_filters'] * 2, step=(2, 2), border_mode=(1, 1), use_bias=False, weight=state['g_conv_init'])) gen_model.add(nn.BatchNorm(state['g_num_filters'] * 2)) gen_model.add(nn.Expression(T.nnet.relu)) # out_shape == (b, num_filters, 14, 14) gen_model.add( nn.Deconvolutional(filter_size=(4, 4), num_filters=state['g_num_filters'] * 2, num_channels=state['g_num_filters'], step=(2, 2), border_mode=(1, 1), use_bias=False, weight=state['g_conv_init'])) gen_model.add(nn.BatchNorm(state['g_num_filters'])) gen_model.add(nn.Expression(T.nnet.relu)) # out_shape == (b, input_channels, 28, 28) gen_model.add( nn.Deconvolutional(filter_size=(3, 3), num_filters=state['g_num_filters'], num_channels=state['input_channels'], step=(1, 1), border_mode=(1, 1), use_bias=True, weight=state['g_conv_init'])) # gen_model.add(nn.Expression(T.nnet.sigmoid)) # out_shape == (b, input_channels, 28, 28) return gen_model
def init_decoder(state): # inp_shape == (b, d_num_filters*4, 8, 8) model = nn.Sequential() model.add( nn.Deconvolutional(filter_size=(4, 4), num_filters=state['d_num_filters'] * 4, num_channels=state['d_num_filters'] * 2, step=(2, 2), border_mode=(1, 1), weight=state['d_conv_init'], use_bias=False, name='d_dec_conv1')) model.add(nn.BatchNorm(state['d_num_filters'] * 2)) model.add(nn.LeakyRectify()) # model.add(nn.Expression(T.nnet.relu)) # out_shape == (b, d_num_filters*2, 16, 16) model.add( nn.Deconvolutional(filter_size=(4, 4), num_filters=state['d_num_filters'] * 2, num_channels=state['d_num_filters'], step=(2, 2), border_mode=(1, 1), weight=state['d_conv_init'], use_bias=False, name='d_dec_conv2')) model.add(nn.BatchNorm(state['d_num_filters'])) model.add(nn.LeakyRectify()) # model.add(nn.Expression(T.nnet.relu)) # out_shape == (b, d_num_filters, 32, 32) model.add( nn.Deconvolutional(filter_size=(4, 4), num_filters=state['d_num_filters'], num_channels=state['input_channels'], step=(2, 2), border_mode=(1, 1), weight=state['d_conv_init'], use_bias=False, name='d_dec_conv3')) model.add(nn.BatchNorm(state['input_channels'])) model.add(nn.Expression(T.tanh)) # out_shape == (b, input_channels, 64, 64) return model
def init_gen_model(state): gen_model = nn.Sequential() gen_model.add( nn.Linear(state['noise_size'], state['g_num_filters'] * 4 * 4 * 4, weight=state['g_init'], use_bias=False)) gen_model.add(nn.BatchNorm(state['g_num_filters'] * 4 * 4 * 4)) gen_model.add(nn.Expression(T.nnet.relu)) gen_model.add( nn.Expression(lambda x: T.reshape(x, (x.shape[0], state['g_num_filters' ] * 4, 4, 4)))) gen_model.add( nn.Deconvolutional(filter_size=(4, 4), num_filters=state['g_num_filters'] * 4, num_channels=state['g_num_filters'] * 4, step=(2, 2), border_mode=(1, 1), use_bias=False, weight=state['g_conv_init'])) gen_model.add(nn.BatchNorm(state['g_num_filters'] * 4)) gen_model.add(nn.Expression(T.nnet.relu)) # out_shape == (b, g_num_filters*6, 8, 8) gen_model.add( nn.Deconvolutional(filter_size=(4, 4), num_filters=state['g_num_filters'] * 4, num_channels=state['g_num_filters'] * 2, step=(2, 2), border_mode=(1, 1), use_bias=False, weight=state['g_conv_init'])) gen_model.add(nn.BatchNorm(state['g_num_filters'] * 2)) gen_model.add(nn.Expression(T.nnet.relu)) # out_shape == (b, g_num_filters*2, 16, 16) gen_model.add( nn.Deconvolutional(filter_size=(4, 4), num_filters=state['g_num_filters'] * 2, num_channels=state['g_num_filters'], step=(2, 2), border_mode=(1, 1), use_bias=False, weight=state['g_conv_init'])) gen_model.add(nn.BatchNorm(state['g_num_filters'])) gen_model.add(nn.Expression(T.nnet.relu)) # out_shape == (b, g_num_filters, 32, 32) gen_model.add( nn.Deconvolutional(filter_size=(4, 4), num_filters=state['g_num_filters'], num_channels=state['input_channels'], step=(2, 2), border_mode=(1, 1), use_bias=True, weight=state['g_conv_init'])) gen_model.add(nn.Expression(T.tanh)) # out_shape == (b, input_channels, 64, 64) return gen_model
use_bias=True, name='q_fc5')) # 2) Directed generator gen_model = nn.Sequential() gen_model.add(nn.Linear(state['noise_size'], state['g_num_filters']*4*4*4, weight=state['g_init'], use_bias=False, name='g_fc1')) gen_model.add(nn.BatchNorm(state['g_num_filters']*4*4*4, name='g_bn1')) gen_model.add(nn.Expression(T.nnet.relu)) gen_model.add(nn.Expression(lambda x: T.reshape(x, (x.shape[0], state['g_num_filters']*4, 4, 4)))) gen_model.add(nn.Deconvolutional(filter_size=(4, 4), num_filters=state['g_num_filters']*4, num_channels=state['g_num_filters']*4, step=(2, 2), border_mode=(1, 1), use_bias=False, weight=state['g_init'], name='g_deconv2')) gen_model.add(nn.BatchNorm(state['g_num_filters']*4, name='g_bn2')) gen_model.add(nn.Expression(T.nnet.relu)) # out_shape == (b, num_filters, 8, 8) gen_model.add(nn.Deconvolutional(filter_size=(4, 4), num_filters=state['g_num_filters']*4, num_channels=state['g_num_filters']*2, step=(2, 2), border_mode=(1, 1), use_bias=False, weight=state['g_init'], name='g_deconv3')) gen_model.add(nn.BatchNorm(state['g_num_filters']*2, name='g_bn3'))