| 224 | |
| 225 | |
| 226 | TLearnContext::TLearnContext( |
| 227 | const NCatboostOptions::TCatBoostOptions& params, |
| 228 | const TMaybe<TCustomObjectiveDescriptor>& objectiveDescriptor, |
| 229 | const TMaybe<TCustomMetricDescriptor>& evalMetricDescriptor, |
| 230 | const NCatboostOptions::TOutputFilesOptions& outputOptions, |
| 231 | const TTrainingDataProviders& data, |
| 232 | TMaybe<TPrecomputedOnlineCtrData> precomputedSingleOnlineCtrDataForSingleFold, |
| 233 | const TLabelConverter& labelConverter, |
| 234 | const TMaybe<TVector<double>>& startingApprox, |
| 235 | TMaybe<const TRestorableFastRng64*> initRand, |
| 236 | TMaybe<TFullModel*> initModel, |
| 237 | THolder<TLearnProgress> initLearnProgress, // will be modified if not non-nullptr |
| 238 | NCB::TDataProviders initModelApplyCompatiblePools, |
| 239 | NPar::ILocalExecutor* localExecutor, |
| 240 | const TString& fileNamesPrefix) |
| 241 | |
| 242 | : TCommonContext( |
| 243 | params, |
| 244 | objectiveDescriptor, |
| 245 | evalMetricDescriptor, |
| 246 | data.Learn->ObjectsData->GetFeaturesLayout(), |
| 247 | localExecutor) |
| 248 | , OutputOptions(outputOptions) |
| 249 | , Files(outputOptions, fileNamesPrefix) |
| 250 | , Profile((int)Params.BoostingOptions->IterationCount) |
| 251 | , UseTreeLevelCachingFlag(false) |
| 252 | , HasWeights(data.Learn->MetaInfo.HasWeights) { |
| 253 | |
| 254 | ETaskType taskType = Params.GetTaskType(); |
| 255 | CB_ENSURE(taskType == ETaskType::CPU, "Error: expect learn on CPU task type, got " << taskType); |
| 256 | |
| 257 | THPTimer calcHashTimer; |
| 258 | ui32 featuresCheckSum = data.CalcFeaturesCheckSum(localExecutor); |
| 259 | CATBOOST_DEBUG_LOG << "Features checksum calculation time: " << calcHashTimer.Passed() << Endl; |
| 260 | |
| 261 | ui32 approxDimension = GetApproxDimension(Params, labelConverter, data.Learn->TargetData->GetTargetDimension()); |
| 262 | if (initLearnProgress) { |
| 263 | CB_ENSURE( |
| 264 | approxDimension == SafeIntegerCast<ui32>(initLearnProgress->ApproxDimension), |
| 265 | "Attempt to continue learning with a different approx dimension" |
| 266 | ); |
| 267 | CB_ENSURE( |
| 268 | labelConverter == initLearnProgress->LabelConverter, |
| 269 | "Attempt to continue learning with different class labels" |
| 270 | ); |
| 271 | } |
| 272 | |
| 273 | const TFoldsCreationParams foldsCreationParams( |
| 274 | params, |
| 275 | *(data.Learn->ObjectsData), |
| 276 | startingApprox, |
| 277 | /*isForWorkerLocalData*/ false |
| 278 | ); |
| 279 | const ui32 foldCreationParamsCheckSum = foldsCreationParams.CalcCheckSum( |
| 280 | *data.Learn->ObjectsGrouping, |
| 281 | localExecutor |
| 282 | ); |
| 283 |
nothing calls this directly
no test coverage detected