def classifier(model_input, nclass, l2_weight=0.0): net = dnn.Dense(100, activation='relu', name='cl')(model_input) net = dnn.Dense(nclass, activation='softmax', name='cl_output')(net) return net #%% def make_trainable(net, val): net.trainable = val for l in net.layers: l.trainable = val #%% Feature extraction model main_input = dnn.Input(shape=(n_dim[1], )) fe = feat_ext(main_input) fe_size = fe.get_shape().as_list()[1] fe_model = dnn.Model(main_input, fe, name='fe_model') # Classifier model cl_input = dnn.Input(shape=(fe.get_shape().as_list()[1], )) net = classifier(cl_input, n_class) cl_model = dnn.Model(cl_input, net, name='classifier') #%% source model ms = dnn.Input(shape=(n_dim[1], )) fes = feat_ext(ms) nets = classifier(fes, n_class) source_model = dnn.Model(ms, nets) source_model.compile(optimizer=optim, loss='categorical_crossentropy', metrics=['accuracy'])
def feat_ext(main_input, l2_weight=0.0): net = dnn.Dense(500, activation='relu', name='fe')(main_input) net = dnn.Dense(100, activation='relu', name='feat_ext')(net) return net def classifier(model_input, nclass, l2_weight=0.0): net = dnn.Dense(100, activation='relu', name='cl')(model_input) net = dnn.Dense(nclass, activation='softmax', name='cl_output')(net) return net #%% Feature extraction as a keras model main_input = dnn.Input(shape=(n_dim[1], )) fe = feat_ext(main_input) fe_size = fe.get_shape().as_list()[1] # feature extraction model fe_model = dnn.Model(main_input, fe, name='fe_model') # Classifier model as a keras model cl_input = dnn.Input( shape=(fe.get_shape().as_list()[1], )) # input dim for the classifier net = classifier(cl_input, n_class) # classifier keras model cl_model = dnn.Model(cl_input, net, name='classifier') #%% source model ms = dnn.Input(shape=(n_dim[1], )) fes = feat_ext(ms) nets = classifier(fes, n_class) source_model = dnn.Model(ms, nets)
datagen = ImageDataGenerator(width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True) #%% def build_filename(noise, alpha, lamda, reg): return ('org_jdot_model' + '_' + 'n_' + str(noise) + '_' + 'al_' + str(alpha) + '_' + 'lam_' + str(lamda) + '_' + 'reg_' + str(reg) + '.hd5') #%% clean model from architectures import classifier_dropout, assda_feat_ext, classifier if len(n_dim) == 4: ms = dnn.Input(shape=(n_dim[1], n_dim[2], n_dim[3])) else: ms = dnn.Input(shape=(n_dim[1], )) from models import get_model if reconstruction == False: clean_model = get_model(data_set, ms, nclass=n_class, classifier=True, drop_out=0.5) clean_model.compile(optimizer=optim, loss='categorical_crossentropy', metrics=['accuracy']) else: clean_model = get_model(data_set, ms, nclass=n_class, classifier=True) clean_model.compile(