Class: DNN::Layers::Connection
Overview
It is a superclass of all connection layers.
Instance Attribute Summary collapse
#params, #trainable
Instance Method Summary
collapse
#build, #update
Methods inherited from Layer
#backward, #build, #built?, #forward, #prev_layer, #shape
Constructor Details
#initialize(weight_initializer: Initializers::RandomNormal.new, bias_initializer: Initializers::Zeros.new, l1_lambda: 0, l2_lambda: 0) ⇒ Connection
117
118
119
120
121
122
123
124
125
126
127
128
|
# File 'lib/dnn/core/layers.rb', line 117
def initialize(weight_initializer: Initializers::RandomNormal.new,
bias_initializer: Initializers::Zeros.new,
l1_lambda: 0,
l2_lambda: 0)
super()
@weight_initializer = weight_initializer
@bias_initializer = bias_initializer
@l1_lambda = l1_lambda
@l2_lambda = l2_lambda
@params[:weight] = @weight = LearningParam.new
@params[:bias] = @bias = LearningParam.new
end
|
Instance Attribute Details
#l1_lambda ⇒ Object
114
115
116
|
# File 'lib/dnn/core/layers.rb', line 114
def l1_lambda
@l1_lambda
end
|
#l2_lambda ⇒ Object
115
116
117
|
# File 'lib/dnn/core/layers.rb', line 115
def l2_lambda
@l2_lambda
end
|
Instance Method Details
#dlasso ⇒ Object
146
147
148
149
150
|
# File 'lib/dnn/core/layers.rb', line 146
def dlasso
dlasso = Xumo::SFloat.ones(*@weight.data.shape)
dlasso[@weight.data < 0] = -1
@l1_lambda * dlasso
end
|
#dridge ⇒ Object
152
153
154
|
# File 'lib/dnn/core/layers.rb', line 152
def dridge
@l2_lambda * @weight.data
end
|
#lasso ⇒ Object
130
131
132
133
134
135
136
|
# File 'lib/dnn/core/layers.rb', line 130
def lasso
if @l1_lambda > 0
@l1_lambda * @weight.data.abs.sum
else
0
end
end
|
#ridge ⇒ Object
138
139
140
141
142
143
144
|
# File 'lib/dnn/core/layers.rb', line 138
def ridge
if @l2_lambda > 0
0.5 * @l2_lambda * (@weight.data**2).sum
else
0
end
end
|
#to_hash(merge_hash) ⇒ Object
156
157
158
159
160
161
|
# File 'lib/dnn/core/layers.rb', line 156
def to_hash(merge_hash)
super({weight_initializer: @weight_initializer.to_hash,
bias_initializer: @bias_initializer.to_hash,
l1_lambda: @l1_lambda,
l2_lambda: @l2_lambda}.merge(merge_hash))
end
|