Beispiel #1
0
model.compile(optimizer, loss=earth_mover_loss)

# load weights from trained model if it exists
if os.path.exists('weights/nasnet_large_weights.h5'):
    model.load_weights('weights/nasnet_large_weights.h5')

# load pre-trained NIMA(NASNet Mobile) classifier weights
if os.path.exists('weights/nasnet_large_pretrained_weights.h5'):
    model.load_weights('weights/nasnet_large_pretrained_weights.h5',
                       by_name=True)

checkpoint = ModelCheckpoint('weights/nasnet_large_weights.h5',
                             monitor='val_loss',
                             verbose=1,
                             save_weights_only=True,
                             save_best_only=True,
                             mode='min')
tensorboard = TensorBoardBatch(log_dir='./nasnet_logs/')
callbacks = [checkpoint, tensorboard]

batchsize = 200
epochs = 20

model.fit_generator(train_generator(batchsize=batchsize),
                    steps_per_epoch=(250000. // batchsize),
                    epochs=epochs,
                    verbose=1,
                    callbacks=callbacks,
                    validation_data=val_generator(batchsize=batchsize),
                    validation_steps=(5000. // batchsize))
def _float32_feature_list(floats):
    return tf.train.Feature(float_list=tf.train.FloatList(value=floats))


model = NASNetLarge((image_size, image_size, 3),
                    include_top=False,
                    pooling='avg')
model.summary()

# ''' TRAIN SET '''
nb_samples = 250000 * 2
batchsize = 200

with sess.as_default():
    generator = train_generator(batchsize, shuffle=False)
    writer = tf.python_io.TFRecordWriter('weights/nasnet_large_train.tfrecord')

count = 0
for _ in range(nb_samples // batchsize):
    x_batch, y_batch = next(generator)

    with sess.as_default():
        x_batch = model.predict(x_batch, batchsize, verbose=1)

    for i, (x, y) in enumerate(zip(x_batch, y_batch)):
        examples = {
            'features': _float32_feature_list(x.flatten()),
            'scores': _float32_feature_list(y.flatten()),
        }
        features = tf.train.Features(feature=examples)