def model(x, y, batch_size, is_training=True, reuse=None):
    with tf.variable_scope('model', reuse=reuse):
        x_tensor = tf.reshape(x, [-1, 28, 28, 1])

        fc1 = fc(x, 20, is_training, reuse, name='fc1', activation=None)
        fc1 = tf.tanh(fc1)
        fc1 = dropout(fc1, is_training, drop_p=0.5)
        fc2 = fc(fc1, 6, is_training, reuse, use_bias=False, name='fc2')
        initial = np.array([[1., 0, 0], [0, 1., 0]])
        initial = initial.astype('float32')
        initial = initial.flatten()
        fc2_b = tf.Variable(initial_value=initial, name='fc2/b')

        fc2 = tf.nn.bias_add(fc2, bias=fc2_b)
        fc2 = tf.tanh(fc2)
        h_trans = spatialtransformer(x_tensor, fc2, batch_size=batch_size)

        conv1 = conv2d(h_trans,
                       16,
                       is_training,
                       reuse,
                       activation=prelu,
                       name='conv1')
        conv2 = conv2d(conv1,
                       16,
                       is_training,
                       reuse,
                       stride=(2, 2),
                       activation=prelu,
                       name='conv2')
        fcmain = fc(conv2,
                    1024,
                    is_training,
                    reuse,
                    name='fc',
                    activation=prelu)
        fcmain = dropout(fcmain, is_training, drop_p=0.5)
        logits = fc(fcmain,
                    10,
                    is_training,
                    reuse,
                    name='logits',
                    activation=None)
        prediction = softmax(logits, 'prediction')

        loss = tf.reduce_mean(
            tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=y))
        opt = tf.train.AdamOptimizer()
        optimizer = opt.minimize(loss)
        # grads = opt.compute_gradients(loss, [fc2_b])

        correct_prediction = tf.equal(tf.argmax(prediction, 1),
                                      tf.argmax(y, 1))
        accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))

        return accuracy, loss, optimizer
예제 #2
0
def discriminator(inputs, is_training, reuse, num_classes=1):
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(batch_norm=True,
                          activation=lrelu,
                          w_init=initz.he_normal(scale=1),
                          untie_biases=False,
                          **common_args)
    conv_args_1st = make_args(batch_norm=None,
                              activation=lrelu,
                              w_init=initz.he_normal(scale=1),
                              untie_biases=False,
                              **common_args)
    logits_args = make_args(activation=None,
                            w_init=initz.he_normal(scale=1),
                            **common_args)
    pool_args = make_args(padding='SAME', **common_args)
    end_points = {}
    x = inputs
    end_points['inputs'] = x
    x = dropout(x, drop_p=0.2, name="input_dropout1", **common_args)
    x = conv2d(x,
               96,
               filter_size=(5, 5),
               stride=(2, 2),
               name="d_conv1_1",
               **conv_args_1st)
    end_points['d_conv1_1'] = x
    x = conv2d(x, 96, name="d_conv1_2", **conv_args)
    end_points['d_conv1_2'] = x
    x = conv2d(x, 96, stride=(2, 2), name="d_conv1_3", **conv_args)
    end_points['d_conv1_3'] = x
    x = dropout(x, drop_p=0.2, name="dropout1", **common_args)
    x = conv2d(x, 192, name="d_conv2_1", **conv_args)
    end_points['d_conv2_1'] = x
    x = conv2d(x, 192, name="d_conv2_2", **conv_args)
    end_points['d_conv2_2'] = x
    # x = conv2d(x, 192, stride=(2, 2), name="d_conv2_3", **conv_args)
    # end_points['d_conv2_3'] = x
    x = dropout(x, drop_p=0.2, name="dropout2", **common_args)
    # x = conv2d(x, 192, stride=(2, 2), name="d_conv3_1", **conv_args)
    # end_points['d_conv3_1'] = x
    x = conv2d(x, 192, filter_size=(1, 1), name="d_conv4_1", **conv_args)
    end_points['d_conv4_1'] = x
    x = conv2d(x, 192, filter_size=(1, 1), name="d_conv4_2", **conv_args)
    end_points['d_conv4_2'] = x
    x = global_avg_pool(x, name="global_pool")
    end_points['global_pool'] = x
    logits = fully_connected(x, num_classes, name="d_logits", **logits_args)
    end_points['logits'] = logits
    end_points['predictions'] = softmax(logits,
                                        name='predictions',
                                        **common_args)
    return end_points
예제 #3
0
def encoder(inputs, is_training, reuse, z_dim=512):
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(batch_norm=True,
                          activation=lrelu,
                          w_init=initz.he_normal(scale=1),
                          untie_biases=False,
                          **common_args)
    conv_args_1st = make_args(batch_norm=None,
                              activation=lrelu,
                              w_init=initz.he_normal(scale=1),
                              untie_biases=False,
                              **common_args)
    logits_args = make_args(activation=None,
                            w_init=initz.he_normal(scale=1),
                            **common_args)
    pool_args = make_args(padding='SAME', **common_args)
    end_points = {}
    x = inputs
    end_points['inputs'] = x
    x = dropout(x, drop_p=0.2, name="input_dropout1", **common_args)
    x = conv2d(x,
               96,
               filter_size=(5, 5),
               stride=(2, 2),
               name="e_conv1_1",
               **conv_args_1st)
    end_points['e_conv1_1'] = x
    x = conv2d(x, 96, name="e_conv1_2", **conv_args)
    end_points['e_conv1_2'] = x
    x = conv2d(x, 96, stride=(2, 2), name="e_conv1_3", **conv_args)
    end_points['e_conv1_3'] = x
    x = dropout(x, drop_p=0.2, name="dropout1", **common_args)
    x = conv2d(x, 192, name="e_conv2_1", **conv_args)
    end_points['e_conv2_1'] = x
    x = conv2d(x, 192, name="e_conv2_2", **conv_args)
    end_points['e_conv2_2'] = x
    # x = conv2d(x, 192, stride=(2, 2), name="e_conv2_3", **conv_args)
    # end_points['e_conv2_3'] = x
    x = dropout(x, drop_p=0.2, name="dropout2", **common_args)
    # x = conv2d(x, 192, stride=(2, 2), name="e_conv3_1", **conv_args)
    # end_points['e_conv3_1'] = x
    x = conv2d(x, 192, filter_size=(1, 1), name="e_conv4_1", **conv_args)
    end_points['e_conv4_1'] = x
    x = conv2d(x, 192, filter_size=(1, 1), name="e_conv4_2", **conv_args)
    end_points['e_conv4_2'] = x
    x = global_avg_pool(x, name="global_pool")
    end_points['global_pool'] = x
    logits1 = fully_connected(x, z_dim, name="e_logits1", **logits_args)
    logits2 = fully_connected(x, z_dim, name="e_logits2", **logits_args)
    logits2 = tf.tanh(logits2, name='e_logits2_tanh')
    end_points['e_logits1'] = logits1
    end_points['e_logits2'] = logits2
    return end_points
