Пример #1
0
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());   
}
Пример #2
0
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());   
}
Пример #3
0
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;
}
Пример #4
0
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);
}