Mercurial > pylearn
changeset 272:6226ebafefc3
Automated merge with ssh://projects@lgcm.iro.umontreal.ca/hg/pylearn
author | Frederic Bastien <bastienf@iro.umontreal.ca> |
---|---|
date | Tue, 03 Jun 2008 16:13:42 -0400 |
parents | 19b14afe04b7 (diff) 38e7d90a1218 (current diff) |
children | fa8abc813bd2 |
files | dataset.py |
diffstat | 1 files changed, 15 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/dataset.py Tue Jun 03 16:13:38 2008 -0400 +++ b/dataset.py Tue Jun 03 16:13:42 2008 -0400 @@ -278,7 +278,7 @@ first_part = self.dataset.minibatches_nowrap(self.fieldnames,self.L-self.next_row,1,self.next_row).next() second_part = self.dataset.minibatches_nowrap(self.fieldnames,upper-self.L,1,0).next() minibatch = Example(self.fieldnames, - [self.dataset.valuesVStack(name,[first_part[name],second_part[name]]) + [self.dataset.valuesAppend(name,[first_part[name],second_part[name]]) for name in self.fieldnames]) self.next_row=upper self.n_batches_done+=1 @@ -953,16 +953,25 @@ Virtual super-class of datasets whose field values are numpy array, thus defining valuesHStack and valuesVStack for sub-classes. """ - def __init__(self,description=None,field_types=None): - DataSet.__init__(self,description,field_types) - def valuesHStack(self,fieldnames,fieldvalues): + def __init__(self, description=None, field_types=None): + DataSet.__init__(self, description, field_types) + def valuesHStack(self, fieldnames, fieldvalues): """Concatenate field values horizontally, e.g. two vectors become a longer vector, two matrices become a wider matrix, etc.""" return numpy.hstack(fieldvalues) - def valuesVStack(self,fieldname,values): + def valuesVStack(self, fieldname, values): """Concatenate field values vertically, e.g. two vectors become a two-row matrix, two matrices become a longer matrix, etc.""" return numpy.vstack(values) + def valuesAppend(self, fieldname, values): + s0 = sum([v.shape[0] for v in values]) + #TODO: there's gotta be a better way to do this! + rval = numpy.ndarray([s0] + values[0].shape[1:],dtype=values[0].dtype) + cur_row = 0 + for v in values: + rval[cur_row:cur_row+v.shape[0]] = v + cur_row += v.shape[0] + return rval class ArrayDataSet(ArrayFieldsDataSet): """ @@ -987,7 +996,7 @@ for fieldname, fieldcolumns in self.fields_columns.items(): if type(fieldcolumns) is int: assert fieldcolumns>=0 and fieldcolumns<data_array.shape[1] - if 1: + if 0: #I changed this because it didn't make sense to me, # and it made it more difficult to write my learner. # If it breaks stuff, let's talk about it.