ruby-dnn 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/API-Reference.ja.md +702 -0
- data/lib/dnn/core/layers.rb +4 -1
- data/lib/dnn/core/model.rb +3 -0
- data/lib/dnn/core/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d462153bdd72ecf6df60f2d6bc6922ee76f3fd1318f03d33e644c91fe0b1881e
|
4
|
+
data.tar.gz: 3ba2d911fbb994f18aa1bf9bb389e1c50fd31c10c5e1dcded5c9f4567b7e35ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f06a8bc128241b4e50c72ccc9e7a72944b705991d6f52b65a1276042f78bfd50d19cd8f971a717fdb3699b7bb93bc136fc44f24b4202f2aff9f98f295e20198f
|
7
|
+
data.tar.gz: 2e115414aab91238cc1ad46255c5ca407bbcb786a41d12626671d4e8cb9a93d34a455a23d41ab2bf90d52e9c5a4a10e51a6686a240cc5fd642028e5111167c8c
|
data/API-Reference.ja.md
ADDED
@@ -0,0 +1,702 @@
|
|
1
|
+
## ruby-dnnのAPIリファレンスです。
|
2
|
+
|
3
|
+
# module DNN
|
4
|
+
ruby-dnnの名前空間をなすモジュールです。
|
5
|
+
|
6
|
+
|
7
|
+
# class Model
|
8
|
+
ニューラルネットワークのモデルを作成するクラスです。
|
9
|
+
|
10
|
+
## 【Singleton methods】
|
11
|
+
|
12
|
+
## def self.load(file_name)
|
13
|
+
marshalファイルを読み込み、モデルを作成します。
|
14
|
+
### arguments
|
15
|
+
* String file_name
|
16
|
+
読み込むmarshalファイル名。
|
17
|
+
### return
|
18
|
+
なし。
|
19
|
+
|
20
|
+
## 【Instance methods】
|
21
|
+
|
22
|
+
## def initialize
|
23
|
+
コンストラクタ。
|
24
|
+
### arguments
|
25
|
+
なし。
|
26
|
+
|
27
|
+
## def save(file_name)
|
28
|
+
モデルをmarshalファイルに保存します。
|
29
|
+
### arguments
|
30
|
+
* String file_name
|
31
|
+
書き込むファイル名。
|
32
|
+
### return
|
33
|
+
なし。
|
34
|
+
|
35
|
+
## def <<(layer)
|
36
|
+
モデルにレイヤーを追加します。
|
37
|
+
### arguments
|
38
|
+
* Layer layer
|
39
|
+
追加するレイヤー。
|
40
|
+
### return
|
41
|
+
Model
|
42
|
+
自身のモデルのインスタンス。
|
43
|
+
|
44
|
+
## def compile(optimizer)
|
45
|
+
モデルをコンパイルします。
|
46
|
+
### arguments
|
47
|
+
* Optimizer optimizer
|
48
|
+
モデルが学習に使用するオプティマイザー。
|
49
|
+
### return
|
50
|
+
なし。
|
51
|
+
|
52
|
+
## def train(x, y, epochs, batch_size: 1, batch_proc: nil, verbose: true, &epoch_proc)
|
53
|
+
コンパイルしたモデルを用いて学習を行います。
|
54
|
+
### arguments
|
55
|
+
* SFloat x
|
56
|
+
トレーニング用入力データ。
|
57
|
+
* SFloat y
|
58
|
+
トレーニング用出力データ。
|
59
|
+
* epochs
|
60
|
+
学習回数。
|
61
|
+
* Integer batch_size: 1
|
62
|
+
学習に使用するミニバッチの数。
|
63
|
+
* Proc batch_proc: nil
|
64
|
+
一度のバッチ学習が行われる前に呼び出されるprocを登録します。
|
65
|
+
* bool verbose: true
|
66
|
+
trueを設定すると、学習ログを出力します。
|
67
|
+
### block
|
68
|
+
epoch_proc
|
69
|
+
1エポックの学習が終了するたびに呼び出されます。
|
70
|
+
### return
|
71
|
+
なし。
|
72
|
+
|
73
|
+
## def train_on_batch
|
74
|
+
入力されたバッチデータをもとに、一度だけ学習を行います。
|
75
|
+
### arguments
|
76
|
+
* SFloat x
|
77
|
+
トレーニング用入力バッチデータ。
|
78
|
+
* SFloat y
|
79
|
+
トレーニング用出力バッチデータ。
|
80
|
+
* Integer batch_size
|
81
|
+
学習に使用するミニバッチの数。
|
82
|
+
### block
|
83
|
+
一度のバッチ学習が行われる前に呼び出されます。
|
84
|
+
### return
|
85
|
+
Integer
|
86
|
+
損失関数の値を返します。
|
87
|
+
|
88
|
+
## def test(x, y, batch_size = nil, &batch_proc)
|
89
|
+
学習結果をもとにテストを行います。
|
90
|
+
### arguments
|
91
|
+
* SFloat x
|
92
|
+
テスト用入力データ。
|
93
|
+
* SFloat y
|
94
|
+
テスト用出力データ。
|
95
|
+
* batch_size
|
96
|
+
ミニバッチの数。学習を行っていないモデルのテストを行いたい場合等に使用します。
|
97
|
+
### block
|
98
|
+
一度のバッチ学習が行われる前に呼び出されます。
|
99
|
+
### return
|
100
|
+
Float
|
101
|
+
テスト結果の認識率を返します。
|
102
|
+
|
103
|
+
## def accurate(x, y, batch_size = nil, &batch_proc)
|
104
|
+
学習結果をもとに認識を返します。
|
105
|
+
### arguments
|
106
|
+
* SFloat x
|
107
|
+
テスト用入力データ。
|
108
|
+
* SFloat y
|
109
|
+
テスト用出力データ。
|
110
|
+
* batch_size
|
111
|
+
ミニバッチの数。学習を行っていないモデルのテストを行いたい場合等に使用します。
|
112
|
+
### block
|
113
|
+
一度のバッチ学習が行われる前に呼び出されます。
|
114
|
+
### return
|
115
|
+
Float
|
116
|
+
テスト結果の認識率を返します。
|
117
|
+
|
118
|
+
## def predict(x)
|
119
|
+
モデルを使用して、結果の推論を行います。
|
120
|
+
### arguments
|
121
|
+
* SFloat x
|
122
|
+
推論用入力データ。
|
123
|
+
### return
|
124
|
+
SFloat
|
125
|
+
推論結果を返します。
|
126
|
+
|
127
|
+
|
128
|
+
# module Layers
|
129
|
+
レイヤーの名前空間をなすモジュールです。
|
130
|
+
|
131
|
+
|
132
|
+
# class Layer
|
133
|
+
全てのレイヤーのスーパークラスです。
|
134
|
+
|
135
|
+
## 【Instance methods】
|
136
|
+
|
137
|
+
## def init(model)
|
138
|
+
モデルのコンパイル時に、レイヤーを初期化するために使用されます。
|
139
|
+
### arguments
|
140
|
+
* Model model
|
141
|
+
レイヤーを持つモデルを登録します。
|
142
|
+
### return
|
143
|
+
なし。
|
144
|
+
|
145
|
+
## abstruct def forward(x)
|
146
|
+
順方向伝搬を行うメソッドです。Layerクラスを継承するクラスは、このメソッドを実装する必要があります。
|
147
|
+
### arguments
|
148
|
+
* SFloat x
|
149
|
+
入力データ。
|
150
|
+
### return
|
151
|
+
SFloat
|
152
|
+
出力データ。
|
153
|
+
|
154
|
+
## abstruct def backward(dout)
|
155
|
+
逆方向伝搬を行うメソッドです。Layerクラスを継承するクラスは、このメソッドを実装する必要があります。
|
156
|
+
### arguments
|
157
|
+
* SFloat dout
|
158
|
+
逆方向から伝搬してきた微分値。
|
159
|
+
### return
|
160
|
+
SFloat
|
161
|
+
逆方向に伝搬する微分値。
|
162
|
+
|
163
|
+
## def shape
|
164
|
+
レイヤーの形状を取得するメソッドです。
|
165
|
+
### arguments
|
166
|
+
なし。
|
167
|
+
### return
|
168
|
+
Array
|
169
|
+
レイヤーの形状。Layerクラスのshapeメソッドでは、前レイヤーの形状を返却します。
|
170
|
+
|
171
|
+
## def prev_layer
|
172
|
+
前のレイヤーを取得します。
|
173
|
+
### arguments
|
174
|
+
なし。
|
175
|
+
### return
|
176
|
+
Layer
|
177
|
+
前のレイヤー。
|
178
|
+
|
179
|
+
|
180
|
+
# class HasParamLayer < Layer
|
181
|
+
学習可能なパラメータを持つ全てのレイヤーのスーパークラスです。
|
182
|
+
|
183
|
+
## 【Instance methods】
|
184
|
+
## def initialize
|
185
|
+
コンストラクタ
|
186
|
+
### arguments
|
187
|
+
なし。
|
188
|
+
|
189
|
+
## override def init(model)
|
190
|
+
Layerクラスからオーバーライドされたメソッドです。
|
191
|
+
init_paramの呼び出しを行います。
|
192
|
+
|
193
|
+
## def update
|
194
|
+
オプティマイザーを用いてパラメータの更新を行います。
|
195
|
+
### arguments
|
196
|
+
なし。
|
197
|
+
### return
|
198
|
+
なし。
|
199
|
+
|
200
|
+
## private abstruct def init_params
|
201
|
+
更新可能なパラメータを初期化します。HasParamLayerクラスを継承するクラスは、このメソッドを実装する必要があります。
|
202
|
+
### arguments
|
203
|
+
なし。
|
204
|
+
### return
|
205
|
+
なし。
|
206
|
+
|
207
|
+
|
208
|
+
# class InputLayer < Layer
|
209
|
+
入力層に該当するレイヤーです。モデルの先頭レイヤーは、必ずこのクラスのインスタンスでなければなりません。
|
210
|
+
|
211
|
+
## 【Properties】
|
212
|
+
## attr_reaedr :shape
|
213
|
+
SFloat shape
|
214
|
+
コンストラクタで設定されたshapeを取得します。
|
215
|
+
|
216
|
+
## 【Instance methods】
|
217
|
+
## def initialize(dim_or_shape)
|
218
|
+
コンストラクタ
|
219
|
+
### arguments
|
220
|
+
* Integer|Array dim_or_shape
|
221
|
+
入力層のdimentionまたはshapeを指定します。引数がIntegerだとdimentionとみなし、Arrayだとshapeとみなします。
|
222
|
+
|
223
|
+
## override def forward(x)
|
224
|
+
入力値をそのまま順方向に伝搬します。
|
225
|
+
|
226
|
+
## override def backward(dout)
|
227
|
+
逆方向から伝搬してきた微分値をそのまま逆方向に伝搬します。
|
228
|
+
|
229
|
+
|
230
|
+
# class Dense
|
231
|
+
全結合レイヤーを扱うクラスです。
|
232
|
+
|
233
|
+
## 【propaty】
|
234
|
+
## attr_reader :num_nodes
|
235
|
+
Integer
|
236
|
+
レイヤーのノード数を取得します。
|
237
|
+
|
238
|
+
## attr_reader :weight_decay
|
239
|
+
Float
|
240
|
+
重み減衰の係数を取得します。
|
241
|
+
|
242
|
+
## 【Instance methods】
|
243
|
+
## def initialize(num_nodes, weight_initializer: nil, bias_initializer: nil, weight_decay: 0)
|
244
|
+
コンストラクタ。
|
245
|
+
### arguments
|
246
|
+
* Integer num_nodes
|
247
|
+
レイヤーのノード数を設定します。
|
248
|
+
* Initializer weight_initializer: nil
|
249
|
+
重みの初期化に使用するイニシャライザーを設定します
|
250
|
+
nilを指定すると、RandomNormalイニシャライザーが使用されます。
|
251
|
+
* Initializer bias_initializer: nil
|
252
|
+
バイアスの初期化に使用するイニシャライザーを設定します。
|
253
|
+
nilを指定すると、Zerosイニシャライザーが使用されます。
|
254
|
+
* Float weight_decay: 0
|
255
|
+
重み減衰の係数を設定します。
|
256
|
+
|
257
|
+
## override def forward(x)
|
258
|
+
ノードを順方向に伝搬します。
|
259
|
+
|
260
|
+
## override def backward(dout)
|
261
|
+
ノードを逆方向に伝搬します。
|
262
|
+
|
263
|
+
## override def shape
|
264
|
+
[ノード数]をshapeとして返却します。
|
265
|
+
|
266
|
+
|
267
|
+
# class Conv2D < HasParamLayer
|
268
|
+
畳み込みレイヤーを扱うクラスです。
|
269
|
+
|
270
|
+
## 【Instance methods】
|
271
|
+
## def initialize(num_filters, filter_height, filter_width, weight_initializer: nil, bias_initializer: nil, strides: [1, 1], padding 0, weight_decay: 0)
|
272
|
+
コンストラクタ。
|
273
|
+
### arguments
|
274
|
+
* Integer num_filters
|
275
|
+
出力するフィルターの枚数
|
276
|
+
* Integer filter_height
|
277
|
+
フィルターの縦の長さ
|
278
|
+
* Integer filter_width
|
279
|
+
フィルターの横の長さ
|
280
|
+
* Initializer weight_initializer: nil
|
281
|
+
重みの初期化に使用するイニシャライザーを設定します
|
282
|
+
nilを指定すると、RandomNormalイニシャライザーが使用されます。
|
283
|
+
* Initializer bias_initializer: nil
|
284
|
+
バイアスの初期化に使用するイニシャライザーを設定します。
|
285
|
+
* Array<Integer> strides: [1, 1]
|
286
|
+
畳み込みを行う際のストライドの単位を指定します。配列の要素0でy軸方向のストライドを設定し、要素1でx軸方向のストライドを設定します。
|
287
|
+
* Integer padding: 0
|
288
|
+
イメージに対してゼロパディングを行う単位を指定します。
|
289
|
+
* Float weight_decay: 0
|
290
|
+
重み減衰を行うL2正則化項の強さを設定します。
|
291
|
+
|
292
|
+
## override def init(model)
|
293
|
+
モデルのコンパイル時に、レイヤーを初期化するために使用されます。
|
294
|
+
|
295
|
+
## override def forward(x)
|
296
|
+
イメージにフィルターを適用して順方向に伝搬します。
|
297
|
+
|
298
|
+
## override def backward(dout)
|
299
|
+
フィルターが適用されたイメージを変換して、逆方向に伝搬します。
|
300
|
+
|
301
|
+
## override def shape
|
302
|
+
畳み込み後のイメージの次元を返します。
|
303
|
+
|
304
|
+
|
305
|
+
# class MaxPool2D < Layer
|
306
|
+
maxプーリングを行うレイヤーです。
|
307
|
+
|
308
|
+
## 【Instance methods】
|
309
|
+
## def initialize(pool_height, pool_width, strides: nil, padding: 0)
|
310
|
+
コンストラクタ。
|
311
|
+
### arguments
|
312
|
+
* Integer pool_height
|
313
|
+
プーリングを行う縦の長さ。
|
314
|
+
* Integer pool_width
|
315
|
+
プーリングを行う横の長さ。
|
316
|
+
* Array<Integer> strides: nil
|
317
|
+
畳み込みを行う際のストライドの単位を指定します。配列の要素0でy軸方向のストライドを設定し、要素1でx軸方向のストライドを設定します。なお、nilが設定された場合は、[pool_height, pool_width]がstridesの値となります。
|
318
|
+
* Integer padding: 0
|
319
|
+
イメージに対してゼロパディングを行う単位を指定します。
|
320
|
+
|
321
|
+
## override def init(model)
|
322
|
+
モデルのコンパイル時に、レイヤーを初期化するために使用されます。
|
323
|
+
|
324
|
+
## override def forward(x)
|
325
|
+
イメージにプーリングを行い、順方向に伝搬します。
|
326
|
+
|
327
|
+
## override def backward(dout)
|
328
|
+
プーリングされたイメージを変換し、逆方向に伝搬します。
|
329
|
+
|
330
|
+
## override def shape
|
331
|
+
プーリング後のイメージのshapeを返します。
|
332
|
+
|
333
|
+
|
334
|
+
# class Flatten
|
335
|
+
N次元のデータを平坦化します。
|
336
|
+
|
337
|
+
## 【Instance methods】
|
338
|
+
## override def forward(x)
|
339
|
+
データを平坦化して、順方向に伝搬します。
|
340
|
+
|
341
|
+
## override def backward(dout)
|
342
|
+
データを元の形状に戻し、逆方向に伝搬します。
|
343
|
+
|
344
|
+
## override def shape
|
345
|
+
前レイヤーの形状を平坦化して返します。
|
346
|
+
|
347
|
+
|
348
|
+
# class Reshape < Layer
|
349
|
+
データの形状を変更します。
|
350
|
+
|
351
|
+
## 【Instance methods】
|
352
|
+
## def initialize(shape)
|
353
|
+
コンストラクタ。
|
354
|
+
### arguments
|
355
|
+
* Array<Integer> shape
|
356
|
+
データの形状を変更するshapeです。
|
357
|
+
|
358
|
+
## override def forward(x)
|
359
|
+
データをコンストラクタで指定したshapeにreshapeして、順方向に伝搬します。
|
360
|
+
|
361
|
+
## override def backward(dout)
|
362
|
+
データを元のshapeにreshapeして、逆方向に伝搬します。
|
363
|
+
|
364
|
+
# class OutputLayer < Layer
|
365
|
+
出力層に該当するレイヤーです。出力層の活性化関数は、全てこのクラスを継承する必要があります。
|
366
|
+
|
367
|
+
## abstruct def backward(y)
|
368
|
+
出力層の活性化関数と損失関数を合わせたものを微分した導関数を用いて、教師データの出力データを逆方向に伝搬します。
|
369
|
+
### arguments
|
370
|
+
SFloat y
|
371
|
+
出力データ。
|
372
|
+
### return
|
373
|
+
出力層の活性化関数と損失関数の微分値。
|
374
|
+
|
375
|
+
## abstruct def loss
|
376
|
+
損失関数の値を取得します。
|
377
|
+
### arguments
|
378
|
+
SFloat y
|
379
|
+
出力データ。
|
380
|
+
### return
|
381
|
+
損失関数の値。
|
382
|
+
|
383
|
+
## def ridge
|
384
|
+
L2正則化係数を用いて、L2正則化項の値を計算して取得します。
|
385
|
+
### arguments
|
386
|
+
なし。
|
387
|
+
### return
|
388
|
+
SFloat
|
389
|
+
L2正則化項の値を取得します。
|
390
|
+
|
391
|
+
|
392
|
+
# class Dropout
|
393
|
+
学習の際に、一部のノードを非活性化させるクラスです。
|
394
|
+
|
395
|
+
## def initialize(dropout_ratio)
|
396
|
+
コンストラクタ。
|
397
|
+
### arguments
|
398
|
+
* Float dropout_ration
|
399
|
+
ノードを非活性にする割合。
|
400
|
+
|
401
|
+
## abstruct def forward(x)
|
402
|
+
一部のノードを非活性にした上で、順方向に伝搬します。
|
403
|
+
|
404
|
+
## abstruct def backward(dout)
|
405
|
+
一部の非活性のノード以外の全てのノードを逆方向に伝搬します。
|
406
|
+
|
407
|
+
# class BatchNormalization < HasParamLayer
|
408
|
+
ミニバッチ単位でのデータの正規化を行います。
|
409
|
+
|
410
|
+
## override def forward(x)
|
411
|
+
正規化したデータを順方向に伝搬します。
|
412
|
+
|
413
|
+
## override def backward(dout)
|
414
|
+
正規化したデータを微分して、逆方向に伝搬します。
|
415
|
+
|
416
|
+
# module Activations
|
417
|
+
活性化関数のレイヤーの名前空間をなすモジュールです。
|
418
|
+
|
419
|
+
# module SigmoidFunction
|
420
|
+
シグモイド関数を提供するモジュールです。
|
421
|
+
|
422
|
+
## def forward(x)
|
423
|
+
シグモイド関数の値を順方向に伝搬します。
|
424
|
+
### arguments
|
425
|
+
SFloat x
|
426
|
+
シグモイド関数の引数。
|
427
|
+
### return
|
428
|
+
SFloat
|
429
|
+
シグモイド関数の戻り値
|
430
|
+
|
431
|
+
|
432
|
+
# class Sigmoid < Layer
|
433
|
+
## include SigmoidFunction
|
434
|
+
シグモイド関数のレイヤーです。
|
435
|
+
|
436
|
+
## override def forward(x)
|
437
|
+
シグモイド関数の値を順方向に伝搬します。
|
438
|
+
|
439
|
+
## def backward(dout)
|
440
|
+
### arguments
|
441
|
+
SFloat dout
|
442
|
+
シグモイド関数の導関数を適用した値を逆伝搬する。
|
443
|
+
### return
|
444
|
+
SFloat
|
445
|
+
シグモイド関数の導関数を適用した逆伝搬の値。
|
446
|
+
|
447
|
+
|
448
|
+
# class Tanh < Layer
|
449
|
+
tanh関数のレイヤーです。
|
450
|
+
## def forward(x)
|
451
|
+
tanh関数の値を順方向に伝搬します。
|
452
|
+
### arguments
|
453
|
+
SFloat x
|
454
|
+
tanh関数の引数。
|
455
|
+
### return
|
456
|
+
SFloat
|
457
|
+
tanh関数の戻り値
|
458
|
+
|
459
|
+
## def backward(dout)
|
460
|
+
### arguments
|
461
|
+
SFloat dout
|
462
|
+
tanh関数の導関数を適用した値を逆伝搬する。
|
463
|
+
### return
|
464
|
+
SFloat
|
465
|
+
tanh関数の導関数を適用した逆伝搬の値。
|
466
|
+
|
467
|
+
|
468
|
+
# class ReLU < Layer
|
469
|
+
ランプ関数のレイヤーです。
|
470
|
+
## def forward(x)
|
471
|
+
ランプ関数の値を順方向に伝搬します。
|
472
|
+
### arguments
|
473
|
+
SFloat x
|
474
|
+
ランプ関数の引数。
|
475
|
+
### return
|
476
|
+
SFloat
|
477
|
+
ランプ関数の戻り値
|
478
|
+
|
479
|
+
## def backward(dout)
|
480
|
+
### arguments
|
481
|
+
SFloat dout
|
482
|
+
ランプ関数の導関数を適用した値を逆伝搬する。
|
483
|
+
### return
|
484
|
+
SFloat
|
485
|
+
ランプ関数の導関数を適用した逆伝搬の値。
|
486
|
+
|
487
|
+
|
488
|
+
# class LeakyReLU < Layer
|
489
|
+
LeakyReLU関数のレイヤーです。
|
490
|
+
## def forward(x)
|
491
|
+
LeakyReLU関数の値を順方向に伝搬します。
|
492
|
+
### arguments
|
493
|
+
SFloat x
|
494
|
+
LeakyReLU関数の引数。
|
495
|
+
### return
|
496
|
+
SFloat
|
497
|
+
LeakyReLU関数の戻り値
|
498
|
+
|
499
|
+
## def backward(dout)
|
500
|
+
### arguments
|
501
|
+
SFloat dout
|
502
|
+
LeakyReLU関数の導関数を適用した値を逆伝搬する。
|
503
|
+
### return
|
504
|
+
SFloat
|
505
|
+
LeakyReLU関数の導関数を適用した逆伝搬の値。
|
506
|
+
|
507
|
+
|
508
|
+
# class IdentityWithLoss < OutputLayer
|
509
|
+
恒等関数と二乗誤差関数を合わせた出力層のレイヤーです。
|
510
|
+
## override def forward(x)
|
511
|
+
データをそのまま順方向に伝搬します。
|
512
|
+
## override def backward(y)
|
513
|
+
恒等関数と二乗誤差関数を合わせたものを微分した導関数を用いて、教師データの出力データを逆方向に伝搬します。
|
514
|
+
|
515
|
+
|
516
|
+
# class SoftmaxWithLoss < OutputLayer
|
517
|
+
ソフトマックス関数とクロスエントロピー誤差関数を合わせた出力層のレイヤーです。
|
518
|
+
## override def forward(x)
|
519
|
+
ソフトマックス関数の値を順方向に伝搬します。
|
520
|
+
## override def backward(y)
|
521
|
+
ソフトマックス関数とクロスエントロピー誤差関数を合わせたものを微分した導関数を用いて、教師データの出力データを逆方向に伝搬します。
|
522
|
+
|
523
|
+
|
524
|
+
# class SigmoidWithLoss < OutputLayer
|
525
|
+
シグモイド関数とバイナリクロスエントロピー誤差関数を合わせた出力層のレイヤーです。
|
526
|
+
## override def forward(x)
|
527
|
+
シグモイド関数の値を順方向に伝搬します。
|
528
|
+
## override def backward(y)
|
529
|
+
シグモイド関数とバイナリクロスエントロピー誤差関数を合わせたものを微分した導関数を用いて、教師データの出力データを逆方向に伝搬します。
|
530
|
+
|
531
|
+
|
532
|
+
# module Initializers
|
533
|
+
全てのInitializerの名前空間をなすモジュールです。
|
534
|
+
|
535
|
+
|
536
|
+
# class Initializer
|
537
|
+
全てのInitializeクラスのスーパークラスです。
|
538
|
+
|
539
|
+
## def init_param(layer, param_key, param)
|
540
|
+
レイヤーの持つパラメータを更新します。
|
541
|
+
### arguments
|
542
|
+
* HasParamLayer layer
|
543
|
+
更新対象のパラメータを持つレイヤーを指定します。
|
544
|
+
* Symbol param_key
|
545
|
+
更新す対象のパラメータの名前を指定します。
|
546
|
+
* SFloat param
|
547
|
+
更新するパラメータです。
|
548
|
+
|
549
|
+
|
550
|
+
# class Zeros < Initializer
|
551
|
+
パラメータを0で初期化します。
|
552
|
+
|
553
|
+
## override def init_param(layer, param_key)
|
554
|
+
レイヤーの持つパラメータを0で初期化します。
|
555
|
+
|
556
|
+
# class RandomNormal < Initializer
|
557
|
+
パラメータを正規分布による乱数で初期化します。
|
558
|
+
|
559
|
+
## def initialize(mean = 0, std = 0.05)
|
560
|
+
### arguments
|
561
|
+
Float mean = 0
|
562
|
+
正規分布の平均。
|
563
|
+
Float std = 0.05
|
564
|
+
正規分布の分散。
|
565
|
+
|
566
|
+
## override def init_param(layer, param_key)
|
567
|
+
レイヤーの持つパラメータを正規分布による乱数で初期化します。
|
568
|
+
|
569
|
+
|
570
|
+
# class Xavier < Initializer
|
571
|
+
パラメータをXavierの初期値で初期化します。
|
572
|
+
|
573
|
+
## override def init_param(layer, param_key)
|
574
|
+
レイヤーの持つパラメータをXavierの初期値で初期化します。
|
575
|
+
|
576
|
+
|
577
|
+
# class He < Initializer
|
578
|
+
パラメータをHeの初期値で初期化します。
|
579
|
+
|
580
|
+
## override def init_param(layer, param_key)
|
581
|
+
レイヤーの持つパラメータをHeの初期値で初期化します。
|
582
|
+
|
583
|
+
|
584
|
+
# module Optimizers
|
585
|
+
全てのOptimizerの名前空間をなすモジュールです。
|
586
|
+
|
587
|
+
|
588
|
+
# class Optimizer
|
589
|
+
全てのOptimizerのスーパークラスです。
|
590
|
+
|
591
|
+
## 【Properties】
|
592
|
+
|
593
|
+
## attr_accessor :learning_rate
|
594
|
+
Float learning_rate
|
595
|
+
学習率のプロパティです。
|
596
|
+
|
597
|
+
## 【Instance methods】
|
598
|
+
|
599
|
+
## def initialize(learning_rate)
|
600
|
+
コンストラクタ。
|
601
|
+
### arguments
|
602
|
+
Float learning_rate
|
603
|
+
Optimizerの学習率。
|
604
|
+
|
605
|
+
## abstruct def update(layer)
|
606
|
+
layerのgradsを元に、layerのparamsを更新します。
|
607
|
+
### arguments
|
608
|
+
Layer layer
|
609
|
+
paramsを更新するレイヤー。
|
610
|
+
### return
|
611
|
+
なし。
|
612
|
+
|
613
|
+
|
614
|
+
# class SGD < Optimizer
|
615
|
+
SGDによるオプティマイザです。
|
616
|
+
|
617
|
+
## 【Properties】
|
618
|
+
|
619
|
+
## attr_accessor :momentum
|
620
|
+
Float momentum
|
621
|
+
モーメンタム係数。
|
622
|
+
|
623
|
+
## 【Instance methods】
|
624
|
+
|
625
|
+
## override def initialize(learning_rate = 0.01, momentum: 0)
|
626
|
+
コンストラクタ。
|
627
|
+
### arguments
|
628
|
+
Float learning_rate
|
629
|
+
学習率。
|
630
|
+
Float momentum
|
631
|
+
モーメンタム係数。
|
632
|
+
|
633
|
+
|
634
|
+
# class AdaGrad < Optimizer
|
635
|
+
AdaGradによるオプティマイザです。
|
636
|
+
|
637
|
+
|
638
|
+
# class RMSProp < Optimizer
|
639
|
+
RMSPropによるオプティマイザです。
|
640
|
+
|
641
|
+
## 【Properties】
|
642
|
+
|
643
|
+
## attr_accessor :muse
|
644
|
+
Float muse
|
645
|
+
指数平均移動のための係数。
|
646
|
+
|
647
|
+
|
648
|
+
# class Adam < Optimizer
|
649
|
+
Adamによるオプティマイザです。
|
650
|
+
|
651
|
+
## 【Properties】
|
652
|
+
|
653
|
+
## attr_accessor :beta1
|
654
|
+
Float beta1
|
655
|
+
指数平均移動のための係数1。
|
656
|
+
|
657
|
+
## attr_accessor :beta2
|
658
|
+
Float beta2
|
659
|
+
指数平均移動のための係数2。
|
660
|
+
|
661
|
+
|
662
|
+
# module Util
|
663
|
+
ユーティリティ関数を提供します。
|
664
|
+
|
665
|
+
## 【Singleton methods】
|
666
|
+
|
667
|
+
## def self.get_minibatch(x, y, batch_size)
|
668
|
+
batch_size分のミニバッチを取得します。
|
669
|
+
### arguments
|
670
|
+
SFloat x
|
671
|
+
教師データの入力データ。
|
672
|
+
SFloat y
|
673
|
+
教師データの出力データ。
|
674
|
+
Integer batch_size
|
675
|
+
ミニバッチのサイズ。
|
676
|
+
### return
|
677
|
+
Array
|
678
|
+
[xのミニバッチ, yのミニバッチ]の形式の配列を返します。
|
679
|
+
|
680
|
+
## def self.to_categorical(y, num_classes, type = nil)
|
681
|
+
ラベルをnum_classesのベクトルにカテゴライズします。
|
682
|
+
### arguments
|
683
|
+
SFloat y
|
684
|
+
教師データの出力データ。
|
685
|
+
Integer num_classes
|
686
|
+
カテゴライズするクラス数。
|
687
|
+
NArray narray_type = nil
|
688
|
+
カテゴライズしたNArrayデータの型。nilを指定すると、yの型を使用します。
|
689
|
+
### return
|
690
|
+
NArray
|
691
|
+
カテゴライズされたNArrayのインスタンス。
|
692
|
+
|
693
|
+
## def self.numerical_grad(x, func)
|
694
|
+
引数で渡された関数を数値微分します。
|
695
|
+
### arguments
|
696
|
+
SFloat x
|
697
|
+
funcの引数。
|
698
|
+
Proc|Method func
|
699
|
+
数値微分を行う対象の関数。
|
700
|
+
### return
|
701
|
+
SFloat
|
702
|
+
数値微分した結果の値。
|
data/lib/dnn/core/layers.rb
CHANGED
@@ -119,7 +119,10 @@ module DNN
|
|
119
119
|
end
|
120
120
|
|
121
121
|
|
122
|
+
#private module
|
122
123
|
module Convert
|
124
|
+
private
|
125
|
+
|
123
126
|
def im2col(img, out_h, out_w, fh, fw, strides)
|
124
127
|
bs, fn = img.shape[0..1]
|
125
128
|
col = SFloat.zeros(bs, fn, fh, fw, out_h, out_w)
|
@@ -303,7 +306,7 @@ module DNN
|
|
303
306
|
private
|
304
307
|
|
305
308
|
def ridge
|
306
|
-
@model.layers.select { |layer| layer.
|
309
|
+
@model.layers.select { |layer| layer.respond_to?(:weight_decay) }
|
307
310
|
.reduce(0) { |sum, layer| layer.weight_decay * (layer.params[:weight]**2).sum }
|
308
311
|
end
|
309
312
|
end
|
data/lib/dnn/core/model.rb
CHANGED
@@ -16,6 +16,8 @@ module DNN
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def save(file_name)
|
19
|
+
dir_name = file_name.match(%r`(.*)/.+$`)[1]
|
20
|
+
Dir.mkdir(dir_name) unless Dir.exist?(dir_name)
|
19
21
|
File.binwrite(file_name, Marshal.dump(self))
|
20
22
|
end
|
21
23
|
|
@@ -24,6 +26,7 @@ module DNN
|
|
24
26
|
raise DNN_TypeError.new("layer is not an instance of the DNN::Layers::Layer class.")
|
25
27
|
end
|
26
28
|
@layers << layer
|
29
|
+
self
|
27
30
|
end
|
28
31
|
|
29
32
|
def compile(optimizer)
|
data/lib/dnn/core/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-dnn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- unagiootoro
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: numo-narray
|
@@ -92,6 +92,7 @@ extra_rdoc_files: []
|
|
92
92
|
files:
|
93
93
|
- ".gitignore"
|
94
94
|
- ".travis.yml"
|
95
|
+
- API-Reference.ja.md
|
95
96
|
- CODE_OF_CONDUCT.md
|
96
97
|
- Gemfile
|
97
98
|
- LICENSE.txt
|