ruby-dnn 0.9.4 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,10 +12,11 @@ module DNN
12
12
  end
13
13
 
14
14
  # Convert hash to an object.
15
- def self.load_hash(hash)
15
+ def self.from_hash(hash)
16
+ return nil if hash == nil
16
17
  dnn_class = DNN.const_get(hash[:class])
17
- if dnn_class.respond_to?(:load_hash)
18
- return dnn_class.load_hash(hash)
18
+ if dnn_class.respond_to?(:from_hash)
19
+ return dnn_class.from_hash(hash)
19
20
  end
20
21
  dnn_class.new
21
22
  end
@@ -5,7 +5,11 @@ module DNN
5
5
  class DNN_DownloadError < DNN_Error; end
6
6
 
7
7
  class Downloader
8
- def self.download(url, dir_path = __dir__)
8
+ def self.download(url, dir_path = nil)
9
+ unless dir_path
10
+ Dir.mkdir("#{__dir__}/downloads") unless Dir.exist?("#{__dir__}/downloads")
11
+ dir_path = "#{__dir__}/downloads"
12
+ end
9
13
  Downloader.new(url).download(dir_path)
10
14
  rescue => ex
11
15
  raise DNN_DownloadError.new(ex.message)
@@ -1,5 +1,5 @@
1
1
  require "numo/narray"
2
- require_relative "../../../ext/rb_stb_image/rb_stb_image"
2
+ require_relative "../../ext/rb_stb_image/rb_stb_image"
3
3
 
4
4
  module DNN
5
5
  module Image
@@ -54,7 +54,7 @@ module DNN
54
54
  private_class_method
55
55
 
56
56
  def self.url_to_file_name(url)
57
- __dir__ + "/" + url.match(%r`.+/(.+)$`)[1]
57
+ __dir__ + "/downloads/" + url.match(%r`.+/(.+)$`)[1]
58
58
  end
59
59
  end
60
60
  end
@@ -1,5 +1,5 @@
1
1
  require "zlib"
2
- require_relative "../core/error"
2
+ require_relative "core/error"
3
3
  require_relative "downloader"
4
4
 
5
5
  module DNN
@@ -13,6 +13,7 @@ module DNN
13
13
 
14
14
  def self.downloads
15
15
  return if Dir.exist?(mnist_dir)
16
+ Dir.mkdir("#{__dir__}/downloads") unless Dir.exist?("#{__dir__}/downloads")
16
17
  Dir.mkdir(mnist_dir)
17
18
  Downloader.download(URL_TRAIN_IMAGES, mnist_dir)
18
19
  Downloader.download(URL_TRAIN_LABELS, mnist_dir)
@@ -73,11 +74,11 @@ module DNN
73
74
  end
74
75
 
75
76
  def self.mnist_dir
76
- __dir__ + "/mnist"
77
+ "#{__dir__}/downloads/mnist"
77
78
  end
78
79
 
79
80
  def self.url_to_file_name(url)
80
81
  mnist_dir + "/" + url.match(%r`.+/(.+)$`)[1]
81
82
  end
82
83
  end
83
- end
84
+ end
@@ -1,3 +1,3 @@
1
1
  module DNN
2
- VERSION = "0.9.4"
2
+ VERSION = "0.10.0"
3
3
  end
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.description = %q{ruby-dnn is a ruby deep learning library.}
14
14
  spec.homepage = "https://github.com/unagiootoro/ruby-dnn.git"
15
15
  spec.license = "MIT"
16
- spec.extensions = ["ext/cifar10_loader/extconf.rb", "ext/rb_stb_image/extconf.rb"]
16
+ spec.extensions = ["ext/cifar_loader/extconf.rb", "ext/rb_stb_image/extconf.rb"]
17
17
 
18
18
  spec.add_dependency "numo-narray"
19
19
  spec.add_dependency "archive-tar-minitar"
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.9.4
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - unagiootoro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-01 00:00:00.000000000 Z
11
+ date: 2019-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: numo-narray
@@ -85,32 +85,33 @@ email:
85
85
  - ootoro838861@outlook.jp
86
86
  executables: []
87
87
  extensions:
88
- - ext/cifar10_loader/extconf.rb
88
+ - ext/cifar_loader/extconf.rb
89
89
  - ext/rb_stb_image/extconf.rb
90
90
  extra_rdoc_files: []
91
91
  files:
92
92
  - ".gitignore"
93
93
  - ".travis.yml"
94
- - API-Reference.ja.md
95
94
  - CODE_OF_CONDUCT.md
96
95
  - Gemfile
97
- - LIB-API-Reference.ja.md
98
96
  - LICENSE.txt
99
97
  - README.md
100
98
  - Rakefile
101
99
  - bin/console
102
100
  - bin/setup
101
+ - examples/cifar100_example.rb
103
102
  - examples/cifar10_example.rb
104
103
  - examples/iris_example.rb
105
104
  - examples/mnist_conv2d_example.rb
106
105
  - examples/mnist_example.rb
107
106
  - examples/mnist_lstm_example.rb
