File tree Expand file tree Collapse file tree 10 files changed +63
-27
lines changed Expand file tree Collapse file tree 10 files changed +63
-27
lines changed Load Diff This file was deleted.
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change 3
3
using NeuralNetworkNET . APIs . Enums ;
4
4
using NeuralNetworkNET . APIs . Results ;
5
5
using NeuralNetworkNET . APIs . Structs ;
6
- using NeuralNetworkNET . DependencyInjections ;
7
6
using NeuralNetworkNET . Extensions ;
8
7
using NeuralNetworkNET . SupervisedLearning . Algorithms . Info ;
9
8
using NeuralNetworkNET . SupervisedLearning . Data ;
15
14
using System . Threading ;
16
15
using System . Threading . Tasks ;
17
16
using NeuralNetworkNET . Networks . Layers . Abstract ;
17
+ using NeuralNetworkNET . Services ;
18
18
19
19
namespace NeuralNetworkNET . Networks . Implementations
20
20
{
@@ -47,7 +47,7 @@ public static TrainingSessionResult TrainNetwork(
47
47
[ CanBeNull ] TestParameters testParameters ,
48
48
CancellationToken token )
49
49
{
50
- LibraryRuntimeHelper . SynchronizeContext ? . Invoke ( ) ;
50
+ SharedEventsService . TrainingStarting . Raise ( ) ;
51
51
switch ( algorithm )
52
52
{
53
53
case StochasticGradientDescentInfo sgd :
Original file line number Diff line number Diff line change 6
6
using NeuralNetworkNET . APIs . Interfaces ;
7
7
using NeuralNetworkNET . APIs . Structs ;
8
8
using NeuralNetworkNET . Extensions ;
9
- using NeuralNetworkNET . Helpers ;
10
9
using NeuralNetworkNET . Networks . Activations ;
11
10
using NeuralNetworkNET . Networks . Activations . Delegates ;
12
11
using NeuralNetworkNET . Networks . Layers . Cpu ;
12
+ using NeuralNetworkNET . Services ;
13
13
14
14
namespace NeuralNetworkNET . Networks . Layers . Cuda
15
15
{
Original file line number Diff line number Diff line change 5
5
using NeuralNetworkNET . APIs . Interfaces ;
6
6
using NeuralNetworkNET . APIs . Structs ;
7
7
using NeuralNetworkNET . Extensions ;
8
- using NeuralNetworkNET . Helpers ;
9
8
using NeuralNetworkNET . Networks . Activations ;
10
9
using NeuralNetworkNET . Networks . Activations . Delegates ;
11
10
using NeuralNetworkNET . Networks . Layers . Cpu ;
11
+ using NeuralNetworkNET . Services ;
12
12
13
13
namespace NeuralNetworkNET . Networks . Layers . Cuda
14
14
{
Original file line number Diff line number Diff line change 7
7
using NeuralNetworkNET . APIs . Interfaces ;
8
8
using NeuralNetworkNET . APIs . Structs ;
9
9
using NeuralNetworkNET . Extensions ;
10
- using NeuralNetworkNET . Helpers ;
11
10
using NeuralNetworkNET . Networks . Activations ;
12
11
using NeuralNetworkNET . Networks . Activations . Delegates ;
13
12
using NeuralNetworkNET . Networks . Layers . Abstract ;
14
13
using NeuralNetworkNET . Networks . Layers . Initialization ;
14
+ using NeuralNetworkNET . Services ;
15
15
16
16
namespace NeuralNetworkNET . Networks . Layers . Cuda
17
17
{
Original file line number Diff line number Diff line change 5
5
using NeuralNetworkNET . APIs . Interfaces ;
6
6
using NeuralNetworkNET . APIs . Structs ;
7
7
using NeuralNetworkNET . Extensions ;
8
- using NeuralNetworkNET . Helpers ;
9
8
using NeuralNetworkNET . Networks . Activations ;
10
9
using NeuralNetworkNET . Networks . Activations . Delegates ;
11
10
using NeuralNetworkNET . Networks . Layers . Cpu ;
11
+ using NeuralNetworkNET . Services ;
12
12
using Newtonsoft . Json ;
13
13
14
14
namespace NeuralNetworkNET . Networks . Layers . Cuda
Original file line number Diff line number Diff line change 5
5
using NeuralNetworkNET . APIs . Interfaces ;
6
6
using NeuralNetworkNET . APIs . Structs ;
7
7
using NeuralNetworkNET . Extensions ;
8
- using NeuralNetworkNET . Helpers ;
9
8
using NeuralNetworkNET . Networks . Activations ;
10
9
using NeuralNetworkNET . Networks . Cost ;
11
10
using NeuralNetworkNET . Networks . Layers . Cpu ;
11
+ using NeuralNetworkNET . Services ;
12
12
13
13
namespace NeuralNetworkNET . Networks . Layers . Cuda
14
14
{
Original file line number Diff line number Diff line change 3
3
using Alea ;
4
4
using Alea . cuDNN ;
5
5
using JetBrains . Annotations ;
6
- using NeuralNetworkNET . DependencyInjections ;
7
6
8
- namespace NeuralNetworkNET . Helpers
7
+ namespace NeuralNetworkNET . Services
9
8
{
10
9
/// <summary>
11
10
/// A static class that handles a shared, disposable instance of the <see cref="Dnn"/> class
@@ -53,7 +52,7 @@ public static Dnn Instance
53
52
if ( DnnReference . TryGetTarget ( out Dnn dnn ) && dnn != null ) return dnn ;
54
53
dnn = Dnn . Get ( Gpu . Default ) ;
55
54
DnnReference . SetTarget ( dnn ) ;
56
- LibraryRuntimeHelper . SynchronizeContext = SynchronizeDnnContext ;
55
+ SharedEventsService . TrainingStarting . Add ( SynchronizeDnnContext ) ;
57
56
return dnn ;
58
57
}
59
58
}
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments