16b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua/* 26b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Copyright (C) 2012 The Android Open Source Project 36b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 46b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Licensed under the Apache License, Version 2.0 (the "License"); 56b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * you may not use this file except in compliance with the License. 66b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * You may obtain a copy of the License at 76b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 86b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * http://www.apache.org/licenses/LICENSE-2.0 96b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * 106b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * Unless required by applicable law or agreed to in writing, software 116b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * distributed under the License is distributed on an "AS IS" BASIS, 126b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * See the License for the specific language governing permissions and 146b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua * limitations under the License. 156b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua */ 166b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 176b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua// This file contains a few utilities for MulticlassPA 186b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 196b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#include "learning/multiclass_pa/util.h" 206b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 216b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#include <string> 226b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 236b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#include "learning/multiclass_pa/multiclass_pa.h" 246b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#include "learning/multiclass_pa/multiclass_pa_max.h" 256b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#include "learning/multiclass_pa/multiclass_pa_opt.h" 266b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#include "learning/multiclass_pa/multiclass_warp.h" 276b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua#include "strings/strutil.h" 286b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 296b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Huanamespace learning_multiclass_pa { 306b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua 316b4eebc73439cbc3ddfb547444a341d1f9be7996Wei HuaMulticlassPA* CreateMulticlassPA(const string& version, 326b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua int32 num_classes, 336b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua int32 num_dimensions, 346b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua float aggressiveness) { 356b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua MulticlassPA* machine = NULL; 366b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua if (StringCaseEqual(version, "max")) { 376b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua machine = reinterpret_cast<MulticlassPA*>( 386b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua new MulticlassPAMax(num_classes, num_dimensions, aggressiveness)); 396b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua } else if (StringCaseEqual(version, "opt")) { 406b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua machine = reinterpret_cast<MulticlassPA*>( 416b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua new MulticlassPAOpt(num_classes, num_dimensions, aggressiveness)); 426b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua } else if (StringCaseEqual(version, "random")) { 436b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua machine = new MulticlassPA(num_classes, num_dimensions, aggressiveness); 446b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua } else if (StringCaseEqual(version, "warp")) { 456b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua machine = reinterpret_cast<MulticlassPA*>( 466b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua new MulticlassWarp(num_classes, num_dimensions, aggressiveness)); 476b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua } else { 486b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua LOG(ERROR) << "Machine type (" << version << ") unknown"; 496b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua } 506b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua return machine; 516b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua} 526b4eebc73439cbc3ddfb547444a341d1f9be7996Wei Hua} // namespace learning_multiclass_pa 53