예제 #4
0
파일: densenet.py 프로젝트: openAGI/models
def trans_block(inputs, num_filters, drop_p=None, block_name='trans', **kwargs):
  x = conv2d(inputs, num_filters, filter_size=(1, 1), name=block_name + "_conv1_1", **kwargs)
  if drop_p:
    is_training = kwargs.get('is_training')
    x = dropout(x, is_training, drop_p=drop_p, name=block_name + "_trans_dropout")
  x = rms_pool_2d(x, name=block_name + "rms_pool1", padding='SAME')
  return x
예제 #5
0
def model(is_training, resue, num_classes=5):
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(
        untie_biases=True, batch_norm=batch_norm, **common_args)
    logit_args = make_args(activation=prelu, **common_args)

    inputs = input((None, crop_size[1], crop_size[0], 3), **common_args)

    net = conv2d(inputs, 32, filter_size=(3, 3), stride=(
        2, 2), name='conv1', **conv_params)
    net = conv2d(net, 64, name='conv2', **conv_params)
    net = bottleneck_v1(net, num_unit=128, name='block_v1_1', **conv_args)
    net = bottleneck_v1(net, num_unit=256, name='block_v1_2', **conv_args)
    net = bottleneck_v1(net, num_unit=728, name='block_v1_3', **conv_args)

    for i in range(8):
        prefix = 'block_v2_' + str(i + 5)
        net = bottleneck_v2(net, num_unit=728, name=prefix, **kwargs)

    net = bottleneck_v1(net, num_unit=1024, name='block_v1_4', **conv_args)
    net = separable_conv2d(net, 1536, filter_size=(3, 3), stride=(1, 1),
                           name='sconv1', **kwargs)
    net = separable_conv2d(net, 2048, filter_size=(3, 3), stride=(1, 1),
                           name='sconv2', **kwargs)
    with tf.variable_scope('Logits'):
        net = avg_pool_2d(net, net.get_shape()[1:3], name='AvgPool_1a')
        net = dropout(
            net, is_training, drop_p=1 - dropout_keep_prob, name='Dropout_1b')
        logits = fully_connected(net, num_classes,
                                 name='logits', **logit_args)
        predictions = softmax(logits, name='predictions', **common_args)
    return end_points(is_training)
예제 #6
0
def model(is_training, reuse, dropout_keep_prob=0.5):
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(batch_norm=True, activation=prelu, w_init=initz.he_normal(
        scale=1), untie_biases=False, **common_args)
    pool_args = make_args(padding='SAME', **common_args)
    inputs = input((None, crop_size[1], crop_size[0], 3), **common_args)
    with tf.variable_scope('squeezenet', values=[inputs]):
        net = conv2d(inputs, 96, stride=(2, 2), name='conv1', **conv_args)
        net = max_pool(net, name='maxpool1', **pool_args)
        net = fire_module(net, 16, 64, name='fire2', **conv_args)
        net = fire_module(net, 16, 64, name='fire3', **conv_args)
        net = fire_module(net, 32, 128, name='fire4', **conv_args)
        net = max_pool(net, name='maxpool4', **pool_args)
        net = fire_module(net, 32, 128, name='fire5', **conv_args)
        net = fire_module(net, 48, 192, name='fire6', **conv_args)
        net = fire_module(net, 48, 192, name='fire7', **conv_args)
        net = fire_module(net, 64, 256, name='fire8', **conv_args)
        net = max_pool(net,  name='maxpool8', **pool_args)
        net = fire_module(net, 64, 256, name='fire9', **conv_args)
        # Reversed avg and conv layers per 'Network in Network'
        net = dropout(net, drop_p=1 - dropout_keep_prob,
                      name='dropout6', **common_args)
        net = conv2d(net, 10, filter_size=(1, 1), name='conv10', **conv_args)
        logits = global_avg_pool(net, name='logits', **pool_args)
        predictions = softmax(logits, name='predictions', **common_args)
        return end_points(is_training)
예제 #7
0
파일: densenet.py 프로젝트: openAGI/models
def conv_block(inputs, num_filters, drop_p=None, block_name='block', **kwargs):
  inter_filters = num_filters * 4
  x = conv2d(inputs, inter_filters, filter_size=(1, 1), name=block_name + "_conv1_1", **kwargs)
  if drop_p:
    is_training = kwargs.get('is_training')
    x = dropout(x, is_training, drop_p=drop_p, name=block_name + "_conv_dropout")
  x = conv2d(x, num_filters, name=block_name + "_conv1_2", **kwargs)
  return x
def model(is_training, reuse):
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(batch_norm=None, activation=prelu, **common_args)
    fc_args = make_args(activation=prelu, **common_args)
    logit_args = make_args(activation=None, **common_args)

    x = input((None, crop_size[1], crop_size[0], 1), **common_args)
    x = conv2d(x, 32, name='conv1_1', **conv_args)
    x = conv2d(x, 32, name='conv1_2', **conv_args)
    x = max_pool(x, name='pool1', **common_args)
    x = dropout(x, drop_p=0.25, name='dropout1', **common_args)
    x = fully_connected(x, n_output=128, name='fc1', **fc_args)
    x = dropout(x, drop_p=0.5, name='dropout2', **common_args)
    logits = fully_connected(x, n_output=36, name="logits", **logit_args)
    predictions = softmax(logits, name='predictions', **common_args)

    return end_points(is_training)
