pub struct ILoop { /* private fields */ }Expand description
! ! \class ILoop ! ! \brief Helper for creating a recurrent subgraph. ! ! An ILoop defines a loop within a network. It supports the implementation of recurrences, ! which are crucial for iterative computations, such as RNNs for natural language processing and ! time-series analysis. ! ! The subgraph may directly use tensors defined outside of the ILoop.
Implementations§
Source§impl ILoop
impl ILoop
Sourcepub fn addRecurrence(
self: Pin<&mut ILoop>,
initialValue: Pin<&mut ITensor>,
) -> *mut IRecurrenceLayer
pub fn addRecurrence( self: Pin<&mut ILoop>, initialValue: Pin<&mut ITensor>, ) -> *mut IRecurrenceLayer
! ! \brief Create a recurrence layer for this loop with initialValue as its first input. ! ! IRecurrenceLayer requires exactly two inputs. The 2nd input must be added, via method ! IRecurrenceLayer::setInput(1,…) before an Engine can be built. !
Sourcepub fn addTripLimit(
self: Pin<&mut ILoop>,
tensor: Pin<&mut ITensor>,
limit: TripLimit,
) -> *mut ITripLimitLayer
pub fn addTripLimit( self: Pin<&mut ILoop>, tensor: Pin<&mut ITensor>, limit: TripLimit, ) -> *mut ITripLimitLayer
! ! \brief Add a trip-count limiter, based on the given tensor. ! ! There may be at most one kCOUNT and one kWHILE limiter for a loop. ! When both trip limits exist, the loop exits when the ! count is reached or condition is falsified. ! It is an error to not add at least one trip limiter. ! ! For kCOUNT, the input tensor must be available before the loop starts. ! ! For kWHILE, the input tensor must be the output of a subgraph that contains ! only layers that are not ITripLimitLayer, IIteratorLayer or ILoopOutputLayer. ! Any IRecurrenceLayers in the subgraph must belong to the same loop as the ! ITripLimitLayer. A trivial example of this rule is that the input to the kWHILE ! is the output of an IRecurrenceLayer for the same loop. !
Sourcepub fn addIterator(
self: Pin<&mut ILoop>,
tensor: Pin<&mut ITensor>,
axis: i32,
reverse: bool,
) -> *mut IIteratorLayer
pub fn addIterator( self: Pin<&mut ILoop>, tensor: Pin<&mut ITensor>, axis: i32, reverse: bool, ) -> *mut IIteratorLayer
! ! \brief Return layer that subscripts tensor by loop iteration. ! ! For reverse=false, this is equivalent to addGather(tensor, I, 0) where I is a ! scalar tensor containing the loop iteration number. ! For reverse=true, this is equivalent to addGather(tensor, M-1-I, 0) where M is the trip count ! computed from TripLimits of kind kCOUNT. !
Sourcepub fn addLoopOutput(
self: Pin<&mut ILoop>,
tensor: Pin<&mut ITensor>,
outputKind: LoopOutput,
axis: i32,
) -> *mut ILoopOutputLayer
pub fn addLoopOutput( self: Pin<&mut ILoop>, tensor: Pin<&mut ITensor>, outputKind: LoopOutput, axis: i32, ) -> *mut ILoopOutputLayer
! ! \brief Make an output for this loop, based on the given tensor. ! ! axis is the axis for concatenation (if using outputKind of kCONCATENATE or kREVERSE). ! ! If outputKind is kCONCATENATE or kREVERSE, a second input specifying the ! concatenation dimension must be added via method ILoopOutputLayer::setInput. !
Sourcepub unsafe fn setName(self: Pin<&mut ILoop>, name: *const c_char)
pub unsafe fn setName(self: Pin<&mut ILoop>, name: *const c_char)
! ! \brief Set the name of the loop. ! ! The name is used in error diagnostics. ! This method copies the name string. ! ! \warning The string name must be null-terminated, and be at most 4096 bytes including the terminator. ! ! \see getName() !