Class: Chainer::Links::Connection::Linear

Inherits:
Chainer::Link show all
Defined in:
lib/chainer/links/connection/linear.rb

Instance Attribute Summary collapse

Attributes inherited from Chainer::Link

#name

Instance Method Summary collapse

Methods inherited from Chainer::Link

#cleargrads, #del_attr, #init_scope, #namedlinks, #namedparams, #params, #register_persistent, #serialize, #set_attr, #within_init_scope

Constructor Details

#initialize(in_size, out_size: nil, nobias: false, initial_w: nil, initial_bias: nil) ⇒ Linear

Returns a new instance of Linear.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 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

Instance Attribute Details

#bObject (readonly)

Returns the value of attribute b.



5
6
7
# File 'lib/chainer/links/connection/linear.rb', line 5

def b
  @b
end

#wObject (readonly)

Returns the value of attribute w.



5
6
7
# File 'lib/chainer/links/connection/linear.rb', line 5

def w
  @w
end

Instance Method Details

#call(x) ⇒ Object



28
29
30
31
32
33
# 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