예제 #9
0
def model(inputs, is_training, reuse, num_classes=10, dropout_keep_prob=0.5):
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(batch_norm=True,
                          activation=prelu,
                          w_init=initz.he_normal(scale=1),
                          untie_biases=False,
                          **common_args)
    conv_args_fm = make_args(w_init=initz.he_normal(scale=1),
                             untie_biases=False,
                             **common_args)
    pool_args = make_args(padding='SAME', **common_args)
    with tf.variable_scope('squeezenet', values=[inputs]):
        net = separable_conv2d(inputs,
                               256,
                               stride=(2, 2),
                               name='conv1',
                               **conv_args)
        # net = conv2d(inputs, 96, stride=(2, 2), name='conv1', **conv_args)
        net = max_pool(net, name='maxpool1', **pool_args)
        net = fire_module(net, 16, 64, name='fire2', **conv_args_fm)
        net = bottleneck_simple(net, 16, 64, name='fire3', **conv_args_fm)
        net = batch_norm(net,
                         activation_fn=tf.nn.relu,
                         name='fire3_bn',
                         is_training=is_training,
                         reuse=reuse)
        net = fire_module(net, 32, 128, name='fire4', **conv_args_fm)
        net = max_pool(net, name='maxpool4', **pool_args)
        net = bottleneck_simple(net, 32, 128, name='fire5', **conv_args_fm)
        net = batch_norm(net,
                         activation_fn=tf.nn.relu,
                         name='fire5_bn',
                         is_training=is_training,
                         reuse=reuse)
        net = fire_module(net, 48, 192, name='fire6', **conv_args_fm)
        net = bottleneck_simple(net, 48, 192, name='fire7', **conv_args_fm)
        net = batch_norm(net,
                         activation_fn=tf.nn.relu,
                         name='fire7_bn',
                         is_training=is_training,
                         reuse=reuse)
        net = fire_module(net, 64, 256, name='fire8', **conv_args_fm)
        net = max_pool(net, name='maxpool8', **pool_args)
        net = dropout(net,
                      drop_p=1 - dropout_keep_prob,
                      name='dropout6',
                      **common_args)
        net = conv2d(net,
                     num_classes,
                     filter_size=(1, 1),
                     name='conv10',
                     **conv_args_fm)
        logits = global_avg_pool(net, name='logits', **pool_args)
        predictions = softmax(logits, name='predictions', **common_args)
        return end_points(is_training)
예제 #10
0
def model(is_training, reuse):
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(activation=relu, **common_args)
    pool_args = make_args(filter_size=(2, 2), **common_args)
    fc_args = make_args(activation=relu, **common_args)
    logit_args = make_args(activation=None, **common_args)

    x = input((None, crop_size[1], crop_size[0], 3), **common_args)

    x = conv2d(x, 64, name='conv1_1', **conv_args)
    x = conv2d(x, 64, name='conv1_2', **conv_args)
    x = max_pool(x, name='maxpool1', **pool_args)

    x = conv2d(x, 128, name='conv2_1', **conv_args)
    x = conv2d(x, 128, name='conv2_2', **conv_args)
    x = max_pool(x, name='maxpool2', **pool_args)

    x = conv2d(x, 256, name='conv3_1', **conv_args)
    x = conv2d(x, 256, name='conv3_2', **conv_args)
    x = conv2d(x, 256, name='conv3_3', **conv_args)
    x = max_pool(x, name='maxpool3', **pool_args)

    x = conv2d(x, 512, name='conv4_1', **conv_args)
    x = conv2d(x, 512, name='conv4_2', **conv_args)
    x = conv2d(x, 512, name='conv4_3', **conv_args)
    x = max_pool(x, name='maxpool4', **pool_args)

    x = conv2d(x, 512, name='conv5_1', **conv_args)
    x = conv2d(x, 512, name='conv5_2', **conv_args)
    x = conv2d(x, 512, name='conv5_3', **conv_args)
    x = max_pool(x, name='maxpool5', **pool_args)

    x = fully_connected(x, n_output=4096, name='fc6', **fc_args)
    x = dropout(x, drop_p=0.5, name='dropout1', **common_args)

    x = fully_connected(x, n_output=4096, name='fc7', **fc_args)
    x = dropout(x, drop_p=0.5, name='dropout2', **common_args)

    logits = fully_connected(x, n_output=1000, name="logits", **logit_args)
    predictions = softmax(logits, name='predictions', **common_args)

    return end_points(is_training)
예제 #11
0
def model(is_training, reuse):
    common_args = common_layer_args(is_training, reuse)

    x = input((None, 7, 7, 512), **common_args)
    # x = batch_norm_tf(x, **common_args)
    x = fully_connected(x, 512, activation=relu, name='fc1', **common_args)
    x = dropout(x, drop_p=0.5, name='dropout1', **common_args)
    logits = fully_connected(x,
                             6,
                             activation=None,
                             name='logits',
                             **common_args)
    predictions = softmax(logits, name='predictions', **common_args)
    return end_points(is_training)
예제 #12
0
def model(x, is_training, reuse, num_classes=2, **kwargs):
    common_args = common_layer_args(is_training, reuse)
    fc_args = make_args(activation=relu, **common_args)
    logit_args = make_args(activation=None, **common_args)
    x = embedding(x, 10000, 128, reuse)
    x1 = conv1d(x, 128, name='conv1_1', **common_args)
    x2 = conv1d(x, 128, filter_size=4, name='conv1_2', **common_args)
    x3 = conv1d(x, 128, filter_size=5, name='conv1_3', **common_args)
    x = merge([x1, x2, x3], 'concat', axis=1)
    x = lstm(x, 384, reuse, is_training)
    x = dropout(x, drop_p=0.3, **common_args)
    logits = fc(x, num_classes, name='logits', **logit_args)

    predictions = softmax(logits, name='predictions', **common_args)
    return end_points(is_training)
