ab.util

Package helper utilities.

aboleth.util.batch(feed_dict, batch_size, n_iter=10000, N_=None)

Create random batches for Stochastic gradients.

Feed dict data generator for SGD that will yeild random batches for a a defined number of iterations, which can be infinite. This generator makes consecutive passes through the data, drawing without replacement on each pass.

Parameters:
  • feed_dict (dict of ndarrays) – The data with {tf.placeholder: data} entries. This assumes all items have the same length!
  • batch_size (int) – number of data points in each batch.
  • n_iter (int, optional) – The number of iterations
  • N (tf.placeholder (int), optional) – Place holder for the size of the dataset. This will be fed to an algorithm.
Yields:

dict – with each element an array length batch_size, i.e. a subset of data, and an element for N_. Use this as your feed-dict when evaluating a loss, training, etc.

aboleth.util.batch_prediction(feed_dict, batch_size)

Split the data in a feed_dict into contiguous batches for prediction.

Parameters:
  • feed_dict (dict of ndarrays) – The data with {tf.placeholder: data} entries. This assumes all items have the same length!
  • batch_size (int) – number of data points in each batch.
Yields:
  • ndarray – an array of shape approximately (batch_size,) of indices into the original data for the current batch
  • dict – with each element an array length batch_size, i.e. a subset of data. Use this as your feed-dict when evaluating a model, prediction, etc.

Note

The exact size of the batch may not be batch_size, but the nearest size that splits the size of the data most evenly.

aboleth.util.pos(X, minval=1e-15)

Constrain a tf.Variable to be positive only.

At the moment this is implemented as:

\(\max(|\mathbf{X}|, \text{minval})\)

This is fast and does not result in vanishing gradients, but will lead to non-smooth gradients and more local minima. In practice we haven’t noticed this being a problem.

Parameters:
  • X (Tensor) – any Tensor in which all elements will be made positive.
  • minval (float) – the minimum “positive” value the resulting tensor will have.
Returns:

X – a tensor the same shape as the input X but positively constrained.

Return type:

Tensor

Examples

>>> X = tf.constant(np.array([1.0, -1.0, 0.0]))
>>> Xp = pos(X)
>>> with tf.Session():
...     xp = Xp.eval()
>>> xp
array([  1.00000000e+00,   1.00000000e+00,   1.00000000e-15])