Class: RubyZero::NN::Layers::Affine

Inherits:
Layer show all
Defined in:
lib/rubyzero/nn/layers/affine.rb

Overview

Affine layer

Direct Known Subclasses

Embedding

Instance Method Summary collapse

Methods inherited from Model

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

Constructor Details

#initialize(input_size, output_size, bias: true) ⇒ Affine

Returns a new instance of Affine.

Parameters:

  • input_size (Integer)

    input size

  • output_size (Integer)

    output size

  • bias (Boolean) (defaults to: true)

    whether to use bias



7
8
9
10
# File 'lib/rubyzero/nn/layers/affine.rb', line 7

def initialize(input_size, output_size, bias: true)
    @weight = RubyZero::Float32.randn([input_size, output_size])
    @bias = RubyZero::Float32.randn([output_size]) if bias
end

Instance Method Details

#forward(x) ⇒ RubyZero::Float32

Forward pass

Parameters:

Returns:



14
15
16
17
18
19
# File 'lib/rubyzero/nn/layers/affine.rb', line 14

def forward(x)
    x = x.dot(@weight)
    if @bias
        x += @bias.repeat(x.shape[0], axis: 0)
    end
end