Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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'))