예제 #13
0
def model(x, is_training, reuse):
    common_args = common_layer_args(is_training, reuse)
    fc_args = make_args(activation=relu, **common_args)
    logit_args = make_args(activation=None, **common_args)
    x = embedding(x, 10000, 128, reuse)
    x1 = conv1d(x, 128, name='conv1_1', **common_args)
    x2 = conv1d(x, 128, filter_size=4, name='conv1_2', **common_args)
    x3 = conv1d(x, 128, filter_size=5, name='conv1_3', **common_args)
    x = merge([x1, x2, x3], 'concat', axis=1)
    x = tf.expand_dims(x, 2)
    x = global_max_pool(x)
    x = dropout(x, drop_p=0.3, **common_args)
    logits = fc(x, 2, name='logits', **logit_args)

    predictions = softmax(logits, name='predictions', **common_args)
    return end_points(is_training)
예제 #14
0
파일: model.py 프로젝트: openAGI/models
def model(x, is_training, reuse, num_classes=10, **config):
  common_args = common_layer_args(is_training, reuse)
  logit_args = make_args(activation=None, **common_args)

  if config['max_conv_layers']>0:
    for i in range(1, config['n_conv_layers']+1):
      activation, size, maxpool = layer_config(config, i, layer_type='conv')
      conv_args = make_args(batch_norm=bool(config['batch_norm']), activation=prelu, **common_args)
      x = conv2d(x, size, name='conv{}'.format(i), **conv_args)
      if maxpool:
        x = max_pool(x, name='pool{}'.format(i), **common_args)

  if config['max_fc_layers']>0:
    for i in range(1, config['n_fc_layers']+1):
      activation, size, _dropout = layer_config(config, i, layer_type='fc')
      fc_args = make_args(activation=prelu, **common_args)
      x = fully_connected(x, n_output=size, name='fc{}'.format(i), **fc_args)
      x = dropout(x, drop_p=np.round(_dropout, 2), name='dropout{}'.format(i), **common_args)

  logits = fully_connected(x, n_output=num_classes, name="logits", **logit_args)
  predictions = softmax(logits, name='predictions', **common_args)
  return end_points(is_training)
예제 #15
0
def model(is_training, reuse, flexi_inputs=False):
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(activation=relu, **common_args)
    pool_args = make_args(filter_size=(2, 2), **common_args)
    logit_args = make_args(activation=None, **common_args)

    if flexi_inputs:
        inputs_shape = (None, None, None, 3)
    else:
        inputs_shape = (None, crop_size[1], crop_size[0], 3)

    net_inputs = input(inputs_shape, **common_args)
    x = net_inputs
    with tf.variable_scope('vgg_16', reuse=reuse):
        mean_rgb = tf.get_variable(name='mean_rgb',
                                   initializer=tf.truncated_normal(shape=[3]),
                                   trainable=False)
        x = x - mean_rgb
        with tf.variable_scope('conv1'):
            x = conv2d(x, 64, name='conv1_1', **conv_args)
            x = conv2d(x, 64, name='conv1_2', **conv_args)
            x = max_pool(x, name='maxpool1', **pool_args)

        with tf.variable_scope('conv2'):
            x = conv2d(x, 128, name='conv2_1', **conv_args)
            x = conv2d(x, 128, name='conv2_2', **conv_args)
            x = max_pool(x, name='maxpool2', **pool_args)

        with tf.variable_scope('conv3'):
            x = conv2d(x, 256, name='conv3_1', **conv_args)
            x = conv2d(x, 256, name='conv3_2', **conv_args)
            x = conv2d(x, 256, name='conv3_3', **conv_args)
            x = max_pool(x, name='maxpool3', **pool_args)

        with tf.variable_scope('conv4'):
            x = conv2d(x, 512, name='conv4_1', **conv_args)
            x = conv2d(x, 512, name='conv4_2', **conv_args)
            x = conv2d(x, 512, name='conv4_3', **conv_args)
            x = max_pool(x, name='maxpool4', **pool_args)

        with tf.variable_scope('conv5'):
            x = conv2d(x, 512, name='conv5_1', **conv_args)
            x = conv2d(x, 512, name='conv5_2', **conv_args)
            x = conv2d(x, 512, name='conv5_3', **conv_args)
            x = max_pool(x, name='maxpool5', **pool_args)

        x = conv2d(x,
                   4096,
                   name='fc6',
                   filter_size=(7, 7),
                   padding='VALID',
                   **conv_args)
        x = dropout(x, drop_p=0.5, name='dropout6', **common_args)

        x = conv2d(x, 4096, name='fc7', filter_size=(1, 1), **conv_args)
        x = dropout(x, drop_p=0.5, name='dropout7', **common_args)

        x = conv2d(x, 1000, name='fc8', filter_size=(1, 1), **logit_args)

    if flexi_inputs:
        logits = alias(x, name='logits', **common_args)
    else:
        logits = squeeze(x, axis=[1, 2], name='logits', **common_args)

    predictions = softmax(logits, name='predictions', **common_args)
    return end_points(is_training)
