Skip to content

Commit 713aa5d

Browse files
committed
Minor code refactoring
1 parent ae3a22b commit 713aa5d

File tree

10 files changed

+63
-27
lines changed

10 files changed

+63
-27
lines changed

NeuralNetwork.NET/DependencyInjections/LibraryRuntimeHelper.cs

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using System;
2+
using System.Linq;
3+
using JetBrains.Annotations;
4+
5+
namespace NeuralNetworkNET.Helpers
6+
{
7+
/// <summary>
8+
/// A shared event with an <see cref="Action"/> <see cref="delegate"/> as its handler
9+
/// </summary>
10+
internal sealed class SharedEvent
11+
{
12+
// The backing delegate
13+
[CanBeNull]
14+
private Action _InvocationList;
15+
16+
/// <summary>
17+
/// Adds the input <see cref="Action"/> to the list of handlers
18+
/// </summary>
19+
/// <param name="action">The <see cref="Action"/> to add</param>
20+
public void Add(Action action)
21+
{
22+
if (_InvocationList?.GetInvocationList().Contains(action) == true) return;
23+
_InvocationList += action;
24+
}
25+
26+
/// <summary>
27+
/// Removes the input <see cref="Action"/> from the list of handlers
28+
/// </summary>
29+
/// <param name="action">The <see cref="Action"/> to remove</param>
30+
public void Remove(Action action) => Delegate.Remove(_InvocationList, action);
31+
32+
/// <summary>
33+
/// Raises the shared event
34+
/// </summary>
35+
public void Raise() => _InvocationList?.Invoke();
36+
}
37+
}

NeuralNetwork.NET/Networks/Implementations/NetworkTrainer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using NeuralNetworkNET.APIs.Enums;
44
using NeuralNetworkNET.APIs.Results;
55
using NeuralNetworkNET.APIs.Structs;
6-
using NeuralNetworkNET.DependencyInjections;
76
using NeuralNetworkNET.Extensions;
87
using NeuralNetworkNET.SupervisedLearning.Algorithms.Info;
98
using NeuralNetworkNET.SupervisedLearning.Data;
@@ -15,6 +14,7 @@
1514
using System.Threading;
1615
using System.Threading.Tasks;
1716
using NeuralNetworkNET.Networks.Layers.Abstract;
17+
using NeuralNetworkNET.Services;
1818

