예제 #1
0
def lenet5_with_dropout_original(graph, verbose=False):

    with graph.as_default():
        with tf.device('gpu:0'):
            is_train = tf.placeholder_with_default(False,
                                                   shape=(),
                                                   name='is_train')
            with tf.name_scope('inputs'):
                x = tf.placeholder(DTYPE, shape=(None, 32, 32, 3), name='x')
                y = tf.placeholder(tf.int32, shape=(None), name='y')
                keep_prob = tf.placeholder_with_default(input=1.0,
                                                        shape=(),
                                                        name='keep_prob')
            with tf.name_scope('augmentation'):
                augmented = utils.augment_images(x, is_train)

            with tf.name_scope('C1-conv'):
                conv1 = tf.layers.conv2d(
                    augmented,
                    filters=6,
                    kernel_size=5,
                    strides=(1, 1),
                    padding='VALID',
                    activation=tf.nn.tanh,
                    kernel_initializer=DEFAULT_INITIALIZER)
                if verbose:
                    print('C1-outshape:', conv1.get_shape().as_list())

            with tf.variable_scope('S2-avg_pool'):
                conv1 = utils.average_pooling_with_weights(
                    value=conv1,
                    ksize=(1, 2, 2, 1),
                    strides=(1, 2, 2, 1),
                    padding='VALID',
                    activation=tf.nn.tanh)
                if verbose:
                    print('S2-outshape:', conv1.get_shape().as_list())

            with tf.variable_scope('dropout1'):
                conv1 = tf.nn.dropout(conv1, keep_prob)

            with tf.variable_scope('C3-conv'):
                conv2 = tf.layers.conv2d(
                    conv1,
                    filters=16,
                    kernel_size=5,
                    padding='VALID',
                    activation=tf.nn.tanh,
                    kernel_initializer=DEFAULT_INITIALIZER)
                if verbose:
                    print('C3-outshape:', conv2.get_shape().as_list())

            with tf.variable_scope('S4-avg_pool'):
                conv2 = utils.average_pooling_with_weights(
                    value=conv2,
                    ksize=(1, 2, 2, 1),
                    strides=(1, 2, 2, 1),
                    padding='VALID',
                    activation=tf.nn.tanh)
                if verbose:
                    print('S4-outshape:', conv2.get_shape().as_list())

            with tf.variable_scope('dropout2'):
                conv2 = tf.nn.dropout(conv2, keep_prob)

            with tf.variable_scope('C5-conv'):
                conv3 = tf.layers.conv2d(
                    conv2,
                    filters=120,
                    kernel_size=5,
                    padding='VALID',
                    activation=tf.nn.tanh,
                    kernel_initializer=DEFAULT_INITIALIZER)

                if verbose:
                    print('C5-outshape:', conv3.get_shape().as_list())
                conv3 = tf.nn.dropout(conv3, keep_prob)

            with tf.name_scope('F6-fc'):
                flatten = tf.layers.Flatten()(conv3)
                fc1 = tf.layers.dense(inputs=flatten,
                                      units=84,
                                      activation=tf.nn.tanh,
                                      kernel_initializer=DEFAULT_INITIALIZER,
                                      name='fc2')
            with tf.name_scope('dropout3'):
                fc1 = tf.nn.dropout(fc1, keep_prob)

                if verbose:
                    print('F6-outshape:', fc1.get_shape().as_list())

            with tf.name_scope('logits'):
                '''
        logits = tf.layers.dense(inputs=fc1,
                                 units=10,
                                 kernel_initializer=DEFAULT_INITIALIZER)
        '''
                logits = utils.rbf_euclidean_layer(inputs=fc1, units=10)

        return x, y, is_train, keep_prob, logits
예제 #2
0
def lenet5(graph, verbose=False):
    # for regularization
    with graph.as_default():
        with tf.device('gpu:0'):
            is_train = tf.placeholder_with_default(False,
                                                   shape=(),
                                                   name='is_train')
            with tf.name_scope('inputs'):
                x = tf.placeholder(DTYPE, shape=(None, 28, 28, 1), name='x')
                y = tf.placeholder(tf.int32, shape=(None), name='y')

                padded = tf.pad(x, [[0, 0], [2, 2], [2, 2], [0, 0]])

            with tf.name_scope('C1-conv'):
                conv1 = tf.layers.conv2d(
                    padded,
                    filters=6,
                    kernel_size=5,
                    strides=(1, 1),
                    padding='VALID',
                    activation=tf.nn.tanh,
                    kernel_initializer=DEFAULT_INITIALIZER)
                if verbose:
                    print('C1-outshape:', conv1.get_shape().as_list())

            with tf.variable_scope('S2-avg_pool'):
                conv1 = utils.average_pooling_with_weights(
                    value=conv1,
                    ksize=(1, 2, 2, 1),
                    strides=(1, 2, 2, 1),
                    padding='VALID',
                    activation=tf.nn.tanh)
                if verbose:
                    print('S2-outshape:', conv1.get_shape().as_list())

            with tf.variable_scope('C3-conv'):
                conv2 = tf.layers.conv2d(
                    conv1,
                    filters=16,
                    kernel_size=5,
                    padding='VALID',
                    activation=tf.nn.tanh,
                    kernel_initializer=DEFAULT_INITIALIZER)
                if verbose:
                    print('C3-outshape:', conv2.get_shape().as_list())

            with tf.variable_scope('S4-avg_pool'):
                conv2 = utils.average_pooling_with_weights(
                    value=conv2,
                    ksize=(1, 2, 2, 1),
                    strides=(1, 2, 2, 1),
                    padding='VALID',
                    activation=tf.nn.tanh)
                if verbose:
                    print('S4-outshape:', conv2.get_shape().as_list())

            with tf.variable_scope('C5-conv'):
                conv3 = tf.layers.conv2d(
                    conv2,
                    filters=120,
                    kernel_size=5,
                    padding='VALID',
                    activation=tf.nn.tanh,
                    kernel_initializer=DEFAULT_INITIALIZER)

                if verbose:
                    print('C5-outshape:', conv3.get_shape().as_list())

            with tf.name_scope('F6-fc'):
                flatten = tf.layers.Flatten()(conv3)
                fc1 = tf.layers.dense(inputs=flatten,
                                      units=84,
                                      activation=tf.nn.tanh,
                                      kernel_initializer=DEFAULT_INITIALIZER,
                                      name='fc2')

                if verbose:
                    print('F6-outshape:', fc1.get_shape().as_list())

            with tf.name_scope('logits'):
                '''
        logits = tf.layers.dense(inputs=fc1,
                                 units=10,
                                 kernel_initializer=DEFAULT_INITIALIZER)
        '''
                logits = utils.rbf_euclidean_layer(inputs=fc1, units=26)

    return x, y, is_train, logits