예제 #16
0
파일: vgg.py 프로젝트: souravroy0708/tefla
def vgg_16(is_training, reuse,
           num_classes=1000,
           dropout_keep_prob=0.5,
           spatial_squeeze=True,
           name='vgg_16'):
    """Oxford Net VGG 16-Layers version D Example.

    Note: All the fully_connected layers have been transformed to conv2d layers.
          To use in classification mode, resize input to 224x224.

    Args:
      inputs: a tensor of size [batch_size, height, width, channels].
      num_classes: number of predicted classes.
      is_training: whether or not the model is being trained.
      dropout_keep_prob: the probability that activations are kept in the dropout
        layers during training.
      spatial_squeeze: whether or not should squeeze the spatial dimensions of the
        outputs. Useful to remove unnecessary dimensions for classification.
      name: Optional name for the variables.

    Returns:
      the last op containing the log predictions and end_points dict.
    """
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(batch_norm=True, activation=prelu, w_init=initz.he_normal(
        scale=1), untie_biases=False, **common_args)
    logit_args = make_args(
        activation=None, w_init=initz.he_normal(scale=1), **common_args)
    pred_args = make_args(
        activation=prelu, w_init=initz.he_normal(scale=1), **common_args)
    pool_args = make_args(padding='SAME', **common_args)
    inputs = input((None, crop_size[1], crop_size[0], 3), **common_args)
    with tf.variable_scope(name, 'vgg_16', [inputs]):
        net = repeat(inputs, 2, conv2d,
                     64, filter_size=(3, 3), name='conv1', **conv_args)
        net = max_pool(net, name='pool1', **pool_args)
        net = repeat(net, 2, conv2d, 128, filter_size=(
            3, 3), name='conv2', **conv_args)
        net = max_pool(net, name='pool2', **pool_args)
        net = repeat(net, 3, conv2d, 256, filter_size=(
            3, 3), name='conv3', **conv_args)
        net = max_pool(net, name='pool3', **pool_args)
        net = repeat(net, 3, conv2d, 512, filter_size=(
            3, 3), name='conv4', **conv_args)
        net = max_pool(net, name='pool4', **pool_args)
        net = repeat(net, 3, conv2d, 512, filter_size=(
            3, 3), name='conv5', **conv_args)
        net = max_pool(net, name='pool5', **pool_args)
        # Use conv2d instead of fully_connected layers.
        net = conv2d(net, 4096, filter_size=(7, 7), name='fc6', **conv_args)
        net = dropout(net, drop_p=1 - dropout_keep_prob, is_training=is_training,
                      name='dropout6', **common_args)
        net = conv2d(net, 4096, filter_size=(1, 1), name='fc7', **conv_args)
        net = dropout(net, drop_p=1 - dropout_keep_prob, is_training=is_training,
                      name='dropout7', **common_args)
        logits = conv2d(net, num_classes, filter_size=(1, 1),
                        activation=None,
                        name='logits', **logit_args)
        # Convert end_points_collection into a end_point dict.
        if spatial_squeeze:
            logits = tf.squeeze(logits, [1, 2], name='logits/squeezed')
        predictions = softmax(logits, name='predictions', **pred_args)
        return end_points(is_training)
예제 #17
0
파일: alexnet.py 프로젝트: openAGI/models
def model(inputs,
          is_training,
          reuse,
          num_classes=5,
          dropout_keep_prob=0.5,
          spatial_squeeze=True,
          name='alexnet_v2',
          **kwargs):
    """AlexNet version 2.

  Described in: http://arxiv.org/pdf/1404.5997v2.pdf
  Parameters from:
  github.com/akrizhevsky/cuda-convnet2/blob/master/layers/
  layers-imagenet-1gpu.cfg

  Note: All the fully_connected layers have been transformed to conv2d layers.
        To use in classification mode, resize input to 224x224. To use in fully
        convolutional mode, set spatial_squeeze to false.
        The LRN layers have been removed and change the initializers from
        random_normal_initializer to xavier_initializer.

  Args:
    inputs: a tensor of size [batch_size, height, width, channels].
    num_classes: number of predicted classes.
    is_training: whether or not the model is being trained.
    dropout_keep_prob: the probability that activations are kept in the dropout
      layers during training.
    spatial_squeeze: whether or not should squeeze the spatial dimensions of the
      outputs. Useful to remove unnecessary dimensions for classification.
    name: Optional name for the variables.

  Returns:
    the last op containing the log predictions and end_points dict.
  """
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(batch_norm=True,
                          activation=prelu,
                          w_init=initz.he_normal(scale=1),
                          untie_biases=False,
                          **common_args)
    logit_args = make_args(activation=None,
                           w_init=initz.he_normal(scale=1),
                           **common_args)
    pred_args = make_args(activation=prelu,
                          w_init=initz.he_normal(scale=1),
                          **common_args)
    pool_args = make_args(padding='SAME', **common_args)

    # inputs = input((None, crop_size[1], crop_size[0], 3), **common_args)
    with tf.variable_scope(name, 'alexnet_v2', [inputs]):
        net = conv2d(inputs,
                     64,
                     filter_size=(11, 11),
                     stride=(4, 4),
                     name='conv1',
                     **conv_args)
        net = max_pool(net, stride=(2, 2), name='pool1', **pool_args)
        net = conv2d(net, 192, filter_size=(5, 5), name='conv2', **conv_args)
        net = max_pool(net, stride=(2, 2), name='pool2', **pool_args)
        net = conv2d(net, 384, name='conv3', **conv_args)
        net = conv2d(net, 384, name='conv4', **conv_args)
        net = conv2d(net, 256, name='conv5', **conv_args)
        net = max_pool(net, stride=(2, 2), name='pool5', **pool_args)

        # Use conv2d instead of fully_connected layers.
        net = conv2d(net, 4096, filter_size=(5, 5), name='fc6', **conv_args)
        net = dropout(net,
                      drop_p=1 - dropout_keep_prob,
                      name='dropout6',
                      **common_args)
        net = conv2d(net, 4096, filter_size=(1, 1), name='fc7', **conv_args)
        net = dropout(net,
                      drop_p=1 - dropout_keep_prob,
                      name='dropout7',
                      **common_args)
        net = global_avg_pool(net)
        logits = fc(net, num_classes, name='logits', **logit_args)

        predictions = softmax(logits, name='predictions', **common_args)
        return end_points(is_training)
