class Chainer::Links::Connection::Linear

Attributes

b[R]
w[R]

Public Class Methods

new(in_size, out_size: nil, nobias: false, initial_w: nil, initial_bias: nil) click to toggle source
Calls superclass method Chainer::Link::new
# File lib/chainer/links/connection/linear.rb, line 7
def initialize(in_size, out_size: nil, nobias: false, initial_w: nil, initial_bias: nil)
  super()
  in_size, out_size = nil, in_size if out_size.nil?
  @out_size = out_size

  init_scope do
    w_initializer = Chainer::Initializers.get_initializer(initial_w)
    @w = Chainer::Parameter.new(initializer: w_initializer)
    
    initialize_params(in_size) unless in_size.nil?
    
    if nobias
      @b = nil
    else
      initial_bias = 0 if initial_bias.nil?
      bias_initializer = Chainer::Initializers.get_initializer(initial_bias)
      @b = Chainer::Parameter.new(initializer: bias_initializer, shape: out_size)
    end
  end
end

Public Instance Methods

call(x) click to toggle source
# File lib/chainer/links/connection/linear.rb, line 28
def call(x)
  if @w.data.nil?
    initialize_params(x.size.div(x.shape[0]))
  end
  Chainer::Functions::Connection::LinearFunction.linear(x, @w, @b)
end

Private Instance Methods

initialize_params(in_size) click to toggle source
# File lib/chainer/links/connection/linear.rb, line 37
def initialize_params(in_size)
  @w.init([@out_size, in_size])
end