void UnifiedModel::getParameterVectorMask(const std::set<std::string> selected_values_labels, VectorXi& selected_mask) const { selected_mask.resize(getParameterVectorAllSize()); selected_mask.fill(0); int offset = 0; int size; // Centers size = centers_.size()*centers_[0].size(); if (selected_values_labels.find("centers")!=selected_values_labels.end()) selected_mask.segment(offset,size).fill(1); offset += size; // Widths size = covars_.size()*covars_[0].cols(); if (selected_values_labels.find("widths")!=selected_values_labels.end()) selected_mask.segment(offset,size).fill(2); offset += size; // Offsets size = offsets_.size(); if (selected_values_labels.find("offsets")!=selected_values_labels.end()) selected_mask.segment(offset,size).fill(3); offset += size; // Slopes size = slopes_.size()*slopes_[0].size(); if (selected_values_labels.find("slopes")!=selected_values_labels.end()) selected_mask.segment(offset,size).fill(4); offset += size; assert(offset == getParameterVectorAllSize()); }
void ModelParametersLWPR::getParameterVectorMask(const std::set<std::string> selected_values_labels, VectorXi& selected_mask) const { selected_mask.resize(getParameterVectorAllSize()); selected_mask.fill(0); int offset = 0; int size; // Centers size = n_centers_; if (selected_values_labels.find("centers")!=selected_values_labels.end()) selected_mask.segment(offset,size).fill(1); offset += size; // Widths size = n_widths_; if (selected_values_labels.find("widths")!=selected_values_labels.end()) selected_mask.segment(offset,size).fill(2); offset += size; // Offsets size = n_offsets_; if (selected_values_labels.find("offsets")!=selected_values_labels.end()) selected_mask.segment(offset,size).fill(3); offset += size; // Slopes size = n_slopes_; if (selected_values_labels.find("slopes")!=selected_values_labels.end()) selected_mask.segment(offset,size).fill(4); offset += size; assert(offset == getParameterVectorAllSize()); }
void online_test(const vector<vector<MatrixXd> >& vec_data, const VectorXi& vec_label, const vector<MatrixXd>& weight_0, const MatrixXd& bias_0, const vector<MatrixXd>& weight_1, const MatrixXd& bias_1, const vector<MatrixXd>& weight_2, const MatrixXd& bias_2, const MatrixXd& weight_class, const MatrixXd& bias_class, const int& num_kerns1, const int& num_kerns2, const int& num_kerns3, const int& kern_size, const int& pool_size) { vector<vector<MatrixXd> > test_data; copy(vec_data.begin(), vec_data.begin() + 1, back_inserter(test_data)); VectorXi test_label; test_label = vec_label.segment(0, 1200); ConvPoolLayer *p_conv0 = new ConvPoolLayer(test_data, num_kerns1, kern_size, "same", "tanh", weight_0, bias_0); Pool *p_pool0 = new Pool(p_conv0->batch_maps_activated, pool_size, pool_size); ConvPoolLayer *p_conv1 = new ConvPoolLayer(p_pool0->output_batch_pooled, num_kerns2, kern_size, "same", "tanh", weight_1, bias_1); Pool *p_pool1 = new Pool(p_conv1->batch_maps_activated, pool_size, pool_size); ConvPoolLayer *p_conv2 = new ConvPoolLayer(p_pool1->output_batch_pooled, num_kerns3, kern_size, "same", "tanh", weight_2, bias_2); Pool *p_pool2 = new Pool(p_conv2->batch_maps_activated, pool_size, pool_size); MatrixXd feature_vectors; get_feature_vector(p_pool2->output_batch_pooled, feature_vectors); // classifier.input = feature_vectors; Softmax classifier(feature_vectors, 9, test_label, 1, 1, weight_class, bias_class); classifier.calculation_output(); cout << classifier.m.transpose() << endl; int accuracy = 0; for(int i = 0; i < test_label.size(); i++) { if(classifier.m(i) == test_label(i)) { accuracy ++; } } cout << "accuracy : " << accuracy << endl; }
void QPSolver::convertToConicProblem(ConicSolver& solver) { const MatrixXd& F = mLhs; int newNumVar = mNumVar + 1 + 1 + F.rows(); //x,v,w,t int newNumCon = mNumCon + F.rows() + 1 + 2; VectorXd newC = VectorXd::Zero(newNumVar); newC.head(mNumVar) = mc; newC(mNumVar) = 1.0; solver.SetLinearTerm(newC); MatrixXd newA = MatrixXd::Zero(newNumCon, newNumVar); VectorXd newLbc = VectorXd::Zero(newNumCon); VectorXd newUbc = VectorXd::Zero(newNumCon); VectorXi newIsConstraintLowerBounded = VectorXi::Zero(newNumCon); VectorXi newIsConstraintUpperBounded = VectorXi::Zero(newNumCon); if (mNumCon) { newA.block(0, 0, mNumCon, mNumVar) = mA; newLbc.head(mNumCon) = mlbc; newUbc.head(mNumCon) = mubc; newIsConstraintLowerBounded.head(mNumCon) = mbConstraintLowerBounded; newIsConstraintUpperBounded.head(mNumCon) = mbConstraintUpperBounded; } newA.block(mNumCon, 0, F.rows(), mNumVar) = F; newA.block(mNumCon, newNumVar - F.rows(), F.rows(), F.rows()) = -MatrixXd::Identity(F.rows(), F.rows()); newA(mNumCon + F.rows(), mNumVar + 1) = 1.0; newA(mNumCon + F.rows() + 1, mNumVar) = 1.0; newA(mNumCon + F.rows() + 2, mNumVar + 1) = 1.0; newLbc.segment(mNumCon, F.rows()) = VectorXd::Zero(F.rows()); newLbc(mNumCon + F.rows()) = 1.0; newUbc.segment(mNumCon, F.rows()) = VectorXd::Zero(F.rows()); newUbc(mNumCon + F.rows()) = 1.0; newIsConstraintLowerBounded.segment(mNumCon, F.rows()) = VectorXi::Constant(F.rows(), 1); newIsConstraintLowerBounded.tail(3) = VectorXi::Constant(3, 1); newIsConstraintUpperBounded.segment(mNumCon, F.rows()) = VectorXi::Constant(F.rows(), 1); newIsConstraintUpperBounded(mNumCon + F.rows()) = 1; solver.SetConstraints(newA, newLbc, newIsConstraintLowerBounded, newUbc, newIsConstraintUpperBounded); VectorXd newLb = VectorXd::Zero(newNumVar); VectorXd newUb = VectorXd::Zero(newNumVar); VectorXi newBLowerBounded = VectorXi::Zero(newNumVar); VectorXi newBUpperBounded = VectorXi::Zero(newNumVar); solver.SetLowerBounds(newLb, newBLowerBounded); solver.SetUpperBounds(newUb, newBUpperBounded); Cone cone; for (int i = mNumVar; i < newNumVar; ++i) { cone.mSubscripts.push_back(i); } solver.AddCone(cone); }