예제 #18
0
파일: rnn_cell.py 프로젝트: liuwang1/tefla
    def __call__(self, inputs, state, scope='basiclstm'):
        """Long short-term memory cell (LSTM)."""
        with tf.variable_scope(scope):
            c, h = state
            concat = _linear([inputs, h],
                             4 * self._num_units,
                             self.reuse,
                             trainable=self.trainable,
                             use_bias=False,
                             name=scope)

            # i = input_gate, j = new_input, f = forget_gate, o = output_gate
            try:
                i, j, f, o = tf.split(1, 4, concat)
            except Exception as e:
                print('Upgrade to recent version >= r.12 %s' % str(e.message))
                i, j, f, o = tf.split(concat, 4, 1)

            # apply batch normalization to inner state and gates
            if self.layer_norm is not None:
                i = self.layer_norm(i,
                                    self.reuse,
                                    trainable=self.trainable,
                                    **self.layer_norm_args)
                j = self.layer_norm(j,
                                    self.reuse,
                                    trainable=self.trainable,
                                    **self.layer_norm_args)
                f = self.layer_norm(f,
                                    self.reuse,
                                    trainable=self.trainable,
                                    **self.layer_norm_args)
                o = self.layer_norm(o,
                                    self.reuse,
                                    trainable=self.trainable,
                                    **self.layer_norm_args)

            j = self._activation(j)
            if (not isinstance(self._keep_prob, float)) or self._keep_prob < 1:
                j = dropout(j, self._keep_prob, seed=self._dropout_seed)
            new_c = (c * self._inner_activation(f + self._forget_bias) +
                     self._inner_activation(i) * self._activation(j))

            if self._cell_clip is not None:
                new_c = tf.clip_by_value(new_c, -self._cell_clip,
                                         self._cell_clip)

            if self.layer_norm is not None:
                layer_norm_new_c = self.layer_norm(new_c,
                                                   self.reuse,
                                                   trainable=self.trainable,
                                                   **self.layer_norm_args)
                new_h = self._activation(
                    layer_norm_new_c) * self._inner_activation(o)
            else:
                new_h = self._activation(new_c) * self._inner_activation(o)

            new_state = core_rnn_cell.LSTMStateTuple(new_c, new_h)

            new_h = _collect_named_outputs(self.outputs_collections,
                                           scope + '_h', new_h)
            new_state = _collect_named_outputs(self.outputs_collections,
                                               scope + '_state', new_state)
            return new_h, new_state
예제 #19
0
def discriminator(inputs, is_training, reuse, num_classes=11, batch_size=32):
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(batch_norm=True,
                          activation=lrelu,
                          w_init=initz.he_normal(scale=1),
                          untie_biases=False,
                          **common_args)
    conv_args_1st = make_args(batch_norm=None,
                              activation=lrelu,
                              w_init=initz.he_normal(scale=1),
                              untie_biases=False,
                              **common_args)
    logits_args = make_args(activation=None,
                            w_init=initz.he_normal(scale=1),
                            **common_args)
    pool_args = make_args(padding='SAME', **common_args)
    end_points = {}
    x = inputs
    end_points['inputs'] = x
    x = dropout(x, drop_p=0.2, name="input_dropout1", **common_args)
    x = conv2d(x,
               96,
               filter_size=(5, 5),
               stride=(2, 2),
               name="d_conv1_1",
               **conv_args_1st)
    end_points['d_conv1_1'] = x
    x = conv2d(x, 96, name="d_conv1_2", **conv_args)
    end_points['d_conv1_2'] = x
    x = conv2d(x, 96, stride=(2, 2), name="d_conv1_3", **conv_args)
    end_points['d_conv1_3'] = x
    x = dropout(x, drop_p=0.2, name="dropout1", **common_args)
    x = conv2d(x, 192, name="d_conv2_1", **conv_args)
    end_points['d_conv2_1'] = x
    x = conv2d(x, 192, name="d_conv2_2", **conv_args)
    end_points['d_conv2_2'] = x
    x = conv2d(x, 192, stride=(2, 2), name="d_conv2_3", **conv_args)
    end_points['d_conv2_3'] = x
    x = dropout(x, drop_p=0.2, name="dropout2", **common_args)
    x = conv2d(x, 192, stride=(2, 2), name="d_conv3_1", **conv_args)
    end_points['d_conv3_1'] = x
    x = conv2d(x, 192, filter_size=(1, 1), name="d_conv4_1", **conv_args)
    end_points['d_conv4_1'] = x
    x = conv2d(x, 192, filter_size=(1, 1), name="d_conv4_2", **conv_args)
    end_points['d_conv4_2'] = x
    x = global_avg_pool(x, name="global_pool")
    end_points['global_pool'] = x
    logits = fully_connected(x, num_classes, name="d_logits", **logits_args)
    end_points['logits'] = logits
    end_points['predictions'] = softmax(logits,
                                        name='predictions',
                                        **common_args)

    if is_training:
        batch_size = 2 * batch_size
        generated_class_logits = tf.squeeze(
            tf.slice(logits, [0, num_classes - 1], [batch_size, 1]))
        end_points['generated_class_logits'] = generated_class_logits
        positive_class_logits = tf.slice(logits, [0, 0],
                                         [batch_size, num_classes - 1])
        end_points['positive_class_logits'] = positive_class_logits

        max_ = tf.reduce_max(positive_class_logits, 1, keep_dims=True)
        safe_pos_class_logits = positive_class_logits - max_
        end_points['safe_pos_class_logits'] = safe_pos_class_logits

        gan_logits = tf.log(
            tf.reduce_sum(tf.exp(safe_pos_class_logits),
                          1)) + tf.squeeze(max_) - generated_class_logits
        end_points['gan_logits'] = gan_logits
        assert len(gan_logits.get_shape()) == 1

        probs = tf.nn.sigmoid(gan_logits)
        end_points['probs'] = probs
        class_logits = tf.slice(logits, [0, 0], [batch_size / 2, num_classes])
        end_points['class_logits'] = class_logits
        D_on_data = tf.slice(probs, [0], [batch_size / 2])
        end_points['D_on_data'] = D_on_data
        D_on_data_logits = tf.slice(gan_logits, [0], [batch_size / 2])
        end_points['D_on_data_logits'] = D_on_data_logits
        D_on_G = tf.slice(probs, [batch_size / 2], [batch_size / 2])
        end_points['D_on_G'] = D_on_G
        D_on_G_logits = tf.slice(gan_logits, [batch_size / 2],
                                 [batch_size / 2])
        end_points['D_on_G_logits'] = D_on_G_logits

        return end_points
    else:
        return end_points
