Centralized Learning – Neural Networks¶
Examples of centralized machine learning with neural networks on various datasets.
Banknote Dataset¶
banknote_nn_example.py¶
1from kosmos.ml.cl_manager import CLManager
2from kosmos.ml.config.factories.loss import CrossEntropyLossConfig
3from kosmos.ml.config.factories.lr_scheduler import CosineLearningRateSchedulerConfig
4from kosmos.ml.config.factories.model import NeuralNetworkConfig
5from kosmos.ml.config.factories.optimizer import AdamOptimizerConfig
6from kosmos.ml.config.sl_train import SLTrainConfig
7from kosmos.ml.datasets.banknote_dataset import BanknoteDataset
8from kosmos.utils.rng import RNG
9
10
11def banknote_nn_example() -> None:
12 """Run example of training and testing on the Banknote dataset using a neural network."""
13 RNG.initialize(seed=1)
14
15 banknote_dataset = BanknoteDataset()
16
17 config = SLTrainConfig(
18 dataset=banknote_dataset,
19 train_split=0.7,
20 batch_size=32,
21 num_epochs=50,
22 model_config=NeuralNetworkConfig([16, 16]),
23 optimizer_config=AdamOptimizerConfig(lr=1e-3),
24 lr_scheduler_config=CosineLearningRateSchedulerConfig(max_epochs=50),
25 max_grad_norm=1.0,
26 loss_config=CrossEntropyLossConfig(),
27 )
28
29 manager = CLManager(config)
30
31 for epoch_result in manager.train():
32 print(epoch_result) # noqa: T201
33 print(manager.test()) # noqa: T201
34
35
36if __name__ == "__main__":
37 banknote_nn_example()
Digits Dataset¶
digits_nn_example.py¶
1from kosmos.ml.cl_manager import CLManager
2from kosmos.ml.config.factories.loss import CrossEntropyLossConfig
3from kosmos.ml.config.factories.lr_scheduler import CosineLearningRateSchedulerConfig
4from kosmos.ml.config.factories.model import NeuralNetworkConfig
5from kosmos.ml.config.factories.optimizer import AdamOptimizerConfig
6from kosmos.ml.config.sl_train import SLTrainConfig
7from kosmos.ml.datasets.digits_dataset import DigitsDataset
8from kosmos.utils.rng import RNG
9
10
11def digits_nn_example() -> None:
12 """Run example of training and testing on the Digits dataset using a neural network."""
13 RNG.initialize(seed=1)
14
15 digits_dataset = DigitsDataset()
16
17 config = SLTrainConfig(
18 dataset=digits_dataset,
19 train_split=0.8,
20 batch_size=64,
21 num_epochs=50,
22 model_config=NeuralNetworkConfig([128, 64]),
23 optimizer_config=AdamOptimizerConfig(lr=1e-3),
24 lr_scheduler_config=CosineLearningRateSchedulerConfig(max_epochs=50),
25 max_grad_norm=1.0,
26 loss_config=CrossEntropyLossConfig(),
27 )
28
29 manager = CLManager(config)
30
31 for epoch_result in manager.train():
32 print(epoch_result) # noqa: T201
33 print(manager.test()) # noqa: T201
34
35
36if __name__ == "__main__":
37 digits_nn_example()
Income Dataset¶
income_nn_example.py¶
1from kosmos.ml.cl_manager import CLManager
2from kosmos.ml.config.factories.loss import CrossEntropyLossConfig
3from kosmos.ml.config.factories.lr_scheduler import CosineLearningRateSchedulerConfig
4from kosmos.ml.config.factories.model import NeuralNetworkConfig
5from kosmos.ml.config.factories.optimizer import AdamOptimizerConfig
6from kosmos.ml.config.sl_train import SLTrainConfig
7from kosmos.ml.datasets.income_dataset import IncomeDataset
8from kosmos.utils.rng import RNG
9
10
11def income_nn_example() -> None:
12 """Run example of training and testing on the Income dataset using a neural network."""
13 RNG.initialize(seed=1)
14
15 income_dataset = IncomeDataset()
16
17 config = SLTrainConfig(
18 dataset=income_dataset,
19 train_split=0.7,
20 batch_size=128,
21 num_epochs=50,
22 model_config=NeuralNetworkConfig([128, 64, 32]),
23 optimizer_config=AdamOptimizerConfig(lr=1e-3),
24 lr_scheduler_config=CosineLearningRateSchedulerConfig(max_epochs=50),
25 max_grad_norm=1.0,
26 loss_config=CrossEntropyLossConfig(),
27 )
28
29 manager = CLManager(config)
30
31 for epoch_result in manager.train():
32 print(epoch_result) # noqa: T201
33 print(manager.test()) # noqa: T201
34
35
36if __name__ == "__main__":
37 income_nn_example()
Iris Dataset¶
iris_nn_example.py¶
1from kosmos.ml.cl_manager import CLManager
2from kosmos.ml.config.factories.loss import CrossEntropyLossConfig
3from kosmos.ml.config.factories.lr_scheduler import CosineLearningRateSchedulerConfig
4from kosmos.ml.config.factories.model import NeuralNetworkConfig
5from kosmos.ml.config.factories.optimizer import AdamOptimizerConfig
6from kosmos.ml.config.sl_train import SLTrainConfig
7from kosmos.ml.datasets.iris_dataset import IrisDataset
8from kosmos.utils.rng import RNG
9
10
11def iris_nn_example() -> None:
12 """Run example of training and testing on the Iris dataset using a neural network."""
13 RNG.initialize(seed=1)
14
15 iris_dataset = IrisDataset()
16
17 config = SLTrainConfig(
18 dataset=iris_dataset,
19 train_split=0.7,
20 batch_size=32,
21 num_epochs=50,
22 model_config=NeuralNetworkConfig([16, 16]),
23 optimizer_config=AdamOptimizerConfig(lr=0.01),
24 lr_scheduler_config=CosineLearningRateSchedulerConfig(max_epochs=50),
25 max_grad_norm=1.0,
26 loss_config=CrossEntropyLossConfig(),
27 )
28
29 manager = CLManager(config)
30
31 for epoch_result in manager.train():
32 print(epoch_result) # noqa: T201
33 print(manager.test()) # noqa: T201
34
35
36if __name__ == "__main__":
37 iris_nn_example()
MNIST Dataset¶
mnist_nn_example.py¶
1from kosmos.ml.cl_manager import CLManager
2from kosmos.ml.config.factories.loss import CrossEntropyLossConfig
3from kosmos.ml.config.factories.lr_scheduler import CosineLearningRateSchedulerConfig
4from kosmos.ml.config.factories.model import NeuralNetworkConfig
5from kosmos.ml.config.factories.optimizer import AdamOptimizerConfig
6from kosmos.ml.config.sl_train import SLTrainConfig
7from kosmos.ml.datasets.mnist_dataset import MNISTDataset
8from kosmos.utils.rng import RNG
9
10
11def mnist_nn_example() -> None:
12 """Run example of training and testing on the MNIST dataset using a neural network."""
13 RNG.initialize(seed=1)
14
15 mnist_dataset = MNISTDataset()
16
17 config = SLTrainConfig(
18 dataset=mnist_dataset,
19 train_split=0.9,
20 batch_size=128,
21 num_epochs=20,
22 model_config=NeuralNetworkConfig([256, 128, 64]),
23 optimizer_config=AdamOptimizerConfig(lr=1e-3),
24 lr_scheduler_config=CosineLearningRateSchedulerConfig(max_epochs=50),
25 max_grad_norm=1.0,
26 loss_config=CrossEntropyLossConfig(),
27 )
28
29 manager = CLManager(config)
30
31 for epoch_result in manager.train():
32 print(epoch_result) # noqa: T201
33 print(manager.test()) # noqa: T201
34
35
36if __name__ == "__main__":
37 mnist_nn_example()
QSAR Dataset¶
qsar_nn_example.py¶
1from kosmos.ml.cl_manager import CLManager
2from kosmos.ml.config.factories.loss import CrossEntropyLossConfig
3from kosmos.ml.config.factories.lr_scheduler import CosineLearningRateSchedulerConfig
4from kosmos.ml.config.factories.model import NeuralNetworkConfig
5from kosmos.ml.config.factories.optimizer import AdamOptimizerConfig
6from kosmos.ml.config.sl_train import SLTrainConfig
7from kosmos.ml.datasets.qsar_dataset import QSARDataset
8from kosmos.utils.rng import RNG
9
10
11def qsar_nn_example() -> None:
12 """Run example of training and testing on the QSAR dataset using a neural network."""
13 RNG.initialize(seed=1)
14
15 qsar_dataset = QSARDataset()
16
17 config = SLTrainConfig(
18 dataset=qsar_dataset,
19 train_split=0.8,
20 batch_size=32,
21 num_epochs=25,
22 model_config=NeuralNetworkConfig([64, 32]),
23 optimizer_config=AdamOptimizerConfig(lr=1e-3),
24 lr_scheduler_config=CosineLearningRateSchedulerConfig(max_epochs=50),
25 max_grad_norm=1.0,
26 loss_config=CrossEntropyLossConfig(),
27 )
28
29 manager = CLManager(config)
30
31 for epoch_result in manager.train():
32 print(epoch_result) # noqa: T201
33 print(manager.test()) # noqa: T201
34
35
36if __name__ == "__main__":
37 qsar_nn_example()
WDBC Dataset¶
wdbc_nn_example.py¶
1from kosmos.ml.cl_manager import CLManager
2from kosmos.ml.config.factories.loss import CrossEntropyLossConfig
3from kosmos.ml.config.factories.lr_scheduler import CosineLearningRateSchedulerConfig
4from kosmos.ml.config.factories.model import NeuralNetworkConfig
5from kosmos.ml.config.factories.optimizer import AdamOptimizerConfig
6from kosmos.ml.config.sl_train import SLTrainConfig
7from kosmos.ml.datasets.wdbc_dataset import WDBCDataset
8from kosmos.utils.rng import RNG
9
10
11def wdbc_nn_example() -> None:
12 """Run example of training and testing on the WDBC dataset using a neural network."""
13 RNG.initialize(seed=1)
14
15 wdbc_dataset = WDBCDataset()
16
17 config = SLTrainConfig(
18 dataset=wdbc_dataset,
19 train_split=0.8,
20 batch_size=32,
21 num_epochs=50,
22 model_config=NeuralNetworkConfig([64, 32]),
23 optimizer_config=AdamOptimizerConfig(lr=1e-3),
24 lr_scheduler_config=CosineLearningRateSchedulerConfig(max_epochs=50),
25 max_grad_norm=1.0,
26 loss_config=CrossEntropyLossConfig(),
27 )
28
29 manager = CLManager(config)
30
31 for epoch_result in manager.train():
32 print(epoch_result) # noqa: T201
33 print(manager.test()) # noqa: T201
34
35
36if __name__ == "__main__":
37 wdbc_nn_example()
Wine Dataset¶
wine_nn_example.py¶
1from kosmos.ml.cl_manager import CLManager
2from kosmos.ml.config.factories.loss import CrossEntropyLossConfig
3from kosmos.ml.config.factories.lr_scheduler import CosineLearningRateSchedulerConfig
4from kosmos.ml.config.factories.model import NeuralNetworkConfig
5from kosmos.ml.config.factories.optimizer import AdamOptimizerConfig
6from kosmos.ml.config.sl_train import SLTrainConfig
7from kosmos.ml.datasets.wine_dataset import WineDataset
8from kosmos.utils.rng import RNG
9
10
11def wine_nn_example() -> None:
12 """Run example of training and testing on the Wine dataset using a neural network."""
13 RNG.initialize(seed=1)
14
15 wine_dataset = WineDataset()
16
17 config = SLTrainConfig(
18 dataset=wine_dataset,
19 train_split=0.7,
20 batch_size=32,
21 num_epochs=50,
22 model_config=NeuralNetworkConfig([64, 64]),
23 optimizer_config=AdamOptimizerConfig(lr=1e-3),
24 lr_scheduler_config=CosineLearningRateSchedulerConfig(max_epochs=50),
25 max_grad_norm=1.0,
26 loss_config=CrossEntropyLossConfig(),
27 )
28
29 manager = CLManager(config)
30
31 for epoch_result in manager.train():
32 print(epoch_result) # noqa: T201
33 print(manager.test()) # noqa: T201
34
35
36if __name__ == "__main__":
37 wine_nn_example()