ruby-dnn 0.2.1 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ccb761989aa380096c4b16db46da21a4fb74e95bb8b15ed4564f4da6818bf04f
4
- data.tar.gz: 2764cc949b09a42b2bbb7ccee7504e62055b33318cf5f3beb4977eb50c9b86ff
3
+ metadata.gz: 5ab676b5d5bb17163dfc274ff37f3164c2008d5fd17e8c411085202f123c206d
4
+ data.tar.gz: '099f3fce9dc95457e23e31b44fa4557151adb367d19e5189988eb0b7d63044a2'
5
5
  SHA512:
6
- metadata.gz: da160fcb2a10367a916dbb020b10ecf6b7cc8eba0e1aa30d68e0f788c06a5a5ff29122a758308666384921f49866a493230aae527e343bec1b3470f6de849fa2
7
- data.tar.gz: 6016b580542781fae7e1b07e2cb3aac219070a6428d0d02505fe833a1a54564947dbb196afeea76122fb964f761c7b23aca2513162d5b14be64113cddeac4f2b
6
+ metadata.gz: d4576bf98e350e9dcb9ec7e6e787da23e19cf504b6cba2c4892385aa946d383439d50456e1e4acf16b3202f28faa05da29f9e8594d2106cb126d0a1f28d44731
7
+ data.tar.gz: 8162cf4f8ef0f5f560c5e52a28aa6c9278d59b74835a00101c971435da9204c9ce0255aaf8ee024315f53dcf6c7917aeee37c18a4c0f8a07da119fa218f5a2fd
data/API-Reference.ja.md CHANGED
@@ -2,7 +2,7 @@
2
2
  ruby-dnnのAPIリファレンスです。このリファレンスでは、APIを利用するうえで必要となるクラスとメソッドしか記載していません。
3
3
  そのため、プログラムの詳細が必要な場合は、ソースコードを参照してください。
4
4
 
5
- 対応バージョン:0.2.0
5
+ 対応バージョン:0.2.2
6
6
 
7
7
  # module DNN
8
8
  ruby-dnnの名前空間をなすモジュールです。
@@ -178,7 +178,7 @@ SFloat
178
178
  ### return
179
179
  なし。
180
180
 
181
- ## def builded?
181
+ ## def built?
182
182
  レイヤーがビルド済みであるか否かを取得します。
183
183
  ### arguments
184
184
  なし。
@@ -318,6 +318,19 @@ maxプーリングを行うレイヤーです。
318
318
  ゼロパディングを行います。
319
319
 
320
320
 
321
+ # class UnPool2D < Layer
322
+ 逆プーリングを行うレイヤーです。
323
+
324
+ ## 【Instance methods】
325
+ ## def initialize(unpool_width, unpool_height)
326
+ コンストラクタ。
327
+ ### arguments
328
+ * Integer unpool_width
329
+ 逆プーリングを行う横の長さ。
330
+ * Integer unpool_height
331
+ 逆プーリングを行う縦の長さ。
332
+
333
+
321
334
  # class Flatten
322
335
  N次元のデータを平坦化します。
323
336
 
data/README.md CHANGED
@@ -8,7 +8,7 @@ Currently, you can get 99% accuracy with MNIST and 74% with CIFAR 10.
8
8
  Add this line to your application's Gemfile:
9
9
 
10
10
  ```ruby
11
- gem 'dnn'
11
+ gem 'ruby-dnn'
12
12
  ```
13
13
 
14
14
  And then execute:
@@ -17,7 +17,7 @@ And then execute:
17
17
 
18
18
  Or install it yourself as:
19
19
 
20
- $ gem install dnn
20
+ $ gem install ruby-dnn
21
21
 
22
22
  ## Usage
23
23
 
@@ -6,17 +6,18 @@ module DNN
6
6
  include Numo
7
7
 
8
8
  def initialize
9
- @builded = false
9
+ @built = false
10
10
  end
11
11
 
12
- #Initialize layer when model is compiled.
12
+ #Build the layer.
13
13
  def build(model)
14
14
  @builded = true
15
15
  @model = model
16
16
  end
17
-
18
- def builded?
19
- @builded
17
+
18
+ #Does the layer have already been built?
19
+ def built?
20
+ @built
20
21
  end
21
22
 
22
23
  #Forward propagation.
@@ -343,7 +344,7 @@ module DNN
343
344
  col = im2col(x, @out_width, @out_height, @pool_width, @pool_height, @strides)
344
345
  col = col.reshape(x.shape[0] * @out_width * @out_height * x.shape[3], @pool_width * @pool_height)
345
346
  @max_index = col.max_index(1)
346
- col.max(1).reshape(x.shape[0], @out_width, @out_height, x.shape[3])#.transpose(0, 3, 1, 2)
347
+ col.max(1).reshape(x.shape[0], @out_width, @out_height, x.shape[3])
347
348
  end
348
349
 
349
350
  def backward(dout)
@@ -369,8 +370,56 @@ module DNN
369
370
  }
370
371
  end
371
372
  end
373
+
374
+
375
+ class UnPool2D < Layer
376
+ include Convert
377
+
378
+ def initialize(unpool_width, unpool_height)
379
+ super()
380
+ @unpool_width = unpool_width
381
+ @unpool_height = unpool_height
382
+ end
383
+
384
+ def self.load_hash(hash)
385
+ UnPool2D.new(hash[:unpool_width], hash[:unpool_height])
386
+ end
387
+
388
+ def build(model)
389
+ super
390
+ @origin_width = prev_layer.shape[0]
391
+ @origin_height = prev_layer.shape[1]
392
+ @out_width = @origin_width * @unpool_width
393
+ @out_height = @origin_height * @unpool_height
394
+ @num_channel = prev_layer.shape[2]
395
+ end
396
+
397
+ def forward(x)
398
+ unpool_size = @unpool_width * @unpool_height
399
+ x2 = SFloat.zeros(x.shape[0], x.shape[1], @unpool_width, x.shape[2], @unpool_height, x.shape[3])
400
+ x2[true, true, 0, true, 0, true] = x
401
+ x2.reshape(x.shape[0], @out_width, @out_height, x.shape[3])
402
+ end
403
+
404
+ def backward(dout)
405
+ dout = dout.reshape(dout.shape[0], @origin_width, @unpool_width, @origin_height, @unpool_height, dout.shape[3])
406
+ dout[true, true, 0, true, 0, true].clone
407
+ end
408
+
409
+ def shape
410
+ [@out_width, @out_height, @num_channel]
411
+ end
412
+
413
+ def to_hash
414
+ {
415
+ name: self.class.name,
416
+ unpool_width: @unpool_width,
417
+ unpool_height: @unpool_height,
418
+ }
419
+ end
420
+ end
372
421
 
373
-
422
+
374
423
  class Flatten < Layer
375
424
  def forward(x)
376
425
  @shape = x.shape
@@ -1,3 +1,3 @@
1
1
  module DNN
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
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.2.1
4
+ version: 0.2.2
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-12 00:00:00.000000000 Z
11
+ date: 2018-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: numo-narray