108
107
  - examples/xor_example.rb
109
- - ext/cifar10_loader/cifar10_loader.c
110
- - ext/cifar10_loader/extconf.rb
108
+ - ext/cifar_loader/cifar_loader.c
109
+ - ext/cifar_loader/extconf.rb
111
110
  - ext/rb_stb_image/extconf.rb
112
111
  - ext/rb_stb_image/rb_stb_image.c
113
112
  - lib/dnn.rb
113
+ - lib/dnn/cifar10.rb
114
+ - lib/dnn/cifar100.rb
114
115
  - lib/dnn/core/activations.rb
115
116
  - lib/dnn/core/cnn_layers.rb
116
117
  - lib/dnn/core/dataset.rb
@@ -119,16 +120,16 @@ files:
119
120
  - lib/dnn/core/layers.rb
120
121
  - lib/dnn/core/losses.rb
121
122
  - lib/dnn/core/model.rb
123
+ - lib/dnn/core/normalizations.rb
122
124
  - lib/dnn/core/optimizers.rb
123
125
  - lib/dnn/core/param.rb
124
126
  - lib/dnn/core/regularizers.rb
125
127
  - lib/dnn/core/rnn_layers.rb
126
128
  - lib/dnn/core/utils.rb
127
- - lib/dnn/lib/cifar10.rb
128
- - lib/dnn/lib/downloader.rb
129
- - lib/dnn/lib/image.rb
130
- - lib/dnn/lib/iris.rb
131
- - lib/dnn/lib/mnist.rb
129
+ - lib/dnn/downloader.rb
130
+ - lib/dnn/image.rb
131
+ - lib/dnn/iris.rb
132
+ - lib/dnn/mnist.rb
132
133
  - lib/dnn/version.rb
133
134
  - ruby-dnn.gemspec
134
135
  - third_party/stb_image.h
