The RBpSequence process is a special SequenceProcess that knows
how to appropriately treat sequences of events that have time values
associated with them. The classes TimeEnvironment,
TimeEvent_MGroup, and TimeEvent together define an environment
which consists of sequences (groups) of events where each event is
specified to occur at a particular time. Furthermore, the environment
defines certain simple forms of interpolation, which allows trajectories
to be formed by specifying crucial points on the trajectory, but not
everything in between. Also, the RBpSequence process uses the
end_time
of the TimeEvent_MGroup to set the time_window
of the trial process, so that exactly one backprop phase will happen per
sequence.
If a TimeEnvironment is not being used, a RBpSequence will
simply run the sequence of events in each event group, one by one,
through the trial process. This would make each event in the sequence
appear at tick-wise intervals (i.e., every dt
). In contrast, the
TimeEnvironment based events have the benefit of making the
environment invariant with respect to changes in dt
, which can be
very useful when dt
is changed during training, etc.
A TimeEnvironment, aside from setting the default types of events and event groups to also be time-based ones, has a default interpolation parameter:
Interpolate interpolate
PUNCTATE
CONSTANT
LINEAR
As with all sequence-based environments (see section 11.3 Representing Sequences of Events), a sequence of events is defined by putting all the events in a subgroup. TimeEvents should be put in subgroups of type TimeEvent_MGroup, which is where the specific form of interpolation to be used for this particular sequence, and the total duration of the sequence, are specified:
Interpolate interpolate
USE_ENVIRO
option, which uses whatever is set on
the environment object. Thus, one can have different sequences use
different kinds of interpolation, or they can defer to the environment.
float end_time
CONSTANT
interpolation to hold onto the event
until end_time
has been reached.
The time event object is just like a regular event except that it adds a time field, which specifies when this event is to first be presented to the network. How long it is presented depends on the interpolation scheme and how soon another event follows it.