def __init__( self, data, batch_size=128, dtype=None, broadcastable=None, name="Minibatch", random_seed=42, update_shared_f=None, in_memory_size=None, ): if dtype is None: data = pm.smartfloatX(np.asarray(data)) else: data = np.asarray(data, dtype) in_memory_slc = self.make_static_slices(in_memory_size) self.shared = theano.shared(data[in_memory_slc]) self.update_shared_f = update_shared_f self.random_slc = self.make_random_slices(self.shared.shape, batch_size, random_seed) minibatch = self.shared[self.random_slc] if broadcastable is None: broadcastable = (False, ) * minibatch.ndim minibatch = tt.patternbroadcast(minibatch, broadcastable) self.minibatch = minibatch super().__init__(self.minibatch.type, None, None, name=name) theano.Apply(theano.compile.view_op, inputs=[self.minibatch], outputs=[self]) self.tag.test_value = copy(self.minibatch.tag.test_value)
def __init__(self, generator): if not pm.vartypes.isgenerator(generator): raise TypeError("Object should be generator like") self.test_value = pm.smartfloatX(copy(next(generator))) # make pickling potentially possible self._yielded_test_value = False self.gen = generator self.tensortype = TensorType(self.test_value.dtype, ((False,) * self.test_value.ndim))
def __init__(self, generator): if not pm.vartypes.isgenerator(generator): raise TypeError('Object should be generator like') self.test_value = pm.smartfloatX(copy(next(generator))) # make pickling potentially possible self._yielded_test_value = False self.gen = generator self.tensortype = tt.TensorType( self.test_value.dtype, ((False, ) * self.test_value.ndim))
def pandas_to_array(data): if hasattr(data, 'values'): # pandas if data.isnull().any().any(): # missing values ret = np.ma.MaskedArray(data.values, data.isnull().values) else: ret = data.values elif hasattr(data, 'mask'): ret = data elif isinstance(data, theano.gof.graph.Variable): ret = data elif sps.issparse(data): ret = data elif isgenerator(data): ret = generator(data) else: ret = np.asarray(data) return pm.smartfloatX(ret)
def pandas_to_array(data): if hasattr(data, 'values'): # pandas if data.isnull().any().any(): # missing values ret = np.ma.MaskedArray(data.values, data.isnull().values) else: ret = data.values elif hasattr(data, 'mask'): ret = data elif isinstance(data, theano.gof.graph.Variable): ret = data elif sps.issparse(data): ret = data elif isgenerator(data): ret = generator(data) else: ret = np.asarray(data) return pm.smartfloatX(ret)
def __init__(self, data, batch_size=128, dtype=None, broadcastable=None, name='Minibatch', random_seed=42, update_shared_f=None, in_memory_size=None): if dtype is None: data = pm.smartfloatX(np.asarray(data)) else: data = np.asarray(data, dtype) in_memory_slc = self.make_static_slices(in_memory_size) self.shared = theano.shared(data[in_memory_slc]) self.update_shared_f = update_shared_f self.random_slc = self.make_random_slices(self.shared.shape, batch_size, random_seed) minibatch = self.shared[self.random_slc] if broadcastable is None: broadcastable = (False, ) * minibatch.ndim minibatch = tt.patternbroadcast(minibatch, broadcastable) self.minibatch = minibatch super().__init__(self.minibatch.type, None, None, name=name) theano.Apply( theano.compile.view_op, inputs=[self.minibatch], outputs=[self]) self.tag.test_value = copy(self.minibatch.tag.test_value)
def __next__(self): if not self._yielded_test_value: self._yielded_test_value = True return self.test_value else: return pm.smartfloatX(copy(next(self.gen)))
def __next__(self): if not self._yielded_test_value: self._yielded_test_value = True return self.test_value else: return pm.smartfloatX(copy(next(self.gen)))