Skip to content
Snippets Groups Projects
Commit 8bdf07cf authored by Luc Giffon's avatar Luc Giffon
Browse files

continue setting up experiment keras end to end

add 1 gamma parameter to grid search
script now supports mutliple kernels instead of only chi2
parent ff19afa1
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,7 @@ all: ...@@ -2,7 +2,7 @@ all:
dense: dense:
deepfried: deepfried:
deepstrom_no_gamma: deepstrom_no_gamma:
# deepstrom_gamma: deepstrom_gamma:
base: base:
epoch_numbers: {"-e": [200]} epoch_numbers: {"-e": [200]}
...@@ -18,7 +18,7 @@ dense: ...@@ -18,7 +18,7 @@ dense:
repr_dim: {"-D": [16, 64, 128, 1024]} repr_dim: {"-D": [16, 64, 128, 1024]}
gamma: gamma:
gamma: {"-g": [0.001, 0.005, 0.01, 0.05]} gamma: {"-g": [0.001, 0.005, 0.01, 0.05, 0.1]}
deepfried: deepfried:
network: ["deepfriedconvnet"] network: ["deepfriedconvnet"]
......
...@@ -62,7 +62,7 @@ from keras.optimizers import Adam ...@@ -62,7 +62,7 @@ from keras.optimizers import Adam
from keras.preprocessing.image import ImageDataGenerator from keras.preprocessing.image import ImageDataGenerator
import skluc.main.data.mldatasets as dataset import skluc.main.data.mldatasets as dataset
from skluc.main.keras_.kernel import keras_chi_square_CPD from skluc.main.keras_.kernel import map_kernel_name_function
# from skluc.main.keras_.kernel_approximation.nystrom_layer import DeepstromLayerEndToEnd # from skluc.main.keras_.kernel_approximation.nystrom_layer import DeepstromLayerEndToEnd
from skluc.main.keras_.kernel_approximation.fastfood_layer import FastFoodLayer from skluc.main.keras_.kernel_approximation.fastfood_layer import FastFoodLayer
from skluc.main.keras_.models import build_lenet_model, build_vgg19_model_glorot from skluc.main.keras_.models import build_lenet_model, build_vgg19_model_glorot
...@@ -262,7 +262,18 @@ def main(paraman: ParameterManagerMain, resman, printman): ...@@ -262,7 +262,18 @@ def main(paraman: ParameterManagerMain, resman, printman):
repr_sub = convnet_model(input_subsample_concat) repr_sub = convnet_model(input_subsample_concat)
kernel_layer = Lambda(lambda *args, **kwargs: keras_chi_square_CPD(*args, epsilon=1e-8, **kwargs), output_shape=lambda shapes: (shapes[0][0], paraman["--nys-size"])) if paraman["kernel"] == "linear":
kernel_function = lambda *args, **kwargs: map_kernel_name_function["linear"](*args, **kwargs, normalize=True, **paraman["kernel_dict"])
elif paraman["kernel"] == "rbf":
kernel_function = lambda *args, **kwargs: map_kernel_name_function["rbf"](*args, **kwargs, tanh_activation=True, normalize=True, **paraman["kernel_dict"])
elif paraman["kernel"] == "chi2_cpd":
kernel_function = lambda *args, **kwargs: map_kernel_name_function["chi2_cpd"](*args, **kwargs, epsilon=1e-8, tanh_activation=True, normalize=True, **paraman["kernel_dict"])
elif paraman["kernel"] == "chi2_exp_cpd":
kernel_function = lambda *args, **kwargs: map_kernel_name_function["chi2_exp_cpd"](*args, **kwargs, epsilon=1e-8, tanh_activation=True, normalize=True, **paraman["kernel_dict"])
else:
raise NotImplementedError(f"unknown kernel function {paraman['kernel']}")
kernel_layer = Lambda(kernel_function, output_shape=lambda shapes: (shapes[0][0], paraman["--nys-size"]))
kernel_vector = kernel_layer([repr_x, repr_sub]) kernel_vector = kernel_layer([repr_x, repr_sub])
input_classifier = Dense(paraman["--nys-size"], use_bias=False, activation='linear')(kernel_vector) # 512 is the output dim of convolutional layers input_classifier = Dense(paraman["--nys-size"], use_bias=False, activation='linear')(kernel_vector) # 512 is the output dim of convolutional layers
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment