Example #1
0
 def testAdagradCompatibility(self):
     opt_v1 = optimizers.Adagrad(lr=0.01)
     opt_v2 = adagrad.Adagrad(learning_rate=0.01)
     self._testOptimizersCompatibility(opt_v1, opt_v2)
Example #2
0
o_size = 10

batch = 100
epochs = 20

inputs = Input((i_size, i_size, 1), name="input_data")
reshape = layers.Reshape((i_size * i_size,))(inputs)
outputs = layers.Dense(l1_size, activation=tf.nn.relu, name="layer1")(reshape)
outputs = layers.Dense(l2_size, activation=tf.nn.relu, name="layer2")(outputs)
outputs = layers.Dense(l3_size, activation=tf.nn.relu, name="layer3")(outputs)
outputs = layers.Dense(l4_size, activation=tf.nn.relu, name="layer4")(outputs)
outputs = layers.Dense(o_size, activation=tf.nn.softmax, name="layer5")(outputs)

model = Model(inputs=inputs, outputs=outputs)

model.compile(optimizer=optimizers.Adagrad(0.003),
              loss='categorical_crossentropy',
              metrics=['accuracy'])

cb_tensorboard = tf.keras.callbacks.TensorBoard(log_dir='./summary/nn5', histogram_freq=1, write_grads=True, \
                                write_graph=True, write_images=True)

model.fit(x=mnist.train.images, y=mnist.train.labels, \
          batch_size=batch, epochs=epochs, validation_data=(mnist.test.images, mnist.test.labels), \
          callbacks=[cb_tensorboard])  # starts training

#test
print("test:")
result = model.evaluate(x=mnist.test.images,
                        y=mnist.test.labels)
Example #3
0
new_model.add(layers.Dense(2, activation='softmax'))

new_model.summary()

train_datagen = image.ImageDataGenerator()
val_datagen = image.ImageDataGenerator()

train_generator = train_datagen.flow_from_directory(TRAIN_DIR,
                                                    target_size=(224, 224),
                                                    batch_size=T_BATCH_SIZE)

valid_generator = val_datagen.flow_from_directory(VALID_DIR,
                                                  target_size=(224, 224),
                                                  batch_size=V_BATCH_SIZE)

opt = optimizers.Adagrad()

new_model.compile(loss='sparse_categorical_crossentropy',
                  optimizer=opt,
                  metrics=['accuracy'])

new_model.fit_generator(
    train_generator,
    steps_per_epoch=train_generator.samples / train_generator.batch_size,
    epochs=30,
    validation_data=valid_generator,
    validation_steps=valid_generator.samples / valid_generator.batch_size,
    verbose=1,
)

