Package org.nd4j.linalg.dataset
Class AsyncDataSetIterator
- java.lang.Object
-
- org.nd4j.linalg.dataset.AsyncDataSetIterator
-
- All Implemented Interfaces:
Serializable,Iterator<DataSet>,DataSetIterator
public class AsyncDataSetIterator extends Object implements DataSetIterator
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classAsyncDataSetIterator.AsyncPrefetchThread
-
Field Summary
Fields Modifier and Type Field Description protected DataSetIteratorbackedIteratorprotected BlockingQueue<DataSet>bufferprotected DataSetCallbackcallbackprotected IntegerdeviceIdprotected AtomicBooleanhasDepletedprotected DataSetnextElementprotected intprefetchSizeprotected AtomicBooleanshouldWorkprotected DataSetterminatorprotected AsyncDataSetIterator.AsyncPrefetchThreadthreadprotected RuntimeExceptionthrowableprotected booleanuseWorkspaceprotected StringworkspaceId
-
Constructor Summary
Constructors Modifier Constructor Description protectedAsyncDataSetIterator()AsyncDataSetIterator(DataSetIterator baseIterator)Create an Async iterator with the default queue size of 8AsyncDataSetIterator(DataSetIterator baseIterator, int queueSize)AsyncDataSetIterator(DataSetIterator baseIterator, int queueSize, boolean useWorkspace)AsyncDataSetIterator(DataSetIterator baseIterator, int queueSize, boolean useWorkspace, Integer deviceId)AsyncDataSetIterator(DataSetIterator baseIterator, int queueSize, boolean useWorkspace, DataSetCallback callback)AsyncDataSetIterator(DataSetIterator iterator, int queueSize, BlockingQueue<DataSet> queue)Create an Async iterator with the default queue size of 8AsyncDataSetIterator(DataSetIterator iterator, int queueSize, BlockingQueue<DataSet> queue, boolean useWorkspace)AsyncDataSetIterator(DataSetIterator iterator, int queueSize, BlockingQueue<DataSet> queue, boolean useWorkspace, DataSetCallback callback)AsyncDataSetIterator(DataSetIterator iterator, int queueSize, BlockingQueue<DataSet> queue, boolean useWorkspace, DataSetCallback callback, Integer deviceId)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanasyncSupported()Does this DataSetIterator support asynchronous prefetching of multiple DataSet objects? Most DataSetIterators do, but in some cases it may not make sense to wrap this iterator in an iterator that does asynchronous prefetching.intbatch()Batch sizeprotected voidexternalCall()List<String>getLabels()Get dataset iterator record reader labelsDataSetPreProcessorgetPreProcessor()Returns preprocessors, if definedbooleanhasNext()Returnstrueif the iteration has more elements.intinputColumns()Input columns for the datasetDataSetnext()Returns the next element in the iteration.DataSetnext(int num)Like the standard next method but allows a customizable number of examples returnedvoidremove()Removes from the underlying collection the last element returned by this iterator (optional operation).voidreset()Resets the iterator back to the beginningbooleanresetSupported()Is resetting supported by this DataSetIterator? Many DataSetIterators do support resetting, but some don'tvoidsetPreProcessor(DataSetPreProcessor preProcessor)Set a pre processorvoidshutdown()This method will terminate background thread AND will destroy attached workspace (if any) PLEASE NOTE: After shutdown() call, this instance can't be used anymoreinttotalOutcomes()The number of labels for the dataset-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.util.Iterator
forEachRemaining
-
-
-
-
Field Detail
-
backedIterator
protected DataSetIterator backedIterator
-
terminator
protected DataSet terminator
-
nextElement
protected DataSet nextElement
-
buffer
protected BlockingQueue<DataSet> buffer
-
thread
protected AsyncDataSetIterator.AsyncPrefetchThread thread
-
shouldWork
protected AtomicBoolean shouldWork
-
throwable
protected volatile RuntimeException throwable
-
useWorkspace
protected boolean useWorkspace
-
prefetchSize
protected int prefetchSize
-
workspaceId
protected String workspaceId
-
deviceId
protected Integer deviceId
-
hasDepleted
protected AtomicBoolean hasDepleted
-
callback
protected DataSetCallback callback
-
-
Constructor Detail
-
AsyncDataSetIterator
protected AsyncDataSetIterator()
-
AsyncDataSetIterator
public AsyncDataSetIterator(DataSetIterator baseIterator)
Create an Async iterator with the default queue size of 8- Parameters:
baseIterator- Underlying iterator to wrap and fetch asynchronously from
-
AsyncDataSetIterator
public AsyncDataSetIterator(DataSetIterator iterator, int queueSize, BlockingQueue<DataSet> queue)
Create an Async iterator with the default queue size of 8- Parameters:
iterator- Underlying iterator to wrap and fetch asynchronously fromqueue- Queue size - number of iterators to
-
AsyncDataSetIterator
public AsyncDataSetIterator(DataSetIterator baseIterator, int queueSize)
-
AsyncDataSetIterator
public AsyncDataSetIterator(DataSetIterator baseIterator, int queueSize, boolean useWorkspace)
-
AsyncDataSetIterator
public AsyncDataSetIterator(DataSetIterator baseIterator, int queueSize, boolean useWorkspace, Integer deviceId)
-
AsyncDataSetIterator
public AsyncDataSetIterator(DataSetIterator baseIterator, int queueSize, boolean useWorkspace, DataSetCallback callback)
-
AsyncDataSetIterator
public AsyncDataSetIterator(DataSetIterator iterator, int queueSize, BlockingQueue<DataSet> queue, boolean useWorkspace)
-
AsyncDataSetIterator
public AsyncDataSetIterator(DataSetIterator iterator, int queueSize, BlockingQueue<DataSet> queue, boolean useWorkspace, DataSetCallback callback)
-
AsyncDataSetIterator
public AsyncDataSetIterator(DataSetIterator iterator, int queueSize, BlockingQueue<DataSet> queue, boolean useWorkspace, DataSetCallback callback, Integer deviceId)
-
-
Method Detail
-
next
public DataSet next(int num)
Like the standard next method but allows a customizable number of examples returned- Specified by:
nextin interfaceDataSetIterator- Parameters:
num- the number of examples- Returns:
- the next data applyTransformToDestination
-
inputColumns
public int inputColumns()
Input columns for the dataset- Specified by:
inputColumnsin interfaceDataSetIterator- Returns:
-
totalOutcomes
public int totalOutcomes()
The number of labels for the dataset- Specified by:
totalOutcomesin interfaceDataSetIterator- Returns:
-
resetSupported
public boolean resetSupported()
Is resetting supported by this DataSetIterator? Many DataSetIterators do support resetting, but some don't- Specified by:
resetSupportedin interfaceDataSetIterator- Returns:
- true if reset method is supported; false otherwise
-
asyncSupported
public boolean asyncSupported()
Does this DataSetIterator support asynchronous prefetching of multiple DataSet objects? Most DataSetIterators do, but in some cases it may not make sense to wrap this iterator in an iterator that does asynchronous prefetching. For example, it would not make sense to use asynchronous prefetching for the following types of iterators: (a) Iterators that store their full contents in memory already (b) Iterators that re-use features/labels arrays (as future next() calls will overwrite past contents) (c) Iterators that already implement some level of asynchronous prefetching (d) Iterators that may return different data depending on when the next() method is called- Specified by:
asyncSupportedin interfaceDataSetIterator- Returns:
- true if asynchronous prefetching from this iterator is OK; false if asynchronous prefetching should not be used with this iterator
-
externalCall
protected void externalCall()
-
reset
public void reset()
Resets the iterator back to the beginning- Specified by:
resetin interfaceDataSetIterator
-
shutdown
public void shutdown()
This method will terminate background thread AND will destroy attached workspace (if any) PLEASE NOTE: After shutdown() call, this instance can't be used anymore
-
batch
public int batch()
Batch size- Specified by:
batchin interfaceDataSetIterator- Returns:
-
setPreProcessor
public void setPreProcessor(DataSetPreProcessor preProcessor)
Set a pre processor- Specified by:
setPreProcessorin interfaceDataSetIterator- Parameters:
preProcessor- a pre processor to set
-
getPreProcessor
public DataSetPreProcessor getPreProcessor()
Returns preprocessors, if defined- Specified by:
getPreProcessorin interfaceDataSetIterator- Returns:
-
getLabels
public List<String> getLabels()
Get dataset iterator record reader labels- Specified by:
getLabelsin interfaceDataSetIterator
-
hasNext
public boolean hasNext()
Returnstrueif the iteration has more elements. (In other words, returnstrueifnext(int)would return an element rather than throwing an exception.)
-
next
public DataSet next()
Returns the next element in the iteration.
-
remove
public void remove()
Removes from the underlying collection the last element returned by this iterator (optional operation). This method can be called only once per call tonext(int). The behavior of an iterator is unspecified if the underlying collection is modified while the iteration is in progress in any way other than by calling this method.- Specified by:
removein interfaceIterator<DataSet>- Throws:
UnsupportedOperationException- if theremoveoperation is not supported by this iteratorIllegalStateException- if thenextmethod has not yet been called, or theremovemethod has already been called after the last call to thenextmethod
-
-