Class: GRX::NN::Sequential

Inherits:
Module
  • Object
show all
Defined in:
lib/grx/nn.rb

Overview

================================================================

Sequential — Chains layers sequentially in order

Instance Method Summary collapse

Methods inherited from Module

#call, #load_weights, #save_weights, #zero_grad

Constructor Details

#initialize(*layers) ⇒ Sequential

Returns a new instance of Sequential.



113
114
115
# File 'lib/grx/nn.rb', line 113

def initialize(*layers)
  @layers = layers
end

Instance Method Details

#eval!Object



130
131
132
133
# File 'lib/grx/nn.rb', line 130

def eval!
  @layers.each { |l| l.eval! if l.respond_to?(:eval!) }
  self
end

#forward(x) ⇒ Object



117
118
119
# File 'lib/grx/nn.rb', line 117

def forward(x)
  @layers.reduce(x) { |input, layer| layer.call(input) }
end

#parametersObject



121
122
123
# File 'lib/grx/nn.rb', line 121

def parameters
  @layers.flat_map(&:parameters)
end

#to_sObject



135
136
137
138
# File 'lib/grx/nn.rb', line 135

def to_s
  layers_str = @layers.each_with_index.map { |l, i| "  (#{i}): #{l}" }.join("\n")
  "Sequential(\n#{layers_str}\n)"
end

#train!Object



125
126
127
128
# File 'lib/grx/nn.rb', line 125

def train!
  @layers.each { |l| l.train! if l.respond_to?(:train!) }
  self
end