new_model.save('trained_models/resnet50{}v1.h5'.format(opt))
Example #4
0
def optimizer(name='adam', l_rate=0.01, decay=0.0, **kwargs):
    '''
    Define the optimizer by default parameters except learning rate.
    Note that most of optimizers do not suggest users to modify their
    speically designed parameters.
    We suggest users to specify gamma according to the practice when
    using Adabound optimizers.
    Options:
        name: the name of optimizer (default='adam') (available: 'adam', 
              'amsgrad', 'adamax', 'adabound', 'amsbound', 'nadam', 
              'namsgrad', 'nadabound', 'namsbound', 'adadelta', 'rms', 
              'adagrad', 'adamw', 'nmoment', 'sgd', 'proximal')
        l_rate: learning rate (default=0.01)
        decay: decay ratio ('adadeltaDA' do not support this option)
        other parameters: see the usage of the specific optimizer.
    Return:
        the particular optimizer object.
    '''
    name = name.casefold()
    if name == 'adam':
        return optimizers.Adam(l_rate, decay=decay, **kwargs)
    elif name == 'amsgrad':
        return optimizers.Adam(l_rate, decay=decay, amsgrad=True, **kwargs)
    elif name == 'adamax':
        return optimizers.Adamax(l_rate, decay=decay, **kwargs)
    elif name == 'adabound':
        return Adabound(l_rate, decay=decay, **kwargs)
    elif name == 'amsbound':
        return Adabound(l_rate, decay=decay, amsgrad=True, **kwargs)
    elif name == 'nadam':
        return MNadam(l_rate, decay=decay, **kwargs)
    elif name == 'namsgrad':
        return MNadam(l_rate, decay=decay, amsgrad=True, **kwargs)
    elif name == 'nadabound':
        return Nadabound(l_rate, decay=decay, **kwargs)
    elif name == 'namsbound':
        return Nadabound(l_rate, decay=decay, amsgrad=True, **kwargs)
    elif name == 'adadelta':
        return optimizers.Adadelta(l_rate, decay=decay, **kwargs)
    elif name == 'rms':
        return optimizers.RMSprop(l_rate, decay=decay, **kwargs)
    elif name == 'adagrad':
        return optimizers.Adagrad(l_rate, decay=decay, **kwargs)
    elif name == 'adamw':
        if compat.COMPATIBLE_MODE['1.14']:
            raise ImportError(
                'This optimizer is not allowed for compatibility, because it require contrib lib.'
            )
        _raise_TF_warn()
        if decay != 0.0:
            logging.warning(
                'This optimizer uses \'decay\' as \'weight_decay\'.')
        else:
            raise ValueError('Should use \'decay\' > 0 for AdamW.')
        return weight_decay_optimizers.AdamWOptimizer(weight_decay=decay,
                                                      learning_rate=l_rate,
                                                      **kwargs)
    elif name == 'nmoment':
        return optimizers.SGD(lr=l_rate,
                              momentum=0.9,
                              decay=decay,
                              nesterov=True,
                              **kwargs)
    elif name == 'moment':
        return optimizers.SGD(lr=l_rate,
                              momentum=0.9,
                              decay=decay,
                              nesterov=False,
                              **kwargs)
    elif name == 'sgd':
        return optimizers.SGD(lr=l_rate, decay=decay, **kwargs)
    elif name == 'proximal':
        _raise_TF_warn()
        if decay != 0.0:
            logging.warning('This optimizer does not support \'decay\'.')
        return proximal_gradient_descent.ProximalGradientDescentOptimizer(
            l_rate, **kwargs)
def get_cnn_model():
    # cnn_model.add(layers.Conv2D(
    #     filters=64,
    #     strides=[2, 2],
    #     kernel_size=[2, 2],
    #     padding="same",
    #     activation=activations.relu,
    #     input_shape=input_shape
    # ))
    # cnn_model.add(layers.MaxPooling2D(pool_size=[2, 2], strides=2, padding="same"))
    #
    # cnn_model.add(layers.Conv2D(
    #     filters=32,
    #     strides=[2, 2],
    #     kernel_size=[2, 2],
    #     padding="same",
    #     activation=activations.relu
    # ))
    # cnn_model.add(layers.MaxPooling2D(pool_size=[2, 2], strides=2, padding="same"))
    # cnn_model.add(layers.Dropout(0.25))
    # cnn_model.add(layers.Flatten())
    # cnn_model.add(layers.Dropout(0.25))
    # cnn_model.add(layers.Dense(
    #     units=128,
    #     activation=activations.relu,
    # ))
    # cnn_model.add(layers.Dropout(0.25))
    # cnn_model.add(layers.Dense(num_classes, tf.nn.softmax))
    #
    # cnn_model.compile(
    #     optimizer=optimizers.Adagrad(),
    #     loss=losses.categorical_crossentropy,
    #     metrics=[metrics.top_k_categorical_accuracy]
    # )
    input = layers.Input(shape=input_shape, dtype=tf.float32, name="x")

    c1 = layers.Conv2D(filters=32,
                       kernel_size=[2, 2],
                       strides=2,
                       padding="same",
                       activation=activations.relu)(input)
    mp1 = layers.MaxPooling2D(strides=2, padding="same", pool_size=[2, 2])(c1)

    c2 = layers.Conv2D(filters=64,
                       kernel_size=[2, 2],
                       strides=2,
                       padding="same",
                       activation=activations.relu)(mp1)
    mp2 = layers.MaxPooling2D(strides=2, padding="same", pool_size=[2, 2])(c2)

    flat = layers.Flatten()(mp2)
    dense1 = layers.Dense(units=1024, activation=activations.relu)(flat)
    output = layers.Dense(units=num_classes,
                          activation=activations.softmax)(dense1)

    cnn_model = models.Model(inputs=input, outputs=output)
    cnn_model.compile(optimizer=optimizers.Adagrad(),
                      loss=losses.categorical_crossentropy,
                      metrics=[
                          metrics.categorical_accuracy,
                          metrics.binary_accuracy, metrics.mean_squared_error
                      ])

    return cnn_model