13 using WeightMatrix = Eigen::Matrix<real_t, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>;
19 explicit NumpyInitializer(std::shared_ptr<const WeightMatrix> weights, std::shared_ptr<const DenseRealVector> biases) :
35 std::shared_ptr<const DenseRealVector>
m_Biases;
41 [[nodiscard]] std::unique_ptr<WeightsInitializer>
make_initializer(
const std::shared_ptr<const GenericFeatureMatrix>& features)
const override;
49 std::shared_ptr<const WeightMatrix> weights,
50 std::shared_ptr<const DenseRealVector> biases) :
51 m_WeightMatrix(std::move(weights)), m_BiasVector(std::move(biases)) {
59 std::optional<std::filesystem::path> bias_file) {
61 spdlog::info(
"Loaded weight matrix from {}: {} x {}", weight_file.string(), weights->rows(), weights->cols());
62 std::shared_ptr<const DenseRealVector> biases =
nullptr;
66 return std::make_shared<NumpyInitializationStrategy>(weights, biases);
NumpyInitializationStrategy(std::shared_ptr< const WeightMatrix >, std::shared_ptr< const DenseRealVector > biases)
std::shared_ptr< const WeightMatrix > m_WeightMatrix
std::shared_ptr< const DenseRealVector > m_BiasVector
std::unique_ptr< WeightsInitializer > make_initializer(const std::shared_ptr< const GenericFeatureMatrix > &features) const override
Creats a new, thread local WeightsInitializer.
std::shared_ptr< const WeightMatrix > m_PreTrainedWeights
std::shared_ptr< const DenseRealVector > m_Biases
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.
NumpyInitializer(std::shared_ptr< const WeightMatrix > weights, std::shared_ptr< const DenseRealVector > biases)
Base class for all weight init strategies.
Base class for all weight initializers.
Strong typedef for an int to signify a label id.
Class that models an optimization objective.
constexpr T to_index() const
! Explicitly convert to an integer.
Eigen::Matrix< real_t, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > WeightMatrix
std::shared_ptr< WeightInitializationStrategy > create_numpy_initializer(const std::filesystem::path &weights, std::optional< std::filesystem::path > biases)
Creates an initialization strategy that uses weights loaded from a npy file.
types::DenseRowMajor< real_t > load_matrix_from_npy(std::istream &source)
Loads a matrix from a numpy array.