DiSMEC++
zero.cpp
Go to the documentation of this file.
1 // Copyright (c) 2021, Aalto University, developed by Erik Schultheis
2 // All rights reserved.
3 //
4 // SPDX-License-Identifier: MIT
5 
6 #include "training/initializer.h"
7 #include "data/types.h"
8 
9 using namespace dismec::init;
10 
11 namespace dismec::init {
13  public:
15  Eigen::Ref<DenseRealVector> target,
16  objective::Objective& objective) override {
17  target.setZero();
18  }
19  };
20 
22  public:
23  [[nodiscard]] std::unique_ptr<WeightsInitializer> make_initializer(
24  const std::shared_ptr<const GenericFeatureMatrix>& features) const override;
25  };
26 }
27 
28 std::unique_ptr<WeightsInitializer> ZeroInitializationStrategy::make_initializer(
29  const std::shared_ptr<const GenericFeatureMatrix>& features) const {
30  return std::make_unique<ZeroInitializer>();
31 }
32 
33 std::shared_ptr<WeightInitializationStrategy> dismec::init::create_zero_initializer() {
34  return std::make_shared<ZeroInitializationStrategy>();
35 }
Base class for all weight init strategies.
Definition: initializer.h:53
Base class for all weight initializers.
Definition: initializer.h:30
std::unique_ptr< WeightsInitializer > make_initializer(const std::shared_ptr< const GenericFeatureMatrix > &features) const override
Creats a new, thread local WeightsInitializer.
Definition: zero.cpp:28
void get_initial_weight(label_id_t label_id, Eigen::Ref< DenseRealVector > target, objective::Objective &objective) override
Generate an initial vector for the given label. The result should be placed in target.
Definition: zero.cpp:14
Strong typedef for an int to signify a label id.
Definition: types.h:20
Class that models an optimization objective.
Definition: objective.h:41
std::shared_ptr< WeightInitializationStrategy > create_zero_initializer()
Creates an initialization strategy that initializes all weight vectors to zero.
Definition: zero.cpp:33