class Chainer::Training::Triggers::IntervalTrigger
Attributes
count[R]
period[R]
unit[R]
Public Class Methods
new(period, unit)
click to toggle source
# File lib/chainer/training/triggers/interval.rb, line 7 def initialize(period, unit) @period = period @unit = unit @count = 0 @previous_iteration = 0 @previous_epoch_detail = 0.0 end
Public Instance Methods
call(trainer)
click to toggle source
Decides whether the extension should be called on this iteration.
@param [Chainer::Trainer] trainer Trainer
object that this trigger is associated with.
The updater associated with this trainer is used to determine if the trigger should fire.
@return [boolean] True if the corresponding extension should be invoked in this iteration.
# File lib/chainer/training/triggers/interval.rb, line 21 def call(trainer) updater = trainer.updater if @unit == 'epoch' epoch_detail = updater.epoch_detail previous_epoch_detail = @previous_epoch_detail if previous_epoch_detail < 0 previous_epoch_detail = updater.previous_epoch_detail end @count = epoch_detail.div(@period).floor fire = previous_epoch_detail.div(@period).floor != epoch_detail.div(@period).floor else iteration = updater.iteration previous_iteration = @previous_iteration if previous_iteration < 0 previous_iteration = iteration - 1 end fire = previous_iteration.div(@period).floor != iteration.div(@period).floor end # save current values @previous_iteration = updater.iteration @previous_epoch_detail = updater.epoch_detail fire end
serialize(serializer)
click to toggle source
# File lib/chainer/training/triggers/interval.rb, line 50 def serialize(serializer) @previous_iteration = serializer.('previous_iteration', @previous_iteration) @previous_epoch_detail = serializer.('previous_epoch_detail', @previous_epoch_detail) end