@@ -19,13 +19,15 @@ public partial class Model
1919 /// <param name="y"></param>
2020 /// <param name="batch_size"></param>
2121 /// <param name="epochs"></param>
22+ /// <param name="callbacks"></param>
2223 /// <param name="verbose"></param>
2324 /// <param name="validation_split"></param>
2425 /// <param name="shuffle"></param>
2526 public ICallback fit ( NDArray x , NDArray y ,
2627 int batch_size = - 1 ,
2728 int epochs = 1 ,
2829 int verbose = 1 ,
30+ List < ICallback > callbacks = null ,
2931 float validation_split = 0f ,
3032 bool shuffle = true ,
3133 int initial_epoch = 0 ,
@@ -59,14 +61,15 @@ public ICallback fit(NDArray x, NDArray y,
5961 StepsPerExecution = _steps_per_execution
6062 } ) ;
6163
62- return FitInternal ( data_handler , epochs , verbose , validation_data : null ,
64+ return FitInternal ( data_handler , epochs , verbose , callbackList : callbacks , validation_data : null ,
6365 train_step_func : train_step_function ) ;
6466 }
6567
6668 public ICallback fit ( IEnumerable < NDArray > x , NDArray y ,
6769 int batch_size = - 1 ,
6870 int epochs = 1 ,
6971 int verbose = 1 ,
72+ List < ICallback > callbacks = null ,
7073 float validation_split = 0f ,
7174 bool shuffle = true ,
7275 int initial_epoch = 0 ,
@@ -107,12 +110,12 @@ public ICallback fit(IEnumerable<NDArray> x, NDArray y,
107110 if ( data_handler . DataAdapter . GetDataset ( ) . structure . Length > 2 ||
108111 data_handler . DataAdapter . GetDataset ( ) . FirstInputTensorCount > 1 )
109112 {
110- return FitInternal ( data_handler , epochs , verbose , validation_data : null ,
113+ return FitInternal ( data_handler , epochs , verbose , callbackList : callbacks , validation_data : null ,
111114 train_step_func : train_step_multi_inputs_function ) ;
112115 }
113116 else
114117 {
115- return FitInternal ( data_handler , epochs , verbose , validation_data : null ,
118+ return FitInternal ( data_handler , epochs , verbose , callbackList : callbacks , validation_data : null ,
116119 train_step_func : train_step_function ) ;
117120 }
118121 }
@@ -122,6 +125,7 @@ public History fit(IDatasetV2 dataset,
122125 int batch_size = - 1 ,
123126 int epochs = 1 ,
124127 int verbose = 1 ,
128+ List < ICallback > callbacks = null ,
125129 float validation_split = 0f ,
126130 bool shuffle = true ,
127131 int initial_epoch = 0 ,
@@ -143,11 +147,11 @@ public History fit(IDatasetV2 dataset,
143147 StepsPerExecution = _steps_per_execution
144148 } ) ;
145149
146- return FitInternal ( data_handler , epochs , verbose , validation_data : validation_data ,
150+ return FitInternal ( data_handler , epochs , verbose , callbacks , validation_data : validation_data ,
147151 train_step_func : train_step_function ) ;
148152 }
149153
150- History FitInternal ( DataHandler data_handler , int epochs , int verbose , IDatasetV2 validation_data ,
154+ History FitInternal ( DataHandler data_handler , int epochs , int verbose , List < ICallback > callbackList , IDatasetV2 validation_data ,
151155 Func < DataHandler , OwnedIterator , Dictionary < string , float > > train_step_func )
152156 {
153157 stop_training = false ;
@@ -159,6 +163,13 @@ History FitInternal(DataHandler data_handler, int epochs, int verbose, IDatasetV
159163 Epochs = epochs ,
160164 Steps = data_handler . Inferredsteps
161165 } ) ;
166+
167+ if ( callbackList != null )
168+ {
169+ foreach ( var callback in callbackList )
170+ callbacks . callbacks . add ( callback ) ;
171+ }
172+
162173 callbacks . on_train_begin ( ) ;
163174
164175 foreach ( var ( epoch , iterator ) in data_handler . enumerate_epochs ( ) )
0 commit comments