ruby-dnn 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dnn/ext/cifar10_loader/cifar10_loader.c +43 -0
- data/lib/dnn/ext/cifar10_loader/extconf.rb +3 -0
- data/lib/dnn/ext/rb_stb_image/rb_stb_image.c +18 -36
- data/lib/dnn/lib/cifar10.rb +8 -6
- data/lib/dnn/lib/image_io.rb +9 -7
- data/lib/dnn/lib/mnist.rb +3 -2
- data/lib/dnn/version.rb +1 -1
- data/ruby-dnn.gemspec +1 -1
- metadata +5 -63
- data/lib/dnn/ext/dataset_loader/dataset_loader.c +0 -90
- data/lib/dnn/ext/dataset_loader/extconf.rb +0 -3
- data/lib/dnn/ext/dataset_loader/numo/compat.h +0 -23
- data/lib/dnn/ext/dataset_loader/numo/extconf.h +0 -13
- data/lib/dnn/ext/dataset_loader/numo/intern.h +0 -117
- data/lib/dnn/ext/dataset_loader/numo/narray.h +0 -430
- data/lib/dnn/ext/dataset_loader/numo/ndloop.h +0 -94
- data/lib/dnn/ext/dataset_loader/numo/template.h +0 -149
- data/lib/dnn/ext/dataset_loader/numo/types/bit.h +0 -33
- data/lib/dnn/ext/dataset_loader/numo/types/complex.h +0 -409
- data/lib/dnn/ext/dataset_loader/numo/types/complex_macro.h +0 -377
- data/lib/dnn/ext/dataset_loader/numo/types/dcomplex.h +0 -44
- data/lib/dnn/ext/dataset_loader/numo/types/dfloat.h +0 -42
- data/lib/dnn/ext/dataset_loader/numo/types/float_def.h +0 -34
- data/lib/dnn/ext/dataset_loader/numo/types/float_macro.h +0 -186
- data/lib/dnn/ext/dataset_loader/numo/types/int16.h +0 -24
- data/lib/dnn/ext/dataset_loader/numo/types/int32.h +0 -24
- data/lib/dnn/ext/dataset_loader/numo/types/int64.h +0 -24
- data/lib/dnn/ext/dataset_loader/numo/types/int8.h +0 -24
- data/lib/dnn/ext/dataset_loader/numo/types/int_macro.h +0 -41
- data/lib/dnn/ext/dataset_loader/numo/types/real_accum.h +0 -486
- data/lib/dnn/ext/dataset_loader/numo/types/robj_macro.h +0 -75
- data/lib/dnn/ext/dataset_loader/numo/types/robject.h +0 -27
- data/lib/dnn/ext/dataset_loader/numo/types/scomplex.h +0 -44
- data/lib/dnn/ext/dataset_loader/numo/types/sfloat.h +0 -43
- data/lib/dnn/ext/dataset_loader/numo/types/uint16.h +0 -21
- data/lib/dnn/ext/dataset_loader/numo/types/uint32.h +0 -21
- data/lib/dnn/ext/dataset_loader/numo/types/uint64.h +0 -21
- data/lib/dnn/ext/dataset_loader/numo/types/uint8.h +0 -21
- data/lib/dnn/ext/dataset_loader/numo/types/uint_macro.h +0 -32
- data/lib/dnn/ext/dataset_loader/numo/types/xint_macro.h +0 -189
- data/lib/dnn/ext/rb_stb_image/numo/compat.h +0 -23
- data/lib/dnn/ext/rb_stb_image/numo/extconf.h +0 -13
- data/lib/dnn/ext/rb_stb_image/numo/intern.h +0 -117
- data/lib/dnn/ext/rb_stb_image/numo/narray.h +0 -430
- data/lib/dnn/ext/rb_stb_image/numo/ndloop.h +0 -94
- data/lib/dnn/ext/rb_stb_image/numo/template.h +0 -149
- data/lib/dnn/ext/rb_stb_image/numo/types/bit.h +0 -33
- data/lib/dnn/ext/rb_stb_image/numo/types/complex.h +0 -409
- data/lib/dnn/ext/rb_stb_image/numo/types/complex_macro.h +0 -377
- data/lib/dnn/ext/rb_stb_image/numo/types/dcomplex.h +0 -44
- data/lib/dnn/ext/rb_stb_image/numo/types/dfloat.h +0 -42
- data/lib/dnn/ext/rb_stb_image/numo/types/float_def.h +0 -34
- data/lib/dnn/ext/rb_stb_image/numo/types/float_macro.h +0 -186
- data/lib/dnn/ext/rb_stb_image/numo/types/int16.h +0 -24
- data/lib/dnn/ext/rb_stb_image/numo/types/int32.h +0 -24
- data/lib/dnn/ext/rb_stb_image/numo/types/int64.h +0 -24
- data/lib/dnn/ext/rb_stb_image/numo/types/int8.h +0 -24
- data/lib/dnn/ext/rb_stb_image/numo/types/int_macro.h +0 -41
- data/lib/dnn/ext/rb_stb_image/numo/types/real_accum.h +0 -486
- data/lib/dnn/ext/rb_stb_image/numo/types/robj_macro.h +0 -75
- data/lib/dnn/ext/rb_stb_image/numo/types/robject.h +0 -27
- data/lib/dnn/ext/rb_stb_image/numo/types/scomplex.h +0 -44
- data/lib/dnn/ext/rb_stb_image/numo/types/sfloat.h +0 -43
- data/lib/dnn/ext/rb_stb_image/numo/types/uint16.h +0 -21
- data/lib/dnn/ext/rb_stb_image/numo/types/uint32.h +0 -21
- data/lib/dnn/ext/rb_stb_image/numo/types/uint64.h +0 -21
- data/lib/dnn/ext/rb_stb_image/numo/types/uint8.h +0 -21
- data/lib/dnn/ext/rb_stb_image/numo/types/uint_macro.h +0 -32
- data/lib/dnn/ext/rb_stb_image/numo/types/xint_macro.h +0 -189
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8156ccf7edaf425d09a1463bb1c9280a1eeddaa67448323a19d301d451a78a0f
|
4
|
+
data.tar.gz: 851e5aa8c87fd60ee9d5296f995c9b884a1bcaed823ab9e5d034f0b7b52d740b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 520b9dc2ff534d36d86af82750b12a1772d29b487cfc18e02425f14c006e9fc1a15c525a0f1cfbe1ce541d2c7cac0cc7649a0542f3b9448634daf9869471f5d3
|
7
|
+
data.tar.gz: 2ffe038bc5e5b69c61f32f99e9b21df8b2321b32148c6226d85e9aa82cedd8bade8bcbdab66c983a827a923ab3d3e449bb03cedb4c52f9b34fcbd1a732220e43
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#include <ruby.h>
|
2
|
+
#include <stdlib.h>
|
3
|
+
|
4
|
+
#define CIFAR10_WIDTH 32
|
5
|
+
#define CIFAR10_HEIGHT 32
|
6
|
+
#define CIFAR10_CHANNEL 3
|
7
|
+
|
8
|
+
VALUE cifar10_load_binary(VALUE self, VALUE rb_bin, VALUE rb_num_datas) {
|
9
|
+
char* bin = StringValuePtr(rb_bin);
|
10
|
+
int num_datas = FIX2INT(rb_num_datas);
|
11
|
+
VALUE rb_x_bin;
|
12
|
+
VALUE rb_y_bin;
|
13
|
+
int i;
|
14
|
+
int j = 0;
|
15
|
+
int k = 0;
|
16
|
+
int size = CIFAR10_WIDTH * CIFAR10_HEIGHT * CIFAR10_CHANNEL;
|
17
|
+
int x_bin_size = num_datas * size;
|
18
|
+
int y_bin_size = num_datas;
|
19
|
+
char* x_bin;
|
20
|
+
char* y_bin;
|
21
|
+
|
22
|
+
x_bin = (char*)malloc(x_bin_size);
|
23
|
+
y_bin = (char*)malloc(y_bin_size);
|
24
|
+
for (i = 0; i < num_datas; i++) {
|
25
|
+
y_bin[i] = bin[j];
|
26
|
+
j++;
|
27
|
+
memcpy(&x_bin[k], &bin[j], size);
|
28
|
+
j += size;
|
29
|
+
k += size;
|
30
|
+
}
|
31
|
+
rb_x_bin = rb_str_new(x_bin, x_bin_size);
|
32
|
+
rb_y_bin = rb_str_new(y_bin, y_bin_size);
|
33
|
+
free(x_bin);
|
34
|
+
free(y_bin);
|
35
|
+
return rb_ary_new3(2, rb_x_bin, rb_y_bin);
|
36
|
+
}
|
37
|
+
|
38
|
+
void Init_cifar10_loader() {
|
39
|
+
VALUE rb_dnn = rb_define_module("DNN");
|
40
|
+
VALUE rb_cifar10 = rb_define_module_under(rb_dnn, "CIFAR10");
|
41
|
+
|
42
|
+
rb_define_singleton_method(rb_cifar10, "load_binary", cifar10_load_binary, 2);
|
43
|
+
}
|
@@ -1,5 +1,4 @@
|
|
1
1
|
#include <ruby.h>
|
2
|
-
#include "numo/narray.h"
|
3
2
|
|
4
3
|
#define STB_IMAGE_IMPLEMENTATION
|
5
4
|
#define STB_IMAGE_WRITE_IMPLEMENTATION
|
@@ -12,79 +11,62 @@ VALUE rb_stbi_load(VALUE self, VALUE rb_filename, VALUE rb_req_comp) {
|
|
12
11
|
char* filename = StringValuePtr(rb_filename);
|
13
12
|
int x, y, n;
|
14
13
|
int req_comp = FIX2INT(rb_req_comp);
|
15
|
-
unsigned char*
|
16
|
-
narray_data_t* na_data;
|
17
|
-
char script[64];
|
14
|
+
unsigned char* data;
|
18
15
|
int ch;
|
19
16
|
VALUE rb_x, rb_y, rb_n;
|
20
|
-
VALUE
|
17
|
+
VALUE rb_data;
|
21
18
|
|
22
|
-
|
19
|
+
data = stbi_load(filename, &x, &y, &n, req_comp);
|
23
20
|
rb_x = INT2FIX(x);
|
24
21
|
rb_y = INT2FIX(y);
|
25
22
|
rb_n = INT2FIX(n);
|
26
23
|
ch = req_comp == 0 ? n : req_comp;
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
memcpy(na_data->ptr, pixels, na_data->base.size);
|
31
|
-
stbi_image_free(pixels);
|
32
|
-
return rb_ary_new3(4, rb_pixels, rb_x, rb_y, rb_n);
|
24
|
+
rb_data = rb_str_new((char*)data, y * x * ch);
|
25
|
+
stbi_image_free(data);
|
26
|
+
return rb_ary_new3(4, rb_data, rb_x, rb_y, rb_n);
|
33
27
|
}
|
34
28
|
|
35
29
|
//STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes);
|
36
|
-
VALUE rb_stbi_write_png(VALUE self, VALUE rb_filename, VALUE rb_w, VALUE rb_h, VALUE rb_comp, VALUE
|
30
|
+
VALUE rb_stbi_write_png(VALUE self, VALUE rb_filename, VALUE rb_w, VALUE rb_h, VALUE rb_comp, VALUE rb_data, VALUE rb_stride_in_bytes) {
|
37
31
|
char* filename = StringValuePtr(rb_filename);
|
38
32
|
int w = FIX2INT(rb_w);
|
39
33
|
int h = FIX2INT(rb_h);
|
40
34
|
int comp = FIX2INT(rb_comp);
|
41
|
-
unsigned char*
|
35
|
+
unsigned char* data = (unsigned char*)StringValuePtr(rb_data);
|
42
36
|
int stride_in_bytes = FIX2INT(rb_stride_in_bytes);
|
43
|
-
narray_data_t* na_data;
|
44
37
|
int result;
|
45
38
|
|
46
|
-
|
47
|
-
|
48
|
-
memcpy(pixels, na_data->ptr, na_data->base.size);
|
49
|
-
result = stbi_write_png(filename, w, h, comp, pixels, stride_in_bytes);
|
50
|
-
stbi_image_free(pixels);
|
39
|
+
result = stbi_write_png(filename, w, h, comp, data, stride_in_bytes);
|
40
|
+
stbi_image_free(data);
|
51
41
|
return INT2FIX(result);
|
52
42
|
}
|
53
43
|
|
54
44
|
//STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data);
|
55
|
-
VALUE rb_stbi_write_bmp(VALUE self, VALUE rb_filename, VALUE rb_w, VALUE rb_h, VALUE rb_comp, VALUE
|
45
|
+
VALUE rb_stbi_write_bmp(VALUE self, VALUE rb_filename, VALUE rb_w, VALUE rb_h, VALUE rb_comp, VALUE rb_data) {
|
56
46
|
char* filename = StringValuePtr(rb_filename);
|
57
47
|
int w = FIX2INT(rb_w);
|
58
48
|
int h = FIX2INT(rb_h);
|
59
49
|
int comp = FIX2INT(rb_comp);
|
60
|
-
unsigned char*
|
61
|
-
narray_data_t* na_data;
|
50
|
+
unsigned char* data = (unsigned char*)StringValuePtr(rb_data);
|
62
51
|
int result;
|
63
52
|
|
64
|
-
|
65
|
-
|
66
|
-
memcpy(pixels, na_data->ptr, na_data->base.size);
|
67
|
-
result = stbi_write_bmp(filename, w, h, comp, pixels);
|
68
|
-
stbi_image_free(pixels);
|
53
|
+
result = stbi_write_bmp(filename, w, h, comp, data);
|
54
|
+
stbi_image_free(data);
|
69
55
|
return INT2FIX(result);
|
70
56
|
}
|
71
57
|
|
72
58
|
//STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality);
|
73
|
-
VALUE rb_stbi_write_jpg(VALUE self, VALUE rb_filename, VALUE rb_w, VALUE rb_h, VALUE rb_comp, VALUE
|
59
|
+
VALUE rb_stbi_write_jpg(VALUE self, VALUE rb_filename, VALUE rb_w, VALUE rb_h, VALUE rb_comp, VALUE rb_data, VALUE rb_quality) {
|
74
60
|
char* filename = StringValuePtr(rb_filename);
|
75
61
|
int w = FIX2INT(rb_w);
|
76
62
|
int h = FIX2INT(rb_h);
|
77
63
|
int comp = FIX2INT(rb_comp);
|
78
|
-
unsigned char*
|
64
|
+
unsigned char* data = (unsigned char*)StringValuePtr(rb_data);
|
79
65
|
int quality = FIX2INT(rb_quality);
|
80
|
-
narray_data_t* na_data;
|
81
66
|
int result;
|
82
67
|
|
83
|
-
|
84
|
-
|
85
|
-
memcpy(pixels, na_data->ptr, na_data->base.size);
|
86
|
-
result = stbi_write_jpg(filename, w, h, comp, pixels, quality);
|
87
|
-
stbi_image_free(pixels);
|
68
|
+
result = stbi_write_jpg(filename, w, h, comp, data, quality);
|
69
|
+
stbi_image_free(data);
|
88
70
|
return INT2FIX(result);
|
89
71
|
}
|
90
72
|
|
data/lib/dnn/lib/cifar10.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require "dnn"
|
2
|
-
require "dnn/ext/
|
2
|
+
require "dnn/ext/cifar10_loader/cifar10_loader"
|
3
3
|
require "open-uri"
|
4
4
|
require "zlib"
|
5
5
|
require "archive/tar/minitar"
|
@@ -13,7 +13,7 @@ module DNN
|
|
13
13
|
|
14
14
|
class DNN_CIFAR10_DownloadError < DNN_Error; end
|
15
15
|
|
16
|
-
private_class_method :
|
16
|
+
private_class_method :load_binary
|
17
17
|
|
18
18
|
def self.downloads
|
19
19
|
return if Dir.exist?(__dir__ + "/" + CIFAR10_DIR)
|
@@ -42,8 +42,9 @@ module DNN
|
|
42
42
|
raise DNN_CIFAR10_LoadError.new(%`file "#{fname}" is not found.`) unless File.exist?(fname)
|
43
43
|
bin << File.binread(fname)
|
44
44
|
end
|
45
|
-
|
46
|
-
x_train =
|
45
|
+
x_bin, y_bin = load_binary(bin, 50000)
|
46
|
+
x_train = Numo::UInt8.from_binary(x_bin).reshape(50000, 3, 32, 32).transpose(0, 2, 3, 1).clone
|
47
|
+
y_train = Numo::UInt8.from_binary(y_bin)
|
47
48
|
[x_train, y_train]
|
48
49
|
end
|
49
50
|
|
@@ -52,8 +53,9 @@ module DNN
|
|
52
53
|
fname = __dir__ + "/#{CIFAR10_DIR}/test_batch.bin"
|
53
54
|
raise DNN_CIFAR10_LoadError.new(%`file "#{fname}" is not found.`) unless File.exist?(fname)
|
54
55
|
bin = File.binread(fname)
|
55
|
-
|
56
|
-
x_test =
|
56
|
+
x_bin, y_bin = load_binary(bin, 10000)
|
57
|
+
x_test = Numo::UInt8.from_binary(x_bin).reshape(10000, 3, 32, 32).transpose(0, 2, 3, 1).clone
|
58
|
+
y_test = Numo::UInt8.from_binary(y_bin)
|
57
59
|
[x_test, y_test]
|
58
60
|
end
|
59
61
|
end
|
data/lib/dnn/lib/image_io.rb
CHANGED
@@ -5,26 +5,28 @@ module DNN
|
|
5
5
|
module ImageIO
|
6
6
|
def self.read(file_name)
|
7
7
|
raise ImageIO::ReadError.new("#{file_name} is not found.") unless File.exist?(file_name)
|
8
|
-
|
9
|
-
img
|
8
|
+
bin, w, h, n = Stb.stbi_load(file_name, 3)
|
9
|
+
img = Numo::UInt8.from_binary(bin)
|
10
|
+
img.reshape(h, w, 3)
|
10
11
|
end
|
11
12
|
|
12
13
|
def self.write(file_name, img, quality: 100)
|
13
|
-
img = img.clone
|
14
14
|
if img.shape.length == 2
|
15
15
|
img = Numo::UInt8[img, img, img].transpose(1, 2, 0).clone
|
16
16
|
elsif img.shape[2] == 1
|
17
17
|
img = img.shape(img.shape[0], img.shape[1])
|
18
18
|
img = Numo::UInt8[img, img, img].transpose(1, 2, 0).clone
|
19
19
|
end
|
20
|
+
h, w, ch = img.shape
|
21
|
+
bin = img.to_binary
|
20
22
|
case file_name
|
21
23
|
when /\.png$/
|
22
|
-
stride_in_bytes =
|
23
|
-
Stb.stbi_write_png(file_name,
|
24
|
+
stride_in_bytes = w * ch
|
25
|
+
Stb.stbi_write_png(file_name, w, h, ch, bin, stride_in_bytes)
|
24
26
|
when /\.bmp$/
|
25
|
-
Stb.stbi_write_bmp(file_name,
|
27
|
+
Stb.stbi_write_bmp(file_name, w, h, ch, bin)
|
26
28
|
when /\.jpg$/
|
27
|
-
Stb.stbi_write_jpg(file_name,
|
29
|
+
Stb.stbi_write_jpg(file_name, w, h, ch, bin, quality)
|
28
30
|
end
|
29
31
|
rescue => ex
|
30
32
|
raise ImageIO::WriteError.new(ex.message)
|
data/lib/dnn/lib/mnist.rb
CHANGED
@@ -73,7 +73,8 @@ module DNN
|
|
73
73
|
Zlib::GzipReader.open(file_name) do |f|
|
74
74
|
magic, num_images = f.read(8).unpack("N2")
|
75
75
|
rows, cols = f.read(8).unpack("N2")
|
76
|
-
images =
|
76
|
+
images = Numo::UInt8.from_binary(f.read)
|
77
|
+
images = images.reshape(num_images, cols, rows)
|
77
78
|
end
|
78
79
|
images
|
79
80
|
end
|
@@ -82,7 +83,7 @@ module DNN
|
|
82
83
|
labels = nil
|
83
84
|
Zlib::GzipReader.open(file_name) do |f|
|
84
85
|
magic, num_labels = f.read(8).unpack("N2")
|
85
|
-
labels =
|
86
|
+
labels = Numo::UInt8.from_binary(f.read)
|
86
87
|
end
|
87
88
|
labels
|
88
89
|
end
|
data/lib/dnn/version.rb
CHANGED
data/ruby-dnn.gemspec
CHANGED
@@ -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 = ["lib/dnn/ext/
|
16
|
+
spec.extensions = ["lib/dnn/ext/cifar10_loader/extconf.rb", "lib/dnn/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.4.
|
4
|
+
version: 0.4.1
|
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-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: numo-narray
|
@@ -85,7 +85,7 @@ email:
|
|
85
85
|
- ootoro838861@outlook.jp
|
86
86
|
executables: []
|
87
87
|
extensions:
|
88
|
-
- lib/dnn/ext/
|
88
|
+
- lib/dnn/ext/cifar10_loader/extconf.rb
|
89
89
|
- lib/dnn/ext/rb_stb_image/extconf.rb
|
90
90
|
extra_rdoc_files: []
|
91
91
|
files:
|
@@ -112,67 +112,9 @@ files:
|
|
112
112
|
- lib/dnn/core/model.rb
|
113
113
|
- lib/dnn/core/optimizers.rb
|
114
114
|
- lib/dnn/core/util.rb
|
115
|
-
- lib/dnn/ext/
|
116
|
-
- lib/dnn/ext/
|
117
|
-
- lib/dnn/ext/dataset_loader/numo/compat.h
|
118
|
-
- lib/dnn/ext/dataset_loader/numo/extconf.h
|
119
|
-
- lib/dnn/ext/dataset_loader/numo/intern.h
|
120
|
-
- lib/dnn/ext/dataset_loader/numo/narray.h
|
121
|
-
- lib/dnn/ext/dataset_loader/numo/ndloop.h
|
122
|
-
- lib/dnn/ext/dataset_loader/numo/template.h
|
123
|
-
- lib/dnn/ext/dataset_loader/numo/types/bit.h
|
124
|
-
- lib/dnn/ext/dataset_loader/numo/types/complex.h
|
125
|
-
- lib/dnn/ext/dataset_loader/numo/types/complex_macro.h
|
126
|
-
- lib/dnn/ext/dataset_loader/numo/types/dcomplex.h
|
127
|
-
- lib/dnn/ext/dataset_loader/numo/types/dfloat.h
|
128
|
-
- lib/dnn/ext/dataset_loader/numo/types/float_def.h
|
129
|
-
- lib/dnn/ext/dataset_loader/numo/types/float_macro.h
|
130
|
-
- lib/dnn/ext/dataset_loader/numo/types/int16.h
|
131
|
-
- lib/dnn/ext/dataset_loader/numo/types/int32.h
|
132
|
-
- lib/dnn/ext/dataset_loader/numo/types/int64.h
|
133
|
-
- lib/dnn/ext/dataset_loader/numo/types/int8.h
|
134
|
-
- lib/dnn/ext/dataset_loader/numo/types/int_macro.h
|
135
|
-
- lib/dnn/ext/dataset_loader/numo/types/real_accum.h
|
136
|
-
- lib/dnn/ext/dataset_loader/numo/types/robj_macro.h
|
137
|
-
- lib/dnn/ext/dataset_loader/numo/types/robject.h
|
138
|
-
- lib/dnn/ext/dataset_loader/numo/types/scomplex.h
|
139
|
-
- lib/dnn/ext/dataset_loader/numo/types/sfloat.h
|
140
|
-
- lib/dnn/ext/dataset_loader/numo/types/uint16.h
|
141
|
-
- lib/dnn/ext/dataset_loader/numo/types/uint32.h
|
142
|
-
- lib/dnn/ext/dataset_loader/numo/types/uint64.h
|
143
|
-
- lib/dnn/ext/dataset_loader/numo/types/uint8.h
|
144
|
-
- lib/dnn/ext/dataset_loader/numo/types/uint_macro.h
|
145
|
-
- lib/dnn/ext/dataset_loader/numo/types/xint_macro.h
|
115
|
+
- lib/dnn/ext/cifar10_loader/cifar10_loader.c
|
116
|
+
- lib/dnn/ext/cifar10_loader/extconf.rb
|
146
117
|
- lib/dnn/ext/rb_stb_image/extconf.rb
|
147
|
-
- lib/dnn/ext/rb_stb_image/numo/compat.h
|
148
|
-
- lib/dnn/ext/rb_stb_image/numo/extconf.h
|
149
|
-
- lib/dnn/ext/rb_stb_image/numo/intern.h
|
150
|
-
- lib/dnn/ext/rb_stb_image/numo/narray.h
|
151
|
-
- lib/dnn/ext/rb_stb_image/numo/ndloop.h
|
152
|
-
- lib/dnn/ext/rb_stb_image/numo/template.h
|
153
|
-
- lib/dnn/ext/rb_stb_image/numo/types/bit.h
|
154
|
-
- lib/dnn/ext/rb_stb_image/numo/types/complex.h
|
155
|
-
- lib/dnn/ext/rb_stb_image/numo/types/complex_macro.h
|
156
|
-
- lib/dnn/ext/rb_stb_image/numo/types/dcomplex.h
|
157
|
-
- lib/dnn/ext/rb_stb_image/numo/types/dfloat.h
|
158
|
-
- lib/dnn/ext/rb_stb_image/numo/types/float_def.h
|
159
|
-
- lib/dnn/ext/rb_stb_image/numo/types/float_macro.h
|
160
|
-
- lib/dnn/ext/rb_stb_image/numo/types/int16.h
|
161
|
-
- lib/dnn/ext/rb_stb_image/numo/types/int32.h
|
162
|
-
- lib/dnn/ext/rb_stb_image/numo/types/int64.h
|
163
|
-
- lib/dnn/ext/rb_stb_image/numo/types/int8.h
|
164
|
-
- lib/dnn/ext/rb_stb_image/numo/types/int_macro.h
|
165
|
-
- lib/dnn/ext/rb_stb_image/numo/types/real_accum.h
|
166
|
-
- lib/dnn/ext/rb_stb_image/numo/types/robj_macro.h
|
167
|
-
- lib/dnn/ext/rb_stb_image/numo/types/robject.h
|
168
|
-
- lib/dnn/ext/rb_stb_image/numo/types/scomplex.h
|
169
|
-
- lib/dnn/ext/rb_stb_image/numo/types/sfloat.h
|
170
|
-
- lib/dnn/ext/rb_stb_image/numo/types/uint16.h
|
171
|
-
- lib/dnn/ext/rb_stb_image/numo/types/uint32.h
|
172
|
-
- lib/dnn/ext/rb_stb_image/numo/types/uint64.h
|
173
|
-
- lib/dnn/ext/rb_stb_image/numo/types/uint8.h
|
174
|
-
- lib/dnn/ext/rb_stb_image/numo/types/uint_macro.h
|
175
|
-
- lib/dnn/ext/rb_stb_image/numo/types/xint_macro.h
|
176
118
|
- lib/dnn/ext/rb_stb_image/rb_stb_image.c
|
177
119
|
- lib/dnn/ext/rb_stb_image/stb_image.h
|
178
120
|
- lib/dnn/ext/rb_stb_image/stb_image_write.h
|
@@ -1,90 +0,0 @@
|
|
1
|
-
#include <ruby.h>
|
2
|
-
#include <stdlib.h>
|
3
|
-
#include "numo/narray.h"
|
4
|
-
|
5
|
-
#define CIFAR10_WIDTH 32
|
6
|
-
#define CIFAR10_HEIGHT 32
|
7
|
-
#define CIFAR10_CHANNEL 3
|
8
|
-
|
9
|
-
VALUE mnist_load_images(VALUE self, VALUE rb_bin, VALUE rb_num_images, VALUE rb_cols, VALUE rb_rows) {
|
10
|
-
char* bin = StringValuePtr(rb_bin);
|
11
|
-
int num_images = FIX2INT(rb_num_images);
|
12
|
-
int cols = FIX2INT(rb_cols);
|
13
|
-
int rows = FIX2INT(rb_rows);
|
14
|
-
int i;
|
15
|
-
int j;
|
16
|
-
char script[64];
|
17
|
-
VALUE rb_na;
|
18
|
-
narray_data_t* na_data;
|
19
|
-
|
20
|
-
sprintf(script, "Numo::UInt8.zeros(%d, %d, %d)", num_images, cols, rows);
|
21
|
-
rb_na = rb_eval_string(&script[0]);
|
22
|
-
na_data = RNARRAY_DATA(rb_na);
|
23
|
-
|
24
|
-
for (i = 0; i < num_images; i++) {
|
25
|
-
j = i * cols * rows;
|
26
|
-
memcpy(&na_data->ptr[j], &bin[j], cols * rows);
|
27
|
-
}
|
28
|
-
return rb_na;
|
29
|
-
}
|
30
|
-
|
31
|
-
VALUE mnist_load_labels(VALUE self, VALUE rb_bin, VALUE rb_num_labels) {
|
32
|
-
char* bin = StringValuePtr(rb_bin);
|
33
|
-
int num_labels = FIX2INT(rb_num_labels);
|
34
|
-
char script[64];
|
35
|
-
VALUE rb_na;
|
36
|
-
narray_data_t* na_data;
|
37
|
-
|
38
|
-
sprintf(script, "Numo::UInt8.zeros(%d)", num_labels);
|
39
|
-
rb_na = rb_eval_string(&script[0]);
|
40
|
-
na_data = RNARRAY_DATA(rb_na);
|
41
|
-
|
42
|
-
memcpy(na_data->ptr, bin, num_labels);
|
43
|
-
return rb_na;
|
44
|
-
}
|
45
|
-
|
46
|
-
VALUE cifar10_load(VALUE self, VALUE rb_bin, VALUE rb_num_datas) {
|
47
|
-
char* bin = StringValuePtr(rb_bin);
|
48
|
-
int num_datas = FIX2INT(rb_num_datas);
|
49
|
-
char script[64];
|
50
|
-
VALUE rb_na_x;
|
51
|
-
VALUE rb_na_y;
|
52
|
-
VALUE rb_xy;
|
53
|
-
narray_data_t* na_data_x;
|
54
|
-
narray_data_t* na_data_y;
|
55
|
-
int i;
|
56
|
-
int j = 0;
|
57
|
-
int k = 0;
|
58
|
-
int size = CIFAR10_WIDTH * CIFAR10_HEIGHT * CIFAR10_CHANNEL;
|
59
|
-
|
60
|
-
sprintf(script, "Numo::UInt8.zeros(%d, %d, %d, %d)", num_datas, CIFAR10_CHANNEL, CIFAR10_WIDTH, CIFAR10_HEIGHT);
|
61
|
-
rb_na_x = rb_eval_string(&script[0]);
|
62
|
-
na_data_x = RNARRAY_DATA(rb_na_x);
|
63
|
-
for(i = 0; i < 64; i++) {
|
64
|
-
script[i] = 0;
|
65
|
-
}
|
66
|
-
sprintf(script, "Numo::UInt8.zeros(%d)", num_datas);
|
67
|
-
rb_na_y = rb_eval_string(&script[0]);
|
68
|
-
na_data_y = RNARRAY_DATA(rb_na_y);
|
69
|
-
|
70
|
-
for (i = 0; i < num_datas; i++) {
|
71
|
-
na_data_y->ptr[i] = bin[j];
|
72
|
-
j++;
|
73
|
-
memcpy(&na_data_x->ptr[k], &bin[j], size);
|
74
|
-
j += size;
|
75
|
-
k += size;
|
76
|
-
}
|
77
|
-
|
78
|
-
rb_xy = rb_ary_new3(2, rb_na_x, rb_na_y);
|
79
|
-
return rb_xy;
|
80
|
-
}
|
81
|
-
|
82
|
-
void Init_dataset_loader() {
|
83
|
-
VALUE rb_dnn = rb_define_module("DNN");
|
84
|
-
VALUE rb_mnist = rb_define_module_under(rb_dnn, "MNIST");
|
85
|
-
VALUE rb_cifar10 = rb_define_module_under(rb_dnn, "CIFAR10");
|
86
|
-
|
87
|
-
rb_define_singleton_method(rb_mnist, "_mnist_load_images", mnist_load_images, 4);
|
88
|
-
rb_define_singleton_method(rb_mnist, "_mnist_load_labels", mnist_load_labels, 2);
|
89
|
-
rb_define_singleton_method(rb_cifar10, "_cifar10_load", cifar10_load, 2);
|
90
|
-
}
|