From c4c88456a72f162777a5f9deba4e6a5457cc4cab Mon Sep 17 00:00:00 2001 From: Nikolai <osterei33@gmx.de> Date: Tue, 21 Aug 2018 08:31:46 +0200 Subject: [PATCH] single neuron output works with multiple inputs --- scripts/plot_NN_2D.py | 6 +++++- utils.py | 13 ++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/scripts/plot_NN_2D.py b/scripts/plot_NN_2D.py index 65b7faf..112c1bf 100755 --- a/scripts/plot_NN_2D.py +++ b/scripts/plot_NN_2D.py @@ -126,11 +126,15 @@ if args.mode.startswith("mean"): logscale=args.log, only_pixels=(not args.contour) ) else: + if hasattr(c, "get_input_list"): + transform_function = lambda inp : c.get_input_list(c.scaler.transform(inp)) + else: + transform_function = c.scaler.transform(inp) plot_NN_vs_var_2D_all( args.output_filename, means=means, model=c.model, - transform_function=c.scaler.transform, + transform_function=transform_function, varx_index=varx_index, vary_index=vary_index, xmin=varx_range[0], xmax=varx_range[1], nbinsx=varx_range[2], diff --git a/utils.py b/utils.py index 316eba9..daac2da 100644 --- a/utils.py +++ b/utils.py @@ -15,14 +15,21 @@ logger.addHandler(logging.NullHandler()) def get_single_neuron_function(model, layer, neuron, scaler=None, input_transform=None): - f = K.function([model.input]+[K.learning_phase()], [model.layers[layer].output[:,neuron]]) + inp = model.input + if not isinstance(inp, list): + inp = [inp] + + f = K.function(inp+[K.learning_phase()], [model.layers[layer].output[:,neuron]]) def eval_single_neuron(x): + x_eval = x if scaler is not None: x_eval = scaler.transform(x) + if input_transform is not None: + x_eval = input_transform(x_eval) else: - x_eval = x - return f([x_eval])[0] + x_eval = [x_eval] + return f(x_eval)[0] return eval_single_neuron -- GitLab