5757 "Naive Calibration Executor" ,
5858 NaiveCalibrator . LoaderSignature ) ]
5959
60- [ assembly: LoadableClass ( typeof ( ValueMapperCalibratedModelParameters < object , ICalibrator > ) , null , typeof ( SignatureLoadModel ) ,
60+ [ assembly: LoadableClass ( typeof ( CalibratedModelParametersBase ) , typeof ( ValueMapperCalibratedModelParameters < IPredictorProducing < float > , ICalibrator > ) , null , typeof ( SignatureLoadModel ) ,
6161 "Calibrated Predictor Executor" ,
6262 ValueMapperCalibratedModelParameters < IPredictorProducing < float > , ICalibrator > . LoaderSignature , "BulkCaliPredExec" ) ]
6363
@@ -150,6 +150,18 @@ internal interface IWeaklyTypedCalibratedModelParameters
150150 ICalibrator WeaklyTypedCalibrator { get ; }
151151 }
152152
153+ public abstract class CalibratedModelParametersBase
154+ {
155+ public object SubModel { get ; }
156+ public ICalibrator Calibrator { get ; }
157+
158+ private protected CalibratedModelParametersBase ( object subModel , ICalibrator calibrator )
159+ {
160+ SubModel = subModel ;
161+ Calibrator = calibrator ;
162+ }
163+ }
164+
153165 /// <summary>
154166 /// Class for allowing a post-processing step, defined by <see cref="Calibrator"/>, to <see cref="SubModel"/>'s
155167 /// output.
@@ -161,7 +173,7 @@ internal interface IWeaklyTypedCalibratedModelParameters
161173 /// output value to the probability of belonging to the positive (or negative) class. Detailed math materials
162174 /// can be found at <a href="https://www.csie.ntu.edu.tw/~cjlin/papers/plattprob.pdf">this paper</a>.
163175 /// </remarks>
164- public abstract class CalibratedModelParametersBase < TSubModel , TCalibrator > :
176+ public abstract class CalibratedModelParametersBase < TSubModel , TCalibrator > : CalibratedModelParametersBase ,
165177 IDistPredictorProducing < float , float > ,
166178 ICanSaveInIniFormat ,
167179 ICanSaveInTextFormat ,
@@ -178,11 +190,12 @@ public abstract class CalibratedModelParametersBase<TSubModel, TCalibrator> :
178190 /// <summary>
179191 /// <see cref="SubModel"/>'s output would calibrated by <see cref="Calibrator"/>.
180192 /// </summary>
181- public TSubModel SubModel { get ; }
193+ public new TSubModel SubModel { get ; }
194+
182195 /// <summary>
183196 /// <see cref="Calibrator"/> is used to post-process score produced by <see cref="SubModel"/>.
184197 /// </summary>
185- public TCalibrator Calibrator { get ; }
198+ public new TCalibrator Calibrator { get ; }
186199
187200 // Type-unsafed accessors of strongly-typed members.
188201 IPredictorProducing < float > IWeaklyTypedCalibratedModelParameters . WeaklyTypedSubModel => ( IPredictorProducing < float > ) SubModel ;
@@ -191,6 +204,7 @@ public abstract class CalibratedModelParametersBase<TSubModel, TCalibrator> :
191204 PredictionKind IPredictor . PredictionKind => ( ( IPredictorProducing < float > ) SubModel ) . PredictionKind ;
192205
193206 private protected CalibratedModelParametersBase ( IHostEnvironment env , string name , TSubModel predictor , TCalibrator calibrator )
207+ : base ( predictor , calibrator )
194208 {
195209 Contracts . CheckValue ( env , nameof ( env ) ) ;
196210 env . CheckNonWhiteSpace ( name , nameof ( name ) ) ;
@@ -417,7 +431,7 @@ private ValueMapperCalibratedModelParameters(IHostEnvironment env, ModelLoadCont
417431 {
418432 }
419433
420- private static ValueMapperCalibratedModelParameters < TSubModel , TCalibrator > Create ( IHostEnvironment env , ModelLoadContext ctx )
434+ private static CalibratedModelParametersBase Create ( IHostEnvironment env , ModelLoadContext ctx )
421435 {
422436 Contracts . CheckValue ( ctx , nameof ( ctx ) ) ;
423437 // Can load either the old "bulk" model or standard "cali". The two formats are identical.
0 commit comments