PLearn 0.1
|
#include <NistDB.h>
Public Member Functions | |
NistDB (bool train) | |
Views the train data if train is true, test data otherwise. | |
virtual real | get (int i, int j) const |
This method must be implemented in all subclasses. | |
virtual void | getSubRow (int i, int j, Vec v) const |
It is suggested that this method be implemented in subclasses to speed up accesses (default version repeatedly calls get(i,j) which may have a significant overhead). | |
Protected Attributes | |
ifstream | imagef |
ifstream | labelf |
unsigned char | buf [28 *28] |
PLearn::NistDB::NistDB | ( | bool | train | ) |
Views the train data if train is true, test data otherwise.
Definition at line 52 of file NistDB.cc.
References imagef, labelf, PLearn::VMatrix::length_, and PLERROR.
:VMatrix(60000, 28*28+1) { if(train) { imagef.open(PPath("DBDIR:MNIST/train-images-idx3-ubyte").c_str()); labelf.open(PPath("DBDIR:MNIST/train-labels-idx1-ubyte").c_str()); length_ = 60000; } else { // imagef.open(DBDIR"/MNIST/test-images.idx3-ubyte"); // labelf.open(DBDIR"/MNIST/test-labels.idx1-ubyte"); // length_ = 60000; imagef.open(PPath("DBDIR:MNIST/t10k-images-idx3-ubyte").c_str()); labelf.open(PPath("DBDIR:MNIST/t10k-labels-idx1-ubyte").c_str()); length_ = 10000; } if(!imagef) PLERROR("In NistDB constructor could not open imagefile for reading"); if(!labelf) PLERROR("In NistDB constructor could not open labelfile for reading"); }
This method must be implemented in all subclasses.
Returns element (i,j).
Implements PLearn::VMatrix.
Definition at line 76 of file NistDB.cc.
References imagef, labelf, PLearn::VMatrix::length(), PLERROR, and PLearn::VMatrix::width().
{ #ifdef BOUNDCHECK if(i<0 || i>=length() || j<0 || j>=width()) PLERROR("In NistDB::get OUT OF BOUNDS"); #endif if(j==width()-1) // then read from labelf { labelf.seekg(8+i); return real(labelf.get()); } else // read from imagef { imagef.seekg(16+i*(28*28)+j); #ifdef DO_RESCALE return real(imagef.get())/255.0; #else return real(imagef.get()); #endif } }
It is suggested that this method be implemented in subclasses to speed up accesses (default version repeatedly calls get(i,j) which may have a significant overhead).
Fills v with the subrow i lying between columns j (inclusive) and j+v.length() (exclusive).
Reimplemented from PLearn::VMatrix.
Definition at line 98 of file NistDB.cc.
References buf, imagef, labelf, PLearn::VMatrix::length(), PLearn::TVec< T >::length(), PLERROR, and PLearn::VMatrix::width().
{ #ifdef BOUNDCHECK if(i<0 || i>=length() || j<0 || j+v.length()>width()) PLERROR("In NistDB::getSubRow OUT OF BOUNDS"); #endif int npixelstoread = v.length(); if(j+v.length()==width()) { labelf.seekg(8+i); v[v.length()-1] = real(labelf.get()); npixelstoread--; } if(j<width()-1) { imagef.seekg(16+i*(28*28)+j); #if __GNUC__ < 3 && !defined(WIN32) imagef.read(buf, npixelstoread); #else imagef.read(reinterpret_cast<char*>(buf), npixelstoread); #endif for(int k=0; k<npixelstoread; k++) { #ifdef DO_RESCALE v[k] = real(buf[k])/255.0; #else v[k] = real(buf[k]); #endif } } }
unsigned char PLearn::NistDB::buf[28 *28] [mutable, protected] |
Definition at line 62 of file NistDB.h.
Referenced by getSubRow().
ifstream PLearn::NistDB::imagef [mutable, protected] |
Definition at line 60 of file NistDB.h.
Referenced by get(), getSubRow(), and NistDB().
ifstream PLearn::NistDB::labelf [mutable, protected] |
Definition at line 61 of file NistDB.h.
Referenced by get(), getSubRow(), and NistDB().