@@ -1,978 +0,0 @@
1
- # APIリファレンス
2
- ruby-dnnのAPIリファレンスです。このリファレンスでは、APIを利用するうえで必要となるクラスとメソッドしか記載していません。
3
- そのため、プログラムの詳細が必要な場合は、ソースコードを参照してください。
4
-
5
- 最終更新バージョン:0.9.2
6
-
7
- # module DNN
8
- ruby-dnnの名前空間をなすモジュールです。
9
-
10
- ## 【Constants】
11
-
12
- ## VERSION
13
- ruby-dnnのバージョン。
14
-
15
- # class Model
16
- ニューラルネットワークのモデルを作成するクラスです。
17
-
18
- ## 【Properties】
19
-
20
- ## attr_accessor :layer
21
- モデルに追加されたレイヤーの配列を取得します。
22
-
23
- ## attr_accessor :trainable
24
- falseを設定すると、パラメータの学習を禁止します。
25
-
26
-
27
- ## 【Singleton methods】
28
-
29
- ## def self.load(file_name)
30
- marshalファイルを読み込み、モデルを作成します。
31
- ### arguments
32
- * String file_name
33
- 読み込むmarshalファイル名。
34
- ### return
35
- Model
36
- 生成したモデル。
37
-
38
- ## def self.load_json(json_str)
39
- json文字列からモデルを作成します。
40
- ### arguments
41
- * String json_str
42
- json文字列。
43
- ### return
44
- Model
45
- 生成したモデル。
46
-
47
- ## 【Instance methods】
48
-
49
- ## def load_json_params(json_str)
50
- 学習パラメータをjson文字列から取得し、モデルにセットします。
51
- ### arguments
52
- * String json_str
53
- 学習パラメータを変換して生成したjson文字列。
54
- ### return
55
- なし。
56
-
57
- ## def save(file_name)
58
- モデルをmarshalファイルに保存します。
59
- このmarshalファイルには、学習パラメータ及びOptimizerの状態が保存されるため、
60
- 読み込んだ後、正確に学習を継続することができます。
61
- ### arguments
62
- * String file_name
63
- 書き込むファイル名。
64
- ### return
65
- なし。
66
-
67
- ## def to_json
68
- モデルをjson文字列に変換します。
69
- 変換したjson文字列には学習パラメータの情報は含まれません。
70
- 学習パラメータの情報を取得したい場合は、params_to_jsonを使用してください。
71
- ### arguments
72
- なし。
73
- ### return
74
- String
75
- モデルを変換して生成したjson文字列。
76
-
77
- ## def params_to_json
78
- 学習パラメータをjson文字列に変換します。
79
- ### arguments
80
- なし。
81
- ### return
82
- String
83
- 学習パラメータを変換して生成したjson文字列。
84
-
85
- ## def <<(layer)
86
- モデルにレイヤー追加します。
87
- ### arguments
88
- * Layer
89
- 追加するレイヤー。
90
- ### return
91
- Model
92
- 自身のモデルのインスタンス。
93
-
94
- ## def optimizer
95
- モデルのオプティマイザーを取得します。
96
-
97
- ### arguments
98
- なし。
99
- ### return
100
- Optimizer
101
- モデルのオプティマイザー。
102
-
103
- ## def loss
104
- モデルの損失関数を取得します。
105
-
106
- ### arguments
107
- なし。
108
- ### return
109
- Loss
110
- モデルの損失関数。
111
-
112
- ## def compile(optimizer, loss)
113
- モデルをコンパイルします。
114
- ### arguments
115
- * Optimizer optimizer
116
- モデルが学習に使用するオプティマイザー。
117
- * Loss loss
118
- モデルが学習に使用する損失関数。
119
- ### return
120
- なし。
121
-
122
- ## def compile(optimizer, loss)
123
- モデルを再コンパイルします。ただし、レイヤーのビルドは行いません。
124
- ### arguments
125
- * Optimizer optimizer
126
- モデルが学習に使用するオプティマイザー。
127
- * Loss loss
128
- モデルが学習に使用する損失関数。
129
- ### return
130
- なし。
131
-
132
- ## def compiled?
133
- モデルがコンパイル済みであるか否かを取得します。
134
- ### arguments
135
- なし。
136
- ### return
137
- bool
138
- モデルがコンパイル済みであるか否か。
139
-
140
- ## def train(x, y, epochs, batch_size: 1, test: nil, verbose: true, batch_proc: nil, &epoch_proc)
141
- コンパイルしたモデルを用いて学習を行います。
142
- ### arguments
143
- * Numo::SFloat x
144
- トレーニング用入力データ。
145
- * Numo::SFloat y
146
- トレーニング用出力データ。
147
- * Integer epochs
148
- 学習回数。
149
- * Integer batch_size: 1
150
- 学習に使用するミニバッチの数。
151
- * Array test: nil
152
- [テスト用入力データ, テスト用出力データ]の形式で設定すると、1エポックごとにテストを行います。
153
- * bool verbose: true
154
- trueを設定すると、学習ログを出力します。
155
- * Proc batch_proc: nil
156
- 一度のバッチ学習が行われる前に呼び出されるprocを登録します。
157
- ### block
158
- epoch_proc
159
- 1エポックの学習が終了するたびに呼び出されます。
160
- ### return
161
- なし。
162
-
163
- ## def train_on_batch(x, y, &batch_proc)
164
- 入力されたバッチデータをもとに、一度だけ学習を行います。
165
- ### arguments
166
- * Numo::SFloat x
167
- トレーニング用入力バッチデータ。
168
- * Numo::SFloat y
169
- トレーニング用出力バッチデータ。
170
- ### block
171
- 一度のバッチ学習が行われる前に呼び出されます。
172
- ### return
173
- Integer
174
- 損失関数の値を返します。
175
-
176
- ## def accurate(x, y, batch_size = 100, &batch_proc)
177
- 学習結果をもとに認識率を返します。
178
- ### arguments
179
- * Numo::SFloat x
180
- テスト用入力データ。
181
- * Numo::SFloat y
182
- テスト用出力データ。
183
- * batch_size
184
- ミニバッチの数。
185
- ### block
186
- 一度のバッチ学習が行われる前に呼び出されます。
187
- ### return
188
- Float
189
- テスト結果の認識率を返します。
190
-
191
- ## def predict(x)
192
- モデルを使用して、結果の推論を行います。
193
- 入力データは、バッチデータである必要があります。
194
- ### arguments
195
- * Numo::SFloat x
196
- 推論用入力データ。
197
- ### return
198
- Numo::SFloat
199
- 推論結果を返します。
200
-
201
- ## def predict1(x)
202
- モデルを使用して、結果の推論を行います。
203
- predictとは異なり、一つの入力データに対して、一つの出力データを返します。
204
- ### arguments
205
- * Numo::SFloat x
206
- 推論用入力データ。
207
- ### return
208
- Numo::SFloat
209
- 推論結果を返します。
210
-
211
- ## def copy
212
- 現在のモデルをコピーした新たなモデルを生成します。
213
- ### arguments
214
- なし。
215
- ### return
216
- Model
217
- コピーしたモデル。
218
-
219
- ## def get_layer(index)
220
- indexのレイヤーを取得します。
221
- ### arguments
222
- * Integer index
223
- 取得するレイヤーのインデックス。
224
- ### return
225
- Layer
226
- 対象のレイヤーのインスタンス。
227
-
228
- ## def get_layer(layer_class, index)
229
- layer_classで指定されたクラスのレイヤーをindexで取得します。
230
- ### arguments
231
- * Layer layer_class
232
- 取得するレイヤーのクラス。
233
- * Integer index
234
- レイヤーのインデックス。例えば、layersが[InputLayer, Dense, Dense,SoftmaxWithLoss]のとき、
235
- 最初のDenseを取得したい場合、インデックスは0になります。
236
- ### return
237
- Layer
238
- 対象のレイヤーのインスタンス。
239
-
240
- ## def get_all_layers
241
- モデルが持つ全てのレイヤー(モデルが持つ下位のモデルのレイヤーも含む)を取得します。
242
- ### arguments
243
- なし。
244
- ### return
245
- Array
246
- モデルの持つすべてのレイヤーの配列
247
-
248
- # module Layers
249
- レイヤーの名前空間をなすモジュールです。
250
-
251
-
252
- # class Layer
253
- 全てのレイヤーのスーパークラスです。
254
-
255
- ## 【Instance methods】
256
-
257
- ## def build(input_shape)
258
- モデルのコンパイル時に、レイヤーをビルドするために使用されます。
259
- ### arguments
260
- * Array input_shape
261
- 入力されるNArrayの形状。
262
- ### return
263
- なし。
264
-
265
- ## def built?
266
- レイヤーがビルド済みであるか否かを取得します。
267
- ### arguments
268
- なし。
269
- ### return
270
- bool
271
- レイヤーがビルド済みであるか否か。
272
-
273
- ## abstruct def forward(x)
274
- 順方向伝搬を行うメソッドです。Layerクラスを継承するクラスは、このメソッドを実装する必要があります。
275
- ### arguments
276
- * Numo::SFloat x
277
- 入力データ。
278
- ### return
279
- Numo::SFloat
280
- 出力データ。
281
-
282
- ## abstruct def backward(dout)
283
- 逆方向伝搬を行うメソッドです。Layerクラスを継承するクラスは、このメソッドを実装する必要があります。
284
- ### arguments
285
- * Numo::SFloat dout
286
- 逆方向から伝搬してきた微分値。
287
- ### return
288
- Numo::SFloat
289
- 逆方向に伝搬する微分値。
290
-
291
- ## def shape
292
- レイヤーの形状を取得するメソッドです。
293
- ### arguments
294
- なし。
295
- ### return
296
- Array
297
- レイヤーの形状。Layerクラスのshapeメソッドでは、前レイヤーの形状を返却します。
298
-
299
- ## abstruct def to_hash
300
- レイヤーをハッシュに変換します。このメソッドは、モデルをjsonに変換するために使用されます。このメソッドが返すハッシュの要素には、{name: `self.class.name`}が含まれていなければなりません。
301
- ### arguments
302
- なし。
303
- ### return
304
- Hash
305
- レイヤーを変換したハッシュ。
306
-
307
-
308
- # class HasParamLayer < Layer
309
- 学習可能なパラメータを持つ全てのレイヤーのスーパークラスです。
310
-
311
- ## 【Instance methods】
312
-
313
- ## private abstruct def init_params
314
- 更新可能なパラメータを初期化します。HasParamLayerクラスを継承するクラスは、このメソッドを実装する必要があります。
315
- このメソッドは、レイヤーが初回ビルドされたときのみ実行されます。
316
- ### arguments
317
- なし。
318
- ### return
319
- なし。
320
-
321
-
322
- # class InputLayer < Layer
323
- 入力層に該当するレイヤーです。モデルの先頭レイヤーは、必ずこのクラスのインスタンスでなければなりません。
324
-
325
- ## 【Instance methods】
326
-
327
- ## def initialize(dim_or_shape)
328
- コンストラクタ
329
- ### arguments
330
- * Integer | Array dim_or_shape
331
- 入力層のdimentionまたはshapeを指定します。引数がIntegerだとdimentionとみなし、Arrayだとshapeとみなします。
332
-
333
-
334
- # class Connection < HasParamLayer
335
- ニューロンを接続するすべてのレイヤーのスーパークラスです。
336
-
337
- ## 【Properties】
338
-
339
- ## attr_reader :weight_initializer
340
- Initializer
341
- 重みの初期化に使用するイニシャライザーを取得します。
342
-
343
- ## attr_reader :bias_initializer
344
- Initializer
345
- バイアスの初期化に使用するイニシャライザーを取得します。
346
-
347
- ## attr_reader :l1_lambda
348
- Float
349
- 重みのL1正則化の係数を取得します。
350
-
351
- ## attr_reader :l2_lambda
352
- Float
353
- 重みのL2正則化の係数を取得します。
354
-
355
-
356
- # class Dense < Connection
357
- 全結合レイヤーを扱うクラスです。
358
-
359
- ## 【Properties】
360
-
361
- ## attr_reader :num_nodes
362
- Integer
363
- レイヤーのノード数を取得します。
364
-
365
- ## 【Instance methods】
366
-
367
- ## def initialize(num_nodes, weight_initializer: Initializers::RandomNormal.new, bias_initializer: Initializers::Zeros.new, l1_lambda: 0, l2_lambda: 0)
368
- コンストラクタ。
369
- ### arguments
370
- * Integer num_nodes
371
- レイヤーのノード数を設定します。
372
- * Initializer weight_initializer: Initializers::RandomNormal.new
373
- 重みの初期化に使用するイニシャライザーを設定します。
374
- * Initializer bias_initializer: Initializers::Zeros.new
375
- バイアスの初期化に使用するイニシャライザーを設定します。
376
- * Float l1_lambda: 0
377
- 重みのL1正則化の係数を設定します。
378
- * Float l2_lambda: 0
379
- 重みのL2正則化の係数を設定します。
380
-
381
-
382
- # class Conv2D < Connection
383
- 畳み込みレイヤーを扱うクラスです。
384
-
385
- ## 【Properties】
386
-
387
- ## attr_reader :num_filters
388
- Integer
389
- 出力するフィルターの枚数。
390
-
391
- ## attr_reader :filter_size
392
- Array
393
- フィルターの縦と横の長さ。
394
- [Integer height, Integer width]の形式で取得します。
395
-
396
- ## attr_reader :strides
397
- Array
398
- 畳み込みを行う際のストライドの単位。
399
- [Integer height, Integer width]の形式で取得します。
400
-
401
- ## 【Instance methods】
402
-
403
- ## def initialize(num_filters, filter_size, weight_initializer: Initializers::RandomNormal.new, bias_initializer: Initializers::Zeros.new, strides: 1, padding false, l1_lambda: 0, l2_lambda: 0)
404
- コンストラクタ。
405
- ### arguments
406
- * Integer num_filters
407
- 出力するフィルターの枚数。
408
- * Integer | Array filter_size
409
- フィルターの縦と横の長さ。
410
- Arrayで指定する場合、[Integer height, Integer width]の形式で指定します。
411
- * Initializer weight_initializer: Initializers::RandomNormal.new
412
- 重みの初期化に使用するイニシャライザーを設定します。
413
- * Initializer bias_initializer: Initializers::Zeros.new
414
- バイアスの初期化に使用するイニシャライザーを設定します。
415
- * Array<Integer> strides: 1
416
- 畳み込みを行う際のストライドの単位を指定します。
417
- Arrayで指定する場合、[Integer height, Integer width]の形式で指定します。
418
- * bool padding: true
419
- イメージに対してゼロパディングを行うか否かを設定します。trueを設定すると、出力されるイメージのサイズが入力されたイメージと同じになるように
420
- ゼロパディングを行います。
421
- * Float l1_lambda: 0
422
- 重みのL1正則化の係数を設定します。
423
- * Float l2_lambda: 0
424
- 重みのL2正則化の係数を設定します。
425
-
426
-
427
- # class Pool2D < Layer
428
- 全ての2Dプーリングレイヤーのスーパークラスです。
429
-
430
- ## 【Properties】
431
-
432
- ## attr_reader :pool_size
433
- Array
434
- プーリングを行う縦と横の長さ。
435
- [Integer height, Integer width]の形式で取得します。
436
-
437
- ## attr_reader :strides
438
- Array
439
- 畳み込みを行う際のストライドの単位。
440
- [Integer height, Integer width]の形式で取得します。
441
-
442
- ## 【Instance methods】
443
-
444
- ## def initialize(pool_size, strides: nil, padding: false)
445
- コンストラクタ。
446
- ### arguments
447
- * Integer | Array pool_size
448
- プーリングを行う縦と横の長さ。
449
- Arrayで指定する場合、[Integer height, Integer width]の形式で指定します。
450
- * Array<Integer> strides: nil
451
- 畳み込みを行う際のストライドの単位を指定します。
452
- Arrayで指定する場合、[Integer height, Integer width]の形式で指定します。
453
- なお、nilが設定された場合は、pool_sizeがstridesの値となります。
454
- * bool padding: true
455
- イメージに対してゼロパディングを行うか否かを設定します。trueを設定すると、出力されるイメージのサイズが入力されたイメージと同じになるように
456
- ゼロパディングを行います。
457
-
458
-
459
- # class MaxPool2D < Pool2D
460
- maxプーリングを行うレイヤーです。
461
-
462
-
463
- # class AvgPool2D < Pool2D
464
- averageプーリングを行うレイヤーです。
465
-
466
-
467
- # class UnPool2D < Layer
468
- 逆プーリングを行うレイヤーです。
469
-
470
- ## 【Properties】
471
-
472
- ## attr_reader :unpool_size
473
- Array
474
- 逆プーリングを行う縦と横の長さ。
475
- [Integer height, Integer width]の形式で取得します。
476
-
477
- ## 【Instance methods】
478
-
479
- ## def initialize(unpool_size)
480
- コンストラクタ。
481
- ### arguments
482
- * Integer unpool_size
483
- 逆プーリングを行う縦と横の長さ。
484
- Arrayで指定する場合、[Integer height, Integer width]の形式で指定します。
485
-
486
-
487
- # class RNN < Connection
488
- 全てのリカレントニューラルネットワークのレイヤーのスーパークラスです。
489
-
490
- ## attr_reader :num_nodes
491
- Integer
492
- レイヤーのノード数を取得します。
493
-
494
- ## attr_reader :stateful
495
- bool
496
- レイヤーがステートフルであるか否かを返します。
497
-
498
- ## attr_reader :return_sequences
499
- bool
500
- trueを指定した場合、レイヤーのforward出力値において、時系列データ全てを返します。
501
- falseを指定した場合、レイヤーのforward出力値において、時系列データの最後の値を返します。
502
-
503
- ## 【Instance methods】
504
-
505
- ## def initialize(num_nodes, stateful: false, return_sequences: true, weight_initializer: Initializers::RandomNormal.new, bias_initializer: Initializers::Zeros.new, l1_lamda: 0, l2_lambda: 0)
506
- コンストラクタ。
507
- ### arguments
508
- * Integer num_nodes
509
- レイヤーのノード数を設定します。
510
- * bool stateful
511
- trueを設定すると、一つ前に計算した中間層の値を使用して学習を行うことができます。
512
- * bool return_sequences
513
- trueを設定すると、時系列ネットワークの中間層全てを出力します。
514
- falseを設定すると、時系列ネットワークの中間層の最後のみを出力します。
515
- * Initializer weight_initializer: Initializers::RandomNormal.new
516
- 重みの初期化に使用するイニシャライザーを設定します。
517
- * Initializer bias_initializer: Initializers::Zeros.new
518
- バイアスの初期化に使用するイニシャライザーを設定します。
519
- * Float l1_lambda: 0
520
- 重みのL1正則化の係数を設定します。
521
- * Float l2_lambda: 0
522
- 重みのL2正則化の係数を設定します。
523
-
524
- ## def reset_state
525
- 中間層のステートをリセットします。
526
-
527
-
528
- # class SimpleRNN < RNN
529
- シンプルなRNNレイヤーを扱うクラスです。
530
-
531
- ## 【Instance methods】
532
-
533
- ## def initialize(num_nodes, stateful: false, return_sequences: true, activation: Tanh.new, weight_initializer: Initializers::RandomNormal.new, bias_initializer: Initializers::Zeros.new, l1_lamda: 0, l2_lambda: 0)
534
- コンストラクタ。
535
- ### arguments
536
- * Integer num_nodes
537
- レイヤーのノード数を設定します。
538
- * bool stateful
539
- trueを設定すると、一つ前に計算した中間層の値を使用して学習を行うことができます。
540
- * bool return_sequences
541
- trueを設定すると、時系列ネットワークの中間層全てを出力します。
542
- falseを設定すると、時系列ネットワークの中間層の最後のみを出力します。
543
- * Layer activation
544
- リカレントニューラルネットワークにおいて、使用する活性化関数を設定します。
545
- * Initializer weight_initializer: nil
546
- 重みの初期化に使用するイニシャライザーを設定します。
547
- * Initializer bias_initializer: nil
548
- バイアスの初期化に使用するイニシャライザーを設定します。
549
- * Float l1_lambda: 0
550
- 重みのL1正則化の係数を設定します。
551
- * Float l2_lambda: 0
552
- 重みのL2正則化の係数を設定します。
553
-
554
-
555
- # class LSTM < RNN
556
- LSTMレイヤーを扱うクラスです。
557
-
558
-
559
- # class GRU < RNN
560
- GRUレイヤーを扱うクラスです。
561
-
562
-
563
- # class Flatten
564
- N次元のデータを平坦化します。
565
-
566
-
567
- # class Reshape < Layer
568
- データの形状を変更します。
569
-
570
- ## 【Instance methods】
571
-
572
- ## def initialize(shape)
573
- コンストラクタ。
574
- ### arguments
575
- * Array<Integer> shape
576
- データの形状を変更するshapeです。
577
-
578
-
579
-
580
-
581
-
582
- # class Dropout
583
- 学習の際に、一部のノードを非活性化させるクラスです。
584
-
585
- ## 【Properties】
586
-
587
- ## attr_reader :dropout_ratio
588
- ノードを非活性にする割合を取得します。
589
-
590
- ## 【Instance methods】
591
-
592
- ## def initialize(dropout_ratio = 0.5)
593
- コンストラクタ。
594
- ### arguments
595
- * Float dropout_ratio
596
- ノードを非活性にする割合。
597
-
598
-
599
- # class BatchNormalization < HasParamLayer
600
- ミニバッチ単位でのデータの正規化を行います。
601
-
602
- ## 【Properties】
603
-
604
- ## attr_reader :momentum
605
- 推論時に使用する平均と分散を求めるための指数平均移動の係数。
606
-
607
- ## 【Instance methods】
608
-
609
- ## def initialize(momentum: 0.9
610
- コンストラクタ。
611
- ### arguments
612
- * Float momenum: 0.9
613
- 推論時に使用する平均と分散を求めるための指数平均移動の係数。
614
-
615
-
616
- # module Activations
617
- 活性化関数のレイヤーの名前空間をなすモジュールです。
618
-
619
-
620
- # class Sigmoid < Layer
621
- シグモイド関数のレイヤーです。
622
-
623
-
624
- # class Tanh < Layer
625
- tanh関数のレイヤーです。
626
-
627
-
628
- # class Softsign < Layer
629
- softsign関数のレイヤーです。
630
-
631
-
632
- # class Softplus < Layer
633
- softplus関数のレイヤーです。
634
-
635
-
636
- # class Swish < Layer
637
- swish関数のレイヤーです。
638
-
639
-
640
- # class ReLU < Layer
641
- ランプ関数のレイヤーです。
642
-
643
-
644
- # class LeakyReLU < Layer
645
- LeakyReLU関数のレイヤーです。
646
-
647
- ## 【Properties】
648
- ## attr_reader :alpha
649
- Float alpha
650
- 出力値が負のときの傾き。
651
-
652
- ## 【Instance methods】
653
-
654
- ## def initialize(alpha)
655
- コンストラクタ。
656
- ### arguments
657
- * Float alpha
658
- 出力値が負のときの傾き。
659
-
660
-
661
- # class ELU < Layer
662
- eLU関数のレイヤーです。
663
-
664
- ## 【Properties】
665
- ## attr_reader :alpha
666
- Float alpha
667
- 出力値が負のときの傾き。
668
-
669
- ## 【Instance methods】
670
-
671
- ## def initialize(alpha)
672
- コンストラクタ。
673
- ### arguments
674
- * Float alpha
675
- 出力値が負のときの傾き。
676
-
677
-
678
- # module Initializers
679
- 全てのInitializerの名前空間をなすモジュールです。
680
-
681
-
682
- # class Initializer
683
- 全てのInitializeクラスのスーパークラスです。
684
-
685
- ## 【Instance methods】
686
-
687
- ## def init_param(layer, param)
688
- レイヤーの持つパラメータを更新します。
689
- ### arguments
690
- * HasParamLayer layer
691
- 更新対象のパラメータを持つレイヤーを指定します。
692
- * Param param
693
- 更新するパラメータです。
694
-
695
-
696
- # class Zeros < Initializer
697
- パラメータを0で初期化します。
698
-
699
-
700
- # class Const < Initializer
701
- パラメータを指定の定数で初期化します。
702
-
703
- ## 【Instance methods】
704
- ## def initialize(const)
705
- ### arguments
706
- * Float const
707
- 初期化する定数
708
-
709
-
710
- # class RandomNormal < Initializer
711
- パラメータを正規分布による乱数で初期化します。
712
-
713
- ## 【Properties】
714
- ## attr_reader :mean
715
- Float mean
716
- 正規分布の平均。
717
- ## attr_reader :std
718
- Float std
719
- 正規分布の分散。
720
-
721
- ## 【Instance methods】
722
- ## def initialize(mean = 0, std = 0.05)
723
- ### arguments
724
- * Float mean = 0
725
- 正規分布の平均。
726
- * Float std = 0.05
727
- 正規分布の分散。
728
-
729
-
730
- # class RandomUniform < Initializer
731
- パラメータを一様分布による乱数で初期化します。
732
-
733
- ## 【Properties】
734
- ## attr_reader :min
735
- Float min
736
- 一様分布の最小値。
737
- ## attr_reader :max
738
- Float max
739
- 一様分布の最大値。
740
-
741
- ## 【Instance methods】
742
- ## def initialize(min = -0.05, max = 0.05)
743
- ### arguments
744
- * Float min = -0.05
745
- 一様分布の最小値。
746
- * Float max = 0.05
747
- 一様分布の最大値。
748
-
749
-
750
- # class Xavier < Initializer
751
- パラメータをXavierの初期値で初期化します。
752
-
753
-
754
- # class He < Initializer
755
- パラメータをHeの初期値で初期化します。
756
-
757
-
758
- # module Optimizers
759
- 全てのOptimizerの名前空間をなすモジュールです。
760
-
761
-
762
- # class Optimizer
763
- 全てのOptimizerのスーパークラスです。
764
-
765
- ## 【Properties】
766
-
767
- ## attr_accessor :learning_rate
768
- Float learning_rate
769
- 学習率のプロパティです。
770
-
771
- ## 【Instance methods】
772
-
773
- ## def initialize(learning_rate)
774
- コンストラクタ。
775
- ### arguments
776
- * Float learning_rate
777
- Optimizerの学習率。
778
-
779
- ## abstruct def update(params)
780
- paramsが持つ全ての学習パラメータにおいて、gradを元に、dataを更新します。全てのOptimizerを継承するクラスは、このメソッドを実装する必要があります。
781
- ### arguments
782
- * Layer layer
783
- paramsを更新するレイヤー。
784
- ### return
785
- なし。
786
-
787
-
788
- # class SGD < Optimizer
789
- SGDによるオプティマイザです。
790
-
791
- ## 【Properties】
792
-
793
- ## attr_accessor :momentum
794
- Float momentum
795
- モーメンタム係数。
796
-
797
- ## 【Instance methods】
798
-
799
- ## def initialize(learning_rate = 0.01, momentum: 0)
800
- コンストラクタ。
801
- ### arguments
802
- * Float learning_rate
803
- 学習率。
804
- * Float momentum
805
- モーメンタム係数。
806
-
807
-
808
- # class Nesterov < SGD
809
- Nesterovによるオプティマイザです。
810
-
811
- ## 【Instance methods】
812
-
813
- ## def initialize(learning_rate = 0.01, momentum: 0.9)
814
- コンストラクタ。
815
- ### arguments
816
- * Float learning_rate
817
- 学習率。
818
- * Float momentum
819
- モーメンタム係数。
820
-
821
-
822
- # class AdaGrad < Optimizer
823
- AdaGradによるオプティマイザです。
824
-
825
-
826
- # class RMSProp < Optimizer
827
- RMSPropによるオプティマイザです。
828
-
829
- ## 【Properties】
830
-
831
- ## attr_accessor :alpha
832
- Float alpha
833
- 指数平均移動のための係数。
834
-
835
- ## 【Instance methods】
836
-
837
- ## def initialize(learning_rate = 0.001, alpha: 0.9)
838
- コンストラクタ。
839
- ### arguments
840
- * Float learning_rate
841
- 学習率。
842
- * Float alpha
843
- 指数平均移動のための係数。
844
-
845
-
846
- # class AdaDelta < Optimizer
847
- AdaDeltaによるオプティマイザです。
848
-
849
- ## 【Properties】
850
-
851
- ## attr_accessor :rho
852
- Float rho
853
- 指数平均移動のための係数。
854
-
855
- ## 【Instance methods】
856
-
857
- ## def initialize(rho: 0.95)
858
- コンストラクタ。
859
- ### arguments
860
- * Float rho
861
- 指数平均移動のための係数。
862
-
863
-
864
- # class Adam < Optimizer
865
- Adamによるオプティマイザです。
866
-
867
- ## 【Properties】
868
-
869
- ## attr_accessor :beta1
870
- Float beta1
871
- 指数平均移動のための係数1。
872
-
873
- ## attr_accessor :beta2
874
- Float beta2
875
- 指数平均移動のための係数2。
876
-
877
- ## 【Instance methods】
878
-
879
- ## def initialize(learning_rate = 0.001, beta1: 0.9, beta2: 0.999)
880
- コンストラクタ。
881
- ### arguments
882
- * Float beta1
883
- 指数平均移動のための係数1。
884
- * Float beta2
885
- 指数平均移動のための係数2。
886
-
887
-
888
- # module Utils
889
- ユーティリティ関数を提供します。
890
-
891
- ## 【Singleton methods】
892
-
893
- ## def self.get_minibatch(x, y, batch_size)
894
- batch_size分のミニバッチを取得します。
895
- ### arguments
896
- * Numo::SFloat x
897
- 教師データの入力データ。
898
- * Numo::SFloat y
899
- 教師データの出力データ。
900
- * Integer batch_size
901
- ミニバッチのサイズ。
902
- ### return
903
- Array
904
- [xのミニバッチ, yのミニバッチ]の形式の配列を返します。
905
-
906
- ## def self.to_categorical(y, num_classes, type = nil)
907
- ラベルをnum_classesのベクトルにカテゴライズします。
908
- ### arguments
909
- * Numo::SFloat y
910
- 教師データの出力データ。
911
- * Integer num_classes
912
- カテゴライズするクラス数。
913
- * NArray narray_type = nil
914
- カテゴライズしたNArrayデータの型。nilを指定すると、yの型を使用します。
915
- ### return
916
- NArray
917
- カテゴライズされたNArrayのインスタンス。
918
-
919
- ## def self.sigmoid(x)
920
- xのシグモイド関数の値を返します。
921
- ### arguments
922
- * Numo::SFloat x
923
- シグモイド関数の引数の値。
924
- ### return
925
- Numo::SFloat
926
- シグモイド関数の値。
927
-
928
- ## def self.softmax(x)
929
- xのソフトマックス関数の値を返します。
930
- ### arguments
931
- * Numo::SFloat x
932
- ソフトマックス関数の引数の値。
933
- ### return
934
- Numo::SFloat
935
- ソフトマックス関数の値。
936
-
937
-
938
-
939
- # module Losses
940
- 損失関数のレイヤーの名前空間をなすモジュールです。
941
-
942
- # class Loss
943
- 出力層に該当するレイヤーです。出力層の活性化関数は、全てこのクラスを継承する必要があります。
944
-
945
- ## 【Instance methods】
946
- ## abstruct def forward(out, y)
947
- 損失関数の順伝搬を行います。全ての損失関数のクラスは、このメソッドを実装する必要があります。
948
-
949
- ### arguments
950
- Numo::SFloat out
951
- ニューラルネットワークの出力値。
952
- Numo::SFloat y
953
- 教師データの値。
954
- ### return
955
- 損失関数の値。
956
-
957
- ## abstruct def backward(y)
958
- 損失関数の逆伝搬を行います。全ての損失関数のクラスは、このメソッドを実装する必要があります。
959
- ### arguments
960
- Numo::SFloat y
961
- 出力データ。
962
- ### return
963
- 損失関数の値。
964
-
965
- # class MeanSquaredError < Loss
966
- 二乗誤差の損失関数です。
967
-
968
-
969
- # class MeanAbsoluteError < Loss
970
- 平均絶対誤差の損失関数です。
971
-
972
-
973
- # class SoftmaxCrossEntropy < Loss
974
- ソフトマックス関数とクロスエントロピー誤差を合わせた損失関数です。
975
-
976
-
977
- # class SigmoidCrossEntropy < Loss
978
- シグモイド関数とクロスエントロピー誤差を合わせた損失関数です。