Class: DNN::Optimizers::Optimizer
- Inherits:
-
Object
- Object
- DNN::Optimizers::Optimizer
- Defined in:
- lib/dnn/core/optimizers.rb
Overview
Super class of all optimizer classes.
Instance Attribute Summary collapse
-
#clip_norm ⇒ Object
Returns the value of attribute clip_norm.
-
#status ⇒ Object
readonly
Returns the value of attribute status.
Class Method Summary collapse
Instance Method Summary collapse
- #dump ⇒ Object
-
#initialize(clip_norm: nil) ⇒ Optimizer
constructor
A new instance of Optimizer.
- #to_hash(merge_hash = nil) ⇒ Object
-
#update(layers) ⇒ Object
Update layers has params.
Constructor Details
#initialize(clip_norm: nil) ⇒ Optimizer
Returns a new instance of Optimizer.
20 21 22 |
# File 'lib/dnn/core/optimizers.rb', line 20 def initialize(clip_norm: nil) @clip_norm = clip_norm end |
Instance Attribute Details
#clip_norm ⇒ Object
Returns the value of attribute clip_norm.
7 8 9 |
# File 'lib/dnn/core/optimizers.rb', line 7 def clip_norm @clip_norm end |
#status ⇒ Object (readonly)
Returns the value of attribute status.
6 7 8 |
# File 'lib/dnn/core/optimizers.rb', line 6 def status @status end |
Class Method Details
.load(dumped) ⇒ Object
9 10 11 12 13 14 15 16 17 |
# File 'lib/dnn/core/optimizers.rb', line 9 def self.load(dumped) opt = Utils.hash_to_obj(dumped[:hash]) dumped[:status].each do |key, state| state = state.clone opt.status[key] = state opt.instance_variable_set("@#{key}", state) end opt end |
Instance Method Details
#dump ⇒ Object
36 37 38 |
# File 'lib/dnn/core/optimizers.rb', line 36 def dump { hash: to_hash, status: @status } end |
#to_hash(merge_hash = nil) ⇒ Object
40 41 42 43 44 |
# File 'lib/dnn/core/optimizers.rb', line 40 def to_hash(merge_hash = nil) hash = { class: self.class.name, clip_norm: @clip_norm } hash.merge!(merge_hash) if merge_hash hash end |
#update(layers) ⇒ Object
Update layers has params.
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/dnn/core/optimizers.rb', line 25 def update(layers) target_params = layers.select { |layer| layer.is_a?(Layers::HasParamLayer) && layer.trainable } .map { |layer| layer.get_params.values }.flatten.compact .select { |param| param.grad } clip_grads(target_params) if @clip_norm update_params(target_params) target_params.each do |param| param.grad = Xumo::SFloat.zeros(*param.data.shape) end end |