1919
namespace NeuralNetworkNET.Networks.Implementations
2020
{
@@ -47,7 +47,7 @@ public static TrainingSessionResult TrainNetwork(
4747
[CanBeNull] TestParameters testParameters,
4848
CancellationToken token)
4949
{
50-
LibraryRuntimeHelper.SynchronizeContext?.Invoke();
50+
SharedEventsService.TrainingStarting.Raise();
5151
switch (algorithm)
5252
{
5353
case StochasticGradientDescentInfo sgd:

NeuralNetwork.NET/Networks/Layers/Cuda/CuDnnConvolutionalLayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
using NeuralNetworkNET.APIs.Interfaces;
77
using NeuralNetworkNET.APIs.Structs;
88
using NeuralNetworkNET.Extensions;
9-
using NeuralNetworkNET.Helpers;
109
using NeuralNetworkNET.Networks.Activations;
1110
using NeuralNetworkNET.Networks.Activations.Delegates;
1211
using NeuralNetworkNET.Networks.Layers.Cpu;
12+
using NeuralNetworkNET.Services;
1313

1414
namespace NeuralNetworkNET.Networks.Layers.Cuda
1515
{

NeuralNetwork.NET/Networks/Layers/Cuda/CuDnnFullyConnectedLayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
using NeuralNetworkNET.APIs.Interfaces;
66
using NeuralNetworkNET.APIs.Structs;
77
using NeuralNetworkNET.Extensions;
8-
using NeuralNetworkNET.Helpers;
98
using NeuralNetworkNET.Networks.Activations;
109
using NeuralNetworkNET.Networks.Activations.Delegates;
1110
using NeuralNetworkNET.Networks.Layers.Cpu;
11+
using NeuralNetworkNET.Services;
1212

1313
namespace NeuralNetworkNET.Networks.Layers.Cuda
1414
{

NeuralNetwork.NET/Networks/Layers/Cuda/CuDnnInceptionLayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
using NeuralNetworkNET.APIs.Interfaces;
88
using NeuralNetworkNET.APIs.Structs;
99
using NeuralNetworkNET.Extensions;
10-
using NeuralNetworkNET.Helpers;
1110
using NeuralNetworkNET.Networks.Activations;
1211
using NeuralNetworkNET.Networks.Activations.Delegates;
1312
using NeuralNetworkNET.Networks.Layers.Abstract;
1413
using NeuralNetworkNET.Networks.Layers.Initialization;
14+
using NeuralNetworkNET.Services;
1515

1616
namespace NeuralNetworkNET.Networks.Layers.Cuda
1717
{

NeuralNetwork.NET/Networks/Layers/Cuda/CuDnnPoolingLayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
using NeuralNetworkNET.APIs.Interfaces;
66
using NeuralNetworkNET.APIs.Structs;
77
using NeuralNetworkNET.Extensions;
8-
using NeuralNetworkNET.Helpers;
98
using NeuralNetworkNET.Networks.Activations;
109
using NeuralNetworkNET.Networks.Activations.Delegates;
1110
using NeuralNetworkNET.Networks.Layers.Cpu;
11+
using NeuralNetworkNET.Services;
1212
using Newtonsoft.Json;
1313

1414
namespace NeuralNetworkNET.Networks.Layers.Cuda

NeuralNetwork.NET/Networks/Layers/Cuda/CuDnnSoftmaxLayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
using NeuralNetworkNET.APIs.Interfaces;
66
using NeuralNetworkNET.APIs.Structs;
77
using NeuralNetworkNET.Extensions;
8-
using NeuralNetworkNET.Helpers;
98
using NeuralNetworkNET.Networks.Activations;
109
using NeuralNetworkNET.Networks.Cost;
1110
using NeuralNetworkNET.Networks.Layers.Cpu;
11+
using NeuralNetworkNET.Services;
1212

1313
namespace NeuralNetworkNET.Networks.Layers.Cuda
1414
{

NeuralNetwork.NET/Helpers/DnnService.cs renamed to NeuralNetwork.NET/Services/DnnService.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33
using Alea;
44
using Alea.cuDNN;
55
using JetBrains.Annotations;
6-
using NeuralNetworkNET.DependencyInjections;
76

8-
namespace NeuralNetworkNET.Helpers
7+
namespace NeuralNetworkNET.Services
98
{
109
/// <summary>
1110
/// A static class that handles a shared, disposable instance of the <see cref="Dnn"/> class
@@ -53,7 +52,7 @@ public static Dnn Instance
5352
if (DnnReference.TryGetTarget(out Dnn dnn) && dnn != null) return dnn;
5453
dnn = Dnn.Get(Gpu.Default);
5554
DnnReference.SetTarget(dnn);
56-
LibraryRuntimeHelper.SynchronizeContext = SynchronizeDnnContext;
55+
SharedEventsService.TrainingStarting.Add(SynchronizeDnnContext);
5756
return dnn;
5857
}
5958
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using JetBrains.Annotations;
2+
using NeuralNetworkNET.Helpers;
3+
4+
namespace NeuralNetworkNET.Services
5+
{
6+
/// <summary>
7+
/// A static class with events that signal different status changes for the library
8+
/// </summary>
9+
internal static class SharedEventsService
10+
{
11+
/// <summary>
12+
/// An <see cref="System.Action"/> that is executed right before the training starts on a network
13+
/// </summary>
14+
[NotNull]
15+
public static readonly SharedEvent TrainingStarting = new SharedEvent();
16+
}
17+
}

0 commit comments

Comments
 (0)