The EpochProcess loops over the set of Events in the Environment
(see section 11 Environments, Events, and Patterns). Each presentation of an event is known as a trial,
and this process typically has a TrialProcess as its
sub_proc
, although the situation is different when the
environment contains sequences of events (see section 12.6.1 Processes for Sequences of Events).
The epoch process is responsible for ordering the presentation of events
to the network. Thus, at the beginning of the epoch (when the process
is initialized), it tells the environment to initialize itself (using
InitEvents()
), and then obtains the total number of events in the
environment (using EventCount()
, see section 11.1 Environments). The epoch
process then makes a list of event indexes, which represents the order
in which events will be presented. Depending on the state of the
order
variable, this list will either remain sequential or be
randomized.
The epoch process is also responsible for determining when to update the
weights in the network, since this can usually be done either after each
event or at the end of the epoch (depending on the state of the
wt_update
variable). The epoch process itself calls the
UpdateWeights
function on the network, even when it is doing
updates after each event. Thus, lower-level processes should never call
this function themselves.
The following variables are on the EpochProcess:
Counter trial
Event* cur_event
GetEvent
function of the environment
(see section 11.1 Environments).
Order order
SEQUENTIAL
events
group).
PERMUTED
RANDOM
WtUpdate wt_update
TEST
ON_LINE
BATCH
SMALL_BATCH
batch_n
events. This allows an
intermediate level of batch mode learning which can be parameterized
independent of the number of events in the epoch.
int batch_n
wt_update
is SMALL_BATCH
.