예제 #20
0
def model(inputs, is_training, reuse, num_classes=21, batch_size=1):
    common_args = common_layer_args(is_training, reuse)
    conv_args = make_args(batch_norm=True, activation=lrelu, w_init=initz.he_normal(
        scale=1), untie_biases=False, **common_args)
    upsample_args = make_args(
        batch_norm=False, activation=lrelu, use_bias=False, **common_args)
    logits_args = make_args(
        activation=None, **common_args)
    pool_args = make_args(padding='SAME', **common_args)

    conv1_1 = conv2d(inputs, 64, name="vgg_19/conv1/conv1_1", **conv_args)
    conv1_2 = conv2d(conv1_1, 64, name="vgg_19/conv1/conv1_2", **conv_args)
    pool1 = max_pool(conv1_2, stride=2, name='pool1', **pool_args)
    conv2_1 = conv2d(pool1, 128, name="vgg_19/conv2/conv2_1", **conv_args)
    conv2_2 = conv2d(conv2_1, 128, name="vgg_19/conv2/conv2_2", **conv_args)
    pool2 = max_pool(conv2_2, stride=2, name='pool2', **pool_args)
    conv3_1 = conv2d(pool2, 256, name="vgg_19/conv3/conv3_1", **conv_args)
    conv3_2 = conv2d(conv3_1, 256, name="vgg_19/conv3/conv3_2", **conv_args)
    conv3_3 = conv2d(conv3_2, 256, name="vgg_19/conv3/conv3_3", **conv_args)
    conv3_4 = conv2d(conv3_3, 256, name="vgg_19/conv3/conv3_4", **conv_args)
    pool3 = max_pool(conv3_4, stride=2, name='pool3', **pool_args)
    conv4_1 = conv2d(pool3, 512, name="vgg_19/conv4/conv4_1", **conv_args)
    conv4_2 = conv2d(conv4_1, 512, name="vgg_19/conv4/conv4_2", **conv_args)
    conv4_3 = conv2d(conv4_2, 512, name="vgg_19/conv4/conv4_3", **conv_args)
    conv4_4 = conv2d(conv4_3, 512, name="vgg_19/conv4/conv4_4", **conv_args)
    pool4 = max_pool(conv4_4, stride=2, name='pool4', **pool_args)
    conv5_1 = conv2d(pool4, 512, name="vgg_19/conv5/conv5_1", **conv_args)
    conv5_2 = conv2d(conv5_1, 512, name="vgg_19/conv5/conv5_2", **conv_args)
    conv5_3 = conv2d(conv5_2, 512, name="vgg_19/conv5/conv5_3", **conv_args)
    conv5_4 = conv2d(conv5_3, 512, name="vgg_19/conv5/conv5_4", **conv_args)
    pool5 = max_pool(conv5_4, stride=2, name='pool5', **pool_args)

    fc6 = conv2d(pool5, 4096, filter_size=(7, 7),
                 name="vgg_19/fc6", **conv_args)
    fc6 = dropout(fc6, **common_args)
    fc7 = conv2d(fc6, 4096, filter_size=(1, 1), name="vgg_19/fc7", **conv_args)
    fc7 = dropout(fc7, **common_args)
    score_fr = conv2d(fc7, num_classes, filter_size=(1, 1),
                      name="score_fr", **conv_args)

    pred = tf.argmax(score_fr, axis=3)
    pool4_shape = pool4.get_shape().as_list()
    upscore2 = upsample2d(score_fr, [batch_size, pool4_shape[1], pool4_shape[2], num_classes], filter_size=(4, 4), stride=(2, 2),
                          name="deconv2d_1", w_init=initz.bilinear((4, 4, num_classes, num_classes)), **upsample_args)
    score_pool4 = conv2d(pool4, num_classes, filter_size=(1, 1),
                         name="score_pool4", **conv_args)
    fuse_pool4 = tf.add(upscore2, score_pool4)

    pool3_shape = pool3.get_shape().as_list()
    upscore4 = upsample2d(fuse_pool4, [batch_size, pool3_shape[1], pool3_shape[2], num_classes], filter_size=(4, 4), stride=(2, 2),
                          name="deconv2d_2", w_init=initz.bilinear((4, 4, num_classes, num_classes)), **upsample_args)
    score_pool3 = conv2d(pool3, num_classes, filter_size=(1, 1),
                         name="score_pool3", **conv_args)
    fuse_pool3 = tf.add(upscore4, score_pool3)
    input_shape = inputs.get_shape().as_list()
    upscore32 = upsample2d(fuse_pool3, [batch_size, input_shape[1], input_shape[2], num_classes], filter_size=(16, 16), stride=(8, 8),
                           name="deconv2d_3", w_init=initz.bilinear((16, 16, num_classes, num_classes)), **logits_args)
    logits = register_to_collections(tf.reshape(
        upscore32, shape=(-1, num_classes)), name='logits', **common_args)
    pred_up = tf.argmax(upscore32, axis=3)
    pred_up = register_to_collections(
        pred_up, name='final_prediction_map', **common_args)
    predictions = softmax(logits, name='predictions', **common_args)
    return end_points(is_training)
