コード例 #1
0
ファイル: net.cpp プロジェクト: Geekrick88/ConvNet
void Net::Classify(const mxArray *mx_data, mxArray *&mx_pred) {  

  //mexPrintMsg("Start classification...");
  ReadData(mx_data);
  size_t test_num = data_.size1();
  labels_.resize(test_num, layers_.back()->length_);  
  labels_.reorder(true, false);
  size_t numbatches = DIVUP(test_num, params_.batchsize_);
  size_t offset = 0;
  Mat data_batch, pred_batch;    
  for (size_t batch = 0; batch < numbatches; ++batch) {
    size_t batchsize = MIN(test_num - offset, params_.batchsize_);
    data_batch.resize(batchsize, data_.size2());
    SubSet(data_, data_batch, offset, true);    
    InitActiv(data_batch);
    Forward(pred_batch, 0);            
    SubSet(labels_, pred_batch, offset, false);    
    offset += batchsize;
    if (params_.verbose_ == 2) {
      mexPrintInt("Batch", (int) batch + 1);
    }      
  }
  labels_.reorder(kMatlabOrder, true);
  mx_pred = mexSetMatrix(labels_);  
  //mexPrintMsg("Classification finished");
}
コード例 #2
0
ファイル: ReviewCpp.cpp プロジェクト: Goclis/DataStructure
void SubSet(T list[], int k, int m, int flags[]) {
    int j;
    if (k <= m) {
        SubSet(list, k + 1, m, flags);
        flags[k] = 1 - flags[k]; // Two states for a element in a subset, change it here
        SubSet(list, k + 1, m, flags);
    } else {
        std::cout << "{";
        for (j = 0; j <= m; ++j) {
            if (flags[j]) {
                std::cout << list[j] << ", ";
            }
        }
        std::cout << "}" << std::endl;
    }
}
コード例 #3
0
ファイル: net.cpp プロジェクト: Geekrick88/ConvNet
void Net::Train(const mxArray *mx_data, const mxArray *mx_labels) {  

  //mexPrintMsg("Start training...");  
  ReadData(mx_data);
  ReadLabels(mx_labels);
  InitNorm();
  
  size_t train_num = data_.size1();
  size_t numbatches = DIVUP(train_num, params_.batchsize_);
  trainerrors_.resize(params_.epochs_, 2);
  trainerrors_.assign(0);
  for (size_t epoch = 0; epoch < params_.epochs_; ++epoch) {    
    if (params_.shuffle_) {
      Shuffle(data_, labels_);      
    }
    StartTimer();    
    size_t offset = 0;
    Mat data_batch, labels_batch, pred_batch;      
    for (size_t batch = 0; batch < numbatches; ++batch) {
      size_t batchsize = MIN(train_num - offset, params_.batchsize_);      
      UpdateWeights(epoch, false);
      data_batch.resize(batchsize, data_.size2());
      labels_batch.resize(batchsize, labels_.size2());      
      SubSet(data_, data_batch, offset, true);      
      SubSet(labels_, labels_batch, offset, true);
      ftype error1;      
      InitActiv(data_batch);
      Forward(pred_batch, 1);            
      InitDeriv(labels_batch, error1);
      trainerrors_(epoch, 0) += error1;
      Backward();
      UpdateWeights(epoch, true); 
      offset += batchsize;
      if (params_.verbose_ == 2) {
        mexPrintInt("Epoch", (int) epoch + 1);
        mexPrintInt("Batch", (int) batch + 1);
      }
    } // batch  
    MeasureTime("totaltime");
    if (params_.verbose_ == 1) {
      mexPrintInt("Epoch", (int) epoch + 1);
    }        
  } // epoch  
  trainerrors_ /= (ftype) numbatches;
  //mexPrintMsg("Training finished");
}
コード例 #4
0
	vector<vector<int> > subsets(vector<int> &S) {
		// Start typing your C/C++ solution below
		// DO NOT write int main() function
		Init();
		sort(S.begin(),S.end());
		SubSet(S,0,S.size());

		return ret;
	}
コード例 #5
0
	void SubSet(vector<int> &S ,int s, int end)
	{
		if(s == end)
		{				
			steps[current] = step;
			ret.push_back(steps[current]);
			current++;
			return ;
		}
		vector<int>::iterator p =  upper_bound(S.begin()+s, S.end(),S[s]);
		int times = p - S.begin() - s ;
		for( int i = 0 ; i < times ;i++)
		{
			step.push_back(S[s]);
			SubSet(S, p-S.begin(), end);
		}
		while(times-- >= 1)
		{
			step.pop_back();
		}
		SubSet(S,p-S.begin(),end);
	}
コード例 #6
0
ファイル: MAXLIB.C プロジェクト: StevenKTurner/IPO
int PSubSet (IMAGE a, IMAGE b)
{
	if (ImCompare(a, b)) return 0;
	return SubSet (a, b);
}