Skip to content

Commit 1a6cffe

Browse files
0.11.3
NetLightRegression2 merged into NetLightRegression, NetLightRegression2 removed
1 parent 495f2b3 commit 1a6cffe

4 files changed

Lines changed: 26 additions & 423 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
77

88
[project]
99
name = "spotPython"
10-
version = "0.11.2"
10+
version = "0.11.3"
1111
authors = [
1212
{ name="T. Bartz-Beielstein", email="tbb@bartzundbartz.de" }
1313
]

src/spotPython/hyperdict/light_hyper_dict.json

Lines changed: 0 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -211,103 +211,6 @@
211211
"upper": 2
212212
}
213213
},
214-
"NetLightRegression2": {
215-
"l1": {
216-
"type": "int",
217-
"default": 3,
218-
"transform": "transform_power_2_int",
219-
"lower": 3,
220-
"upper": 8
221-
},
222-
"epochs": {
223-
"type": "int",
224-
"default": 4,
225-
"transform": "transform_power_2_int",
226-
"lower": 4,
227-
"upper": 9
228-
},
229-
"batch_size": {
230-
"type": "int",
231-
"default": 4,
232-
"transform": "transform_power_2_int",
233-
"lower": 1,
234-
"upper": 4
235-
},
236-
"act_fn": {
237-
"levels": [
238-
"Sigmoid",
239-
"Tanh",
240-
"ReLU",
241-
"LeakyReLU",
242-
"ELU",
243-
"Swish"
244-
],
245-
"type": "factor",
246-
"default": "ReLU",
247-
"transform": "None",
248-
"class_name": "spotPython.torch.activation",
249-
"core_model_parameter_type": "instance()",
250-
"lower": 0,
251-
"upper": 5
252-
},
253-
"optimizer": {
254-
"levels": [
255-
"Adadelta",
256-
"Adagrad",
257-
"Adam",
258-
"AdamW",
259-
"SparseAdam",
260-
"Adamax",
261-
"ASGD",
262-
"NAdam",
263-
"RAdam",
264-
"RMSprop",
265-
"Rprop",
266-
"SGD"
267-
],
268-
"type": "factor",
269-
"default": "SGD",
270-
"transform": "None",
271-
"class_name": "torch.optim",
272-
"core_model_parameter_type": "str",
273-
"lower": 0,
274-
"upper": 11
275-
},
276-
"dropout_prob": {
277-
"type": "float",
278-
"default": 0.01,
279-
"transform": "None",
280-
"lower": 0.0,
281-
"upper": 0.25
282-
},
283-
"lr_mult": {
284-
"type": "float",
285-
"default": 1.0,
286-
"transform": "None",
287-
"lower": 0.1,
288-
"upper": 10.0
289-
},
290-
"patience": {
291-
"type": "int",
292-
"default": 2,
293-
"transform": "transform_power_2_int",
294-
"lower": 2,
295-
"upper": 6
296-
},
297-
"initialization": {
298-
"levels": [
299-
"Default",
300-
"Kaiming",
301-
"Xavier"
302-
],
303-
"type": "factor",
304-
"default": "Default",
305-
"transform": "None",
306-
"core_model_parameter_type": "str",
307-
"lower": 0,
308-
"upper": 2
309-
}
310-
},
311214
"NetLightRegression": {
312215
"l1": {
313216
"type": "int",

src/spotPython/light/regression/netlightregression.py

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import lightning as L
22
import torch
3-
import torch.nn.functional as F
43
from torch import nn
54
from spotPython.hyperparameters.optimizer import optimizer_handler
65
import torchmetrics.functional.regression
@@ -157,7 +156,12 @@ def __init__(
157156
if self.hparams.l1 < 4:
158157
raise ValueError("l1 must be at least 4")
159158

159+
# TODO: Implement a hidden_sizes generator function
160160
hidden_sizes = [self.hparams.l1, self.hparams.l1 // 2, self.hparams.l1 // 2, self.hparams.l1 // 4]
161+
# n_low = _L_in // 4
162+
# # ensure that n_high is larger than n_low
163+
# n_high = max(self.hparams.l1, 2 * n_low)
164+
# hidden_sizes = generate_div2_list(n_high, n_low)
161165

162166
# Create the network based on the specified hidden sizes
163167
layers = []
@@ -188,12 +192,13 @@ def forward(self, x: torch.Tensor) -> torch.Tensor:
188192
x = self.layers(x)
189193
return x
190194

191-
def training_step(self, batch: tuple) -> torch.Tensor:
195+
def _calculate_loss(self, batch):
192196
"""
193-
Performs a single training step.
197+
Calculate the loss for the given batch.
194198
195199
Args:
196200
batch (tuple): A tuple containing a batch of input data and labels.
201+
mode (str, optional): The mode of the model. Defaults to "train".
197202
198203
Returns:
199204
torch.Tensor: A tensor containing the loss for this batch.
@@ -202,10 +207,21 @@ def training_step(self, batch: tuple) -> torch.Tensor:
202207
x, y = batch
203208
y = y.view(len(y), 1)
204209
y_hat = self(x)
205-
# val_loss = F.mse_loss(y_hat, y)
206-
metric = getattr(torchmetrics.functional.regression, self._torchmetric)
207-
val_loss = metric(y_hat, y)
208-
# mae_loss = F.l1_loss(y_hat, y)
210+
loss = self.metric(y_hat, y)
211+
return loss
212+
213+
def training_step(self, batch: tuple) -> torch.Tensor:
214+
"""
215+
Performs a single training step.
216+
217+
Args:
218+
batch (tuple): A tuple containing a batch of input data and labels.
219+
220+
Returns:
221+
torch.Tensor: A tensor containing the loss for this batch.
222+
223+
"""
224+
val_loss = self._calculate_loss(batch)
209225
# self.log("train_loss", val_loss, on_step=True, on_epoch=True, prog_bar=True)
210226
# self.log("train_mae_loss", mae_loss, on_step=True, on_epoch=True, prog_bar=True)
211227
return val_loss
@@ -223,11 +239,7 @@ def validation_step(self, batch: tuple, batch_idx: int, prog_bar: bool = False)
223239
torch.Tensor: A tensor containing the loss for this batch.
224240
225241
"""
226-
x, y = batch
227-
y = y.view(len(y), 1)
228-
y_hat = self(x)
229-
val_loss = F.mse_loss(y_hat, y)
230-
# mae_loss = F.l1_loss(y_hat, y)
242+
val_loss = self._calculate_loss(batch)
231243
# self.log("val_loss", val_loss, on_step=False, on_epoch=True, prog_bar=prog_bar)
232244
self.log("val_loss", val_loss, prog_bar=prog_bar)
233245
self.log("hp_metric", val_loss, prog_bar=prog_bar)
@@ -245,11 +257,7 @@ def test_step(self, batch: tuple, batch_idx: int, prog_bar: bool = False) -> tor
245257
Returns:
246258
torch.Tensor: A tensor containing the loss for this batch.
247259
"""
248-
x, y = batch
249-
y_hat = self(x)
250-
y = y.view(len(y), 1)
251-
val_loss = F.mse_loss(y_hat, y)
252-
# mae_loss = F.l1_loss(y_hat, y)
260+
val_loss = self._calculate_loss(batch)
253261
self.log("val_loss", val_loss, prog_bar=prog_bar)
254262
self.log("hp_metric", val_loss, prog_bar=prog_bar)
255263
return val_loss

0 commit comments

Comments
 (0)