void SoftmaxRegressionFunction::InitializeWeights( arma::mat &weights, const size_t featureSize, const size_t numClasses, const bool fitIntercept) { // Initialize values to 0.005 * r. 'r' is a matrix of random values taken from // a Gaussian distribution with mean zero and variance one. // If the fitIntercept flag is true, parameters.col(0) is the intercept. if (fitIntercept) weights.randn(numClasses, featureSize + 1); else weights.randn(numClasses, featureSize); weights *= 0.005; }
/** * Initialize the dictionary randomly from a normal distribution, such that * each atom has a norm of 1. This is simple enough to be included with the * definition. * * @param data Dataset to use for initialization. * @param atoms Number of atoms (columns) in the dictionary. * @param dictionary Dictionary to initialize. */ static void Initialize(const arma::mat& data, const size_t atoms, arma::mat& dictionary) { // Create random dictionary. dictionary.randn(data.n_rows, atoms); // Normalize each atom. for (size_t j = 0; j < atoms; ++j) dictionary.col(j) /= norm(dictionary.col(j), 2); }