Class: RubyZero::NN::Layers::MultiLayerPerceptron

Inherits:
ModelStack show all
Defined in:
lib/rubyzero/nn/layers/multi_layer_perceptron.rb

Instance Method Summary collapse

Methods inherited from ModelStack

#<<, #forward

Methods inherited from ModelList

#+, #<<, #__get_str__, #each, #elements, #parameters

Methods inherited from Model

#__get_str__, #call, #eval, #forward, #inspect, load, #parameters, #save, #train

Constructor Details

#initialize(*dims, activation: RubyZero::NN::Layers::ReLU) ⇒ MultiLayerPerceptron

Note:
5, 3

-> 5 inputs, 3 outputs

5, 3, 2

-> 5 inputs, 3 hidden, 2 outputs

Returns a new instance of MultiLayerPerceptron.

Parameters:

  • opts (Hash)

    a customizable set of options



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/rubyzero/nn/layers/multi_layer_perceptron.rb', line 8

def initialize(*dims, activation: RubyZero::NN::Layers::ReLU)
    super()
    if dims.length < 2
        raise ArgumentError, "Layer must have at least 2 dimensions"
    end
    @dims = dims
    @activation_function = activation

    (@dims.size-1).times do |i|
        dim_i = @dims[i]
        dim_o = @dims[i+1]
        @models << RubyZero::NN::Layers::Affine.new(dim_i, dim_o)
        if i != @dims.size-2
            @models << activation.new
        end
    end
end