Skip to content

Commit b1ef075

Browse files
Adapted layer_activations to be string or list
1 parent f481cd5 commit b1ef075

13 files changed

+34
-29
lines changed

examples/advanced/ex01_checkpoint_training.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def initial_setup():
2222
parameters.data.data_splitting_type = "by_snapshot"
2323
parameters.data.input_rescaling_type = "feature-wise-standard"
2424
parameters.data.output_rescaling_type = "minmax"
25-
parameters.network.layer_activations = ["ReLU"]
25+
parameters.network.layer_activations = "ReLU"
2626
parameters.running.max_number_epochs = 9
2727
parameters.running.mini_batch_size = 8
2828
parameters.running.learning_rate = 0.00001

examples/advanced/ex02_shuffle_data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
parameters.verbosity = 1
2424
parameters.data.input_rescaling_type = "feature-wise-standard"
2525
parameters.data.output_rescaling_type = "minmax"
26-
parameters.network.layer_activations = ["ReLU"]
26+
parameters.network.layer_activations = "ReLU"
2727

2828
# No real training, just showing how shuffling directly before training works.
2929
parameters.running.max_number_epochs = 5

examples/advanced/ex03_tensor_board.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
parameters.targets.ldos_gridsize = 11
1818
parameters.targets.ldos_gridspacing_ev = 2.5
1919
parameters.targets.ldos_gridoffset_ev = -5
20-
parameters.network.layer_activations = ["ReLU"]
20+
parameters.network.layer_activations = "ReLU"
2121
parameters.running.max_number_epochs = 100
2222
parameters.running.mini_batch_size = 40
2323
parameters.running.learning_rate = 0.001

examples/basic/ex01_train_network.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
parameters.data.input_rescaling_type = "feature-wise-standard"
2323
parameters.data.output_rescaling_type = "minmax"
2424
# Specify the used activation function.
25-
parameters.network.layer_activations = ["ReLU"]
25+
parameters.network.layer_activations = "ReLU"
2626
# Specify the training parameters.
2727
# These may be determined via hyperparameter tuning.
2828
parameters.running.max_number_epochs = 100

mala/common/parameters.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -344,16 +344,17 @@ class ParametersNetwork(ParametersBase):
344344
network. Please note that the input layer is included therein.
345345
Default: [10,10,0]
346346
347-
layer_activations : list
347+
layer_activations : list or str
348348
A list of strings detailing the activation functions to be used
349-
by the neural network. If the dimension of layer_activations is
350-
smaller than the dimension of layer_sizes-1, than the first entry
351-
is used for all layers.
349+
by the neural network. If a single string is supplied, then this
350+
activation function is used for all layers (including the output layer,
351+
i.e., an output activation is used!). Otherwise, the activation
352+
functions are added layer by layer.
352353
Currently supported activation functions are:
353354
354-
- Sigmoid (default)
355+
- Sigmoid
355356
- ReLU
356-
- LeakyReLU
357+
- LeakyReLU (default)
357358
358359
loss_function_type : string
359360
Loss function for the neural network
@@ -388,7 +389,7 @@ def __init__(self):
388389
super(ParametersNetwork, self).__init__()
389390
self.nn_type = "feed-forward"
390391
self.layer_sizes = [10, 10, 10]
391-
self.layer_activations = ["Sigmoid"]
392+
self.layer_activations = "LeakyReLU"
392393
self.loss_function_type = "mse"
393394

394395
# for LSTM/Gru

mala/network/network.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,8 @@ def __init__(self, params):
231231
# We should NOT modify the list itself. This would break the
232232
# hyperparameter algorithms.
233233
use_only_one_activation_type = False
234-
if len(self.params.layer_activations) == 1:
234+
if type(self.params.layer_activations) == str:
235235
use_only_one_activation_type = True
236-
elif len(self.params.layer_activations) < self.number_of_layers:
237-
raise Exception("Not enough activation layers provided.")
238236
elif len(self.params.layer_activations) > self.number_of_layers:
239237
printout(
240238
"Too many activation layers provided. The last",
@@ -246,7 +244,7 @@ def __init__(self, params):
246244
)
247245

248246
# Add the layers.
249-
# As this is a feedforward layer we always add linear layers, and then
247+
# As this is a feedforward NN we always add linear layers, and then
250248
# an activation function
251249
for i in range(0, self.number_of_layers):
252250
self.layers.append(
@@ -261,7 +259,7 @@ def __init__(self, params):
261259
if use_only_one_activation_type:
262260
self.layers.append(
263261
self._activation_mappings[
264-
self.params.layer_activations[0]
262+
self.params.layer_activations
265263
]()
266264
)
267265
else:
@@ -272,6 +270,9 @@ def __init__(self, params):
272270
)
273271
except KeyError:
274272
raise Exception("Invalid activation type seleceted.")
273+
except IndexError:
274+
# Layer without activation
275+
pass
275276

276277
# Once everything is done, we can move the Network on the target
277278
# device.

test/all_lazy_loading_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def test_scaling(self):
3434
test_parameters.data.data_splitting_type = "by_snapshot"
3535
test_parameters.descriptors.bispectrum_twojmax = 11
3636
test_parameters.targets.ldos_gridsize = 10
37-
test_parameters.network.layer_activations = ["LeakyReLU"]
37+
test_parameters.network.layer_activations = "LeakyReLU"
3838
test_parameters.running.max_number_epochs = 3
3939
test_parameters.running.mini_batch_size = 512
4040
test_parameters.running.learning_rate = 0.00001
@@ -256,7 +256,7 @@ def _train_lazy_loading(prefetching):
256256
test_parameters.data.data_splitting_type = "by_snapshot"
257257
test_parameters.data.input_rescaling_type = "feature-wise-standard"
258258
test_parameters.data.output_rescaling_type = "minmax"
259-
test_parameters.network.layer_activations = ["ReLU"]
259+
test_parameters.network.layer_activations = "ReLU"
260260
test_parameters.manual_seed = 1234
261261
test_parameters.running.max_number_epochs = 100
262262
test_parameters.running.mini_batch_size = 40

test/basic_gpu_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def __run(use_gpu):
8585
test_parameters.data.output_rescaling_type = "minmax"
8686

8787
# Specify the used activation function.
88-
test_parameters.network.layer_activations = ["ReLU"]
88+
test_parameters.network.layer_activations = "ReLU"
8989

9090
# Specify the training parameters.
9191
test_parameters.running.max_number_epochs = 100

test/checkpoint_training_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def __original_setup(
140140
test_parameters.data.output_rescaling_type = "minmax"
141141

142142
# Specify the used activation function.
143-
test_parameters.network.layer_activations = ["ReLU"]
143+
test_parameters.network.layer_activations = "ReLU"
144144

145145
# Specify the training parameters.
146146
test_parameters.running.max_number_epochs = maxepochs

test/complete_interfaces_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ def test_ase_calculator(self):
185185
test_parameters.data.data_splitting_type = "by_snapshot"
186186
test_parameters.data.input_rescaling_type = "feature-wise-standard"
187187
test_parameters.data.output_rescaling_type = "minmax"
188-
test_parameters.network.layer_activations = ["ReLU"]
188+
test_parameters.network.layer_activations = "ReLU"
189189
test_parameters.running.max_number_epochs = 100
190190
test_parameters.running.mini_batch_size = 40
191191
test_parameters.running.learning_rate = 0.00001

0 commit comments

Comments
 (0)