Class: DNN::Layers::Connection
- Inherits:
-
HasParamLayer
- Object
- Layer
- HasParamLayer
- DNN::Layers::Connection
- Defined in:
- lib/dnn/core/layers.rb
Overview
It is a superclass of all connection layers.
Instance Attribute Summary collapse
-
#bias_initializer ⇒ Object
readonly
Returns the value of attribute bias_initializer.
-
#l1_lambda ⇒ Object
readonly
L1 regularization.
-
#l2_lambda ⇒ Object
readonly
L2 regularization.
-
#weight_initializer ⇒ Object
readonly
Returns the value of attribute weight_initializer.
Attributes inherited from HasParamLayer
Attributes inherited from Layer
Instance Method Summary collapse
- #d_lasso ⇒ Object
- #d_ridge ⇒ Object
-
#initialize(weight_initializer: Initializers::RandomNormal.new, bias_initializer: Initializers::Zeros.new, l1_lambda: 0, l2_lambda: 0) ⇒ Connection
constructor
A new instance of Connection.
- #lasso ⇒ Object
- #ridge ⇒ Object
- #to_hash(merge_hash) ⇒ Object
Methods inherited from HasParamLayer
Methods inherited from Layer
#backward, #build, #built?, #forward, #output_shape
Constructor Details
#initialize(weight_initializer: Initializers::RandomNormal.new, bias_initializer: Initializers::Zeros.new, l1_lambda: 0, l2_lambda: 0) ⇒ Connection
Returns a new instance of Connection.
115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/dnn/core/layers.rb', line 115 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 = Param.new @params[:bias] = @bias = Param.new end |
Instance Attribute Details
#bias_initializer ⇒ Object (readonly)
Returns the value of attribute bias_initializer.
113 114 115 |
# File 'lib/dnn/core/layers.rb', line 113 def bias_initializer @bias_initializer end |
#l1_lambda ⇒ Object (readonly)
L1 regularization
110 111 112 |
# File 'lib/dnn/core/layers.rb', line 110 def l1_lambda @l1_lambda end |
#l2_lambda ⇒ Object (readonly)
L2 regularization
111 112 113 |
# File 'lib/dnn/core/layers.rb', line 111 def l2_lambda @l2_lambda end |
#weight_initializer ⇒ Object (readonly)
Returns the value of attribute weight_initializer.
112 113 114 |
# File 'lib/dnn/core/layers.rb', line 112 def weight_initializer @weight_initializer end |
Instance Method Details
#d_lasso ⇒ Object
144 145 146 147 148 149 150 |
# File 'lib/dnn/core/layers.rb', line 144 def d_lasso if @l1_lambda > 0 dlasso = Xumo::SFloat.ones(*@weight.data.shape) dlasso[@weight.data < 0] = -1 @weight.grad += @l1_lambda * dlasso end end |
#d_ridge ⇒ Object
152 153 154 155 156 |
# File 'lib/dnn/core/layers.rb', line 152 def d_ridge if @l2_lambda > 0 @weight.grad += @l2_lambda * @weight.data end end |
#lasso ⇒ Object
128 129 130 131 132 133 134 |
# File 'lib/dnn/core/layers.rb', line 128 def lasso if @l1_lambda > 0 @l1_lambda * @weight.data.abs.sum else 0 end end |
#ridge ⇒ Object
136 137 138 139 140 141 142 |
# File 'lib/dnn/core/layers.rb', line 136 def ridge if @l2_lambda > 0 0.5 * @l2_lambda * (@weight.data**2).sum else 0 end end |
#to_hash(merge_hash) ⇒ Object
158 159 160 161 162 163 |
# File 'lib/dnn/core/layers.rb', line 158 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 |