예제 #21
0
def model(inputs,
          is_training,
          reuse,
          num_classes=5,
          drop_prob=0.2,
          name='InceptionResnetV2'):
    common_args = common_layer_args(is_training, reuse)
    rest_conv_params = make_args(use_bias=False,
                                 batch_norm=batch_norm,
                                 activation=relu,
                                 **common_args)
    conv_params_no_bias = make_args(use_bias=False,
                                    batch_norm=batch_norm,
                                    activation=relu,
                                    **common_args)
    conv_params = make_args(use_bias=True,
                            batch_norm=batch_norm,
                            activation=None,
                            **common_args)
    rest_logit_params = make_args(activation=None, **common_args)
    rest_pool_params = make_args(padding='SAME', **common_args)
    rest_dropout_params = make_args(drop_p=drop_prob, **common_args)

    # inputs = input((None, crop_size[1], crop_size[0], 3), **common_args)

    with tf.variable_scope(name, 'InceptionResnetV2'):
        net = conv2d(inputs,
                     32,
                     stride=(2, 2),
                     name='Conv2d_1a_3x3',
                     **conv_params_no_bias)
        net = conv2d(net, 32, name='Conv2d_2a_3x3', **conv_params_no_bias)
        # 112 x 112
        net = conv2d(net, 64, name='Conv2d_2b_3x3', **rest_conv_params)
        # 112 x 112
        net = max_pool(net, name='MaxPool_3a_3x3', **rest_pool_params)
        # 64 x 64
        net = conv2d(net,
                     80,
                     filter_size=(1, 1),
                     name='Conv2d_3b_1x1',
                     **rest_conv_params)
        # 64 x 64
        net = conv2d(net, 192, name='Conv2d_4a_3x3', **rest_conv_params)
        # 64 x 64
        net = max_pool(net,
                       stride=(2, 2),
                       name='maxpool_5a_3x3',
                       **rest_pool_params)

        # 32 x 32
        with tf.variable_scope('Mixed_5b'):
            with tf.variable_scope('Branch_0'):
                tower_conv = conv2d(net,
                                    96,
                                    filter_size=(1, 1),
                                    name='Conv2d_1x1',
                                    **rest_conv_params)
            with tf.variable_scope('Branch_1'):
                tower_conv1_0 = conv2d(net,
                                       48,
                                       filter_size=(1, 1),
                                       name='Conv2d_0a_1x1',
                                       **rest_conv_params)
                tower_conv1_1 = conv2d(tower_conv1_0,
                                       64,
                                       filter_size=(5, 5),
                                       name='Conv2d_0b_5x5',
                                       **rest_conv_params)
            with tf.variable_scope('Branch_2'):
                tower_conv2_0 = conv2d(net,
                                       64,
                                       filter_size=(1, 1),
                                       name='Conv2d_0a_1x1',
                                       **rest_conv_params)
                tower_conv2_1 = conv2d(tower_conv2_0,
                                       96,
                                       name='Conv2d_0b_3x3',
                                       **rest_conv_params)
                tower_conv2_2 = conv2d(tower_conv2_1,
                                       96,
                                       name='Conv2d_0c_3x3',
                                       **rest_conv_params)
            with tf.variable_scope('Branch_3'):
                tower_pool = avg_pool_2d(net,
                                         stride=(1, 1),
                                         name='avgpool_0a_3x3',
                                         **rest_pool_params)
                tower_pool_1 = conv2d(tower_pool,
                                      64,
                                      filter_size=(1, 1),
                                      name='Conv2d_0b_1x1',
                                      **rest_conv_params)
            net = tf.concat(
                [tower_conv, tower_conv1_1, tower_conv2_2, tower_pool_1], 3)
        with tf.variable_scope('Repeat'):
            for i in range(1, 11):
                net = block35(net,
                              name='block35_' + str(i),
                              scale=0.17,
                              **conv_params_no_bias)

        # 32 x 32
        with tf.variable_scope('Mixed_6a'):
            with tf.variable_scope('Branch_0'):
                tower_conv = conv2d(net,
                                    384,
                                    stride=(2, 2),
                                    name='Conv2d_1a_3x3',
                                    **rest_conv_params)
            with tf.variable_scope('Branch_1'):
                tower_conv1_0 = conv2d(net,
                                       256,
                                       filter_size=(1, 1),
                                       name='Conv2d_0a_1x1',
                                       **rest_conv_params)
                tower_conv1_1 = conv2d(tower_conv1_0,
                                       256,
                                       name='Conv2d_0b_3x3',
                                       **rest_conv_params)
                tower_conv1_2 = conv2d(tower_conv1_1,
                                       384,
                                       stride=(2, 2),
                                       name='Conv2d_1a_3x3',
                                       **rest_conv_params)
            with tf.variable_scope('Branch_2'):
                tower_pool = max_pool(net,
                                      name='maxpool_1a_3x3',
                                      **rest_pool_params)
            net = tf.concat([tower_conv, tower_conv1_2, tower_pool], 3)

        with tf.variable_scope('Repeat_1'):
            for i in range(1, 21):
                net = block17(net,
                              name='block17_' + str(i),
                              scale=0.10,
                              **conv_params_no_bias)

        with tf.variable_scope('Mixed_7a'):
            with tf.variable_scope('Branch_0'):
                tower_conv = conv2d(net,
                                    256,
                                    filter_size=(1, 1),
                                    name='Conv2d_0a_1x1',
                                    **rest_conv_params)
                tower_conv_1 = conv2d(tower_conv,
                                      384,
                                      stride=(2, 2),
                                      name='Conv2d_1a_3x3',
                                      **rest_conv_params)
            with tf.variable_scope('Branch_1'):
                tower_conv1 = conv2d(net,
                                     256,
                                     filter_size=(1, 1),
                                     name='Conv2d_0a_1x1',
                                     **rest_conv_params)
                tower_conv1_1 = conv2d(tower_conv1,
                                       288,
                                       stride=(2, 2),
                                       name='Conv2d_1a_3x3',
                                       **rest_conv_params)
            with tf.variable_scope('Branch_2'):
                tower_conv2 = conv2d(net,
                                     256,
                                     filter_size=(1, 1),
                                     name='Conv2d_0a_1x1',
                                     **rest_conv_params)
                tower_conv2_1 = conv2d(tower_conv2,
                                       288,
                                       name='Conv2d_0b_3x3',
                                       **rest_conv_params)
                tower_conv2_2 = conv2d(tower_conv2_1,
                                       320,
                                       stride=(2, 2),
                                       name='Conv2d_1a_3x3',
                                       **rest_conv_params)
            with tf.variable_scope('Branch_3'):
                tower_pool = max_pool(net,
                                      name='maxpool_1a_3x3',
                                      **rest_pool_params)
            net = tf.concat(
                [tower_conv_1, tower_conv1_1, tower_conv2_2, tower_pool], 3)
        # 8 x 8
        with tf.variable_scope('Repeat_2'):
            for i in range(1, 10):
                net = block8(net,
                             name='block8_' + str(i),
                             scale=0.20,
                             **conv_params_no_bias)
        net = block8(net, name='Block8', **conv_params_no_bias)

        net = conv2d(net,
                     1536,
                     filter_size=(1, 1),
                     name='Conv2d_7b_1x1',
                     **rest_conv_params)

        with tf.variable_scope('Logits'):
            net = global_avg_pool(net, name='avgpool_1a_8x8')
            net = dropout(net, name='dropout', **rest_dropout_params)
            logits = fully_connected(net,
                                     num_classes,
                                     name='Logits',
                                     **rest_logit_params)
            predictions = softmax(logits, name='Predictions', **common_args)

    return end_points(is_training)