Esempio n. 1
0
from base import base_mnist, base_fashion_mnist, base_cifar10
from keras.datasets import mnist, fashion_mnist, cifar10
from keras.callbacks import ModelCheckpoint

# Parameters
dataset = cifar10
base_model = base_cifar10
emb_d = 512
loss = triplet.contrastive_loss1
optimizer = 'adam'
n_tr = 100  # Number of train samples per class
trip = 3  # Number of triplets per each sample
batch = 16  # Number of samples per class in each epoch
epochs = 300
# Data
mat_tr, mat_te = datatool.load(dataset, n_tr)
gen_tr = tripletgen.tripletgen(mat_tr, trip, batch)
gen_te = tripletgen.tripletgen(mat_te, trip, batch)
# Model
base_model = base_model(mat_tr.shape[2:], emb_d)
trip_model, emb_model = triplet.create(base_model, mat_tr.shape[0])
triplet.compile(trip_model, loss, optimizer)
# Train
trip_model.fit_generator(gen_tr, epochs=epochs, verbose=2)
# Obtain embedded spaces
x_tr = np.reshape(mat_tr, (-1, ) + mat_tr.shape[2:])
e_tr = emb_model.predict(x_tr)
y_tr = np.repeat(np.arange(mat_tr.shape[0]), mat_tr.shape[1])
x_te = np.reshape(mat_te, (-1, ) + mat_te.shape[2:])
e_te = emb_model.predict(x_te)
y_te = np.repeat(np.arange(mat_te.shape[0]), mat_te.shape[1])
Esempio n. 2
0
from keras.datasets import mnist, fashion_mnist, cifar10
import numpy as np
import gc
from keras import backend as K
import sys

# Parameters
base = base_cifar10
emb_d = 256
loss = siamese.contrastive_loss1
optimizer = 'adam'
batch = 16  # Number of samples per class in each epoch
epochs = 100
for n in range(39):
    # Data
    x_tr, y_tr, x_te, y_te = datatool.load(n)
    gen_tr = pairgen.pairgen(x_tr, y_tr, batch)
    # Model
    base_model = base(x_tr.shape[1:], emb_d)
    siam_model, emb_model = siamese.create(base_model, len(np.unique(y_tr)))
    siamese.compile(siam_model, loss, optimizer)
    # Train
    siam_model.fit_generator(gen_tr, epochs=epochs, verbose=0)
    # Obtain embedded spaces
    e_tr = emb_model.predict(x_tr)
    e_te = emb_model.predict(x_te)
    # Evaluate
    print("Imagen {:02}".format(n + 1))
    predtool.hist2(x_tr, e_tr, y_tr, x_te, e_te, y_te, n)
    sys.stdout.flush()
    K.clear_session()