mnist-ready 1.1.1 → 1.1.3

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: 4b2b0059fb779cef3b208d6b061f44cf0276050bf2ab03c7ba35d26433bdb119
4
- data.tar.gz: 964e0569bd60637da0c376d054358a9ed70512942f238231050533a1028dab40
3
+ metadata.gz: 4e7b27f81d9d8aa860901b53d849477e1c204fe97f9ee18811caba4fa3b1bf02
4
+ data.tar.gz: 7de49c1978d0457021e28be6f4906685af00ca18bd90cdc5c37d637d32f61445
5
5
  SHA512:
6
- metadata.gz: bf6e5fda8c12fb6dac08c923db72c32b3948bfeb432c03310f88dd711a54d85b847a4c124b5d1787f98f115ff7186601b0c2472cd37c8a5fdbca3e1fc8ae8bab
7
- data.tar.gz: 3622880f3bafe45b3b621221ebfa9c3f02459c9a76551898c38efdef3087cb1cc74b411bf0889e76b3f4081c01a95d2c714c73ebf52ea5eac1c96128fbf57904
6
+ metadata.gz: 84a37ee74b5d893fd3e0f4fce0eb1e90deb7b925e4a6b89094aa3ea9f1ba1f0610f9139ef7d57e7cf5be62e40a5a054164751443d3476db27d81cfb0bf00b108
7
+ data.tar.gz: 2c7882315bff945712be2c85c3a820fe11fdfaad47c132c8c2a130a350031bab6a05e6d99410cec36b5f71ce20fb43303b2a83d9efd8f4a3cf0eff30ef6935bf
data/lib/draw_image.rb ADDED
@@ -0,0 +1,41 @@
1
+ require 'rmagick'
2
+ require 'base64'
3
+
4
+ class DrawImage
5
+
6
+ def self.draw(pixel_array, white_background = false)
7
+
8
+ # Create a new 28x28 image
9
+ image = Magick::Image.new(28, 28)
10
+
11
+ # Set each pixel in the image
12
+ 28.times do |y|
13
+ 28.times do |x|
14
+ pixel_value = pixel_array[y * 28 + x]
15
+ pixel_value = 255 - pixel_value if white_background
16
+ color = Magick::Pixel.new(pixel_value * 257, pixel_value * 257, pixel_value * 257)
17
+ image.pixel_color(x, y, color)
18
+ end
19
+ end
20
+
21
+ # Scale up the image to make it more visible
22
+ image = image.scale(10)
23
+
24
+ # Set the format to PNG
25
+ image.format = 'PNG'
26
+
27
+ # Convert the image to a blob
28
+ blob = image.to_blob
29
+
30
+ # Encode the blob as base64
31
+ encoded_image = Base64.strict_encode64(blob)
32
+
33
+ # Display the image inline using iTerm2's imgcat escape sequence
34
+ puts "\033]1337;File=inline=1;size=#{blob.size}:#{encoded_image}\007"
35
+
36
+ # Force a newline after the image
37
+ puts "\n"
38
+
39
+ end
40
+
41
+ end
data/lib/mnist_dataset.rb CHANGED
@@ -11,7 +11,7 @@ class MnistDataset
11
11
 
12
12
  private_class_method :new
13
13
 
14
- def initialize(show_progress)
14
+ def initialize(show_progress, just_one)
15
15
  test_set = File.join(File.dirname(__FILE__), '..', 'data', 'mnist_test.csv')
16
16
 
17
17
  @train_set = []
@@ -24,6 +24,7 @@ class MnistDataset
24
24
  @test_set.push(digit)
25
25
  @all_set.push(digit)
26
26
  print "\r#{all_set.size}" if show_progress
27
+ break if just_one
27
28
  end
28
29
 
29
30
  (1..3).each do |index|
@@ -34,17 +35,19 @@ class MnistDataset
34
35
  @train_set.push(digit)
35
36
  @all_set.push(digit)
36
37
  print "\r#{all_set.size}" if show_progress
38
+ break if just_one
37
39
  end
40
+ break if just_one
38
41
  end
39
42
  puts if show_progress
40
43
  end
41
44
 
42
45
  attr_reader :all_set, :train_set, :test_set
43
46
 
44
- def self.instance(show_progress = false)
47
+ def self.instance(show_progress = false, just_one = false)
45
48
  return @instance if @instance
46
49
  @instance_mutex.synchronize do
47
- @instance ||= new(show_progress)
50
+ @instance ||= new(show_progress, just_one)
48
51
  end
49
52
  @instance
50
53
  end
@@ -97,13 +100,12 @@ class MnistDataset
97
100
 
98
101
  def count_digits(hash)
99
102
  count = {}
103
+ (0..9).each do |label|
104
+ count[label] = 0
105
+ end
100
106
  hash.each do |digit|
101
- label = digit.label
102
- if count.has_key?(label)
103
- count[label] = count[label] + 1
104
- else
105
- count[label] = 1
106
- end
107
+ label = digit.label
108
+ count[label] = count[label] + 1
107
109
  end
108
110
  count
109
111
  end
data/lib/mnist_digit.rb CHANGED
@@ -13,6 +13,12 @@ class MnistDigit
13
13
  def pixels
14
14
  @pixels
15
15
  end
16
+
17
+ def png_image(white_background = false)
18
+ require_relative 'draw_image.rb'
19
+ puts
20
+ DrawImage.draw(pixels, white_background)
21
+ end
16
22
 
17
23
  def ascii_image
18
24
  img = ""
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mnist-ready
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Oliveira Jr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-02 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2024-09-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rmagick
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
13
27
  description:
14
28
  email: sergio.oliveira.jr@gmail.com
15
29
  executables: []
@@ -20,6 +34,7 @@ files:
20
34
  - data/mnist_train1.csv
21
35
  - data/mnist_train2.csv
22
36
  - data/mnist_train3.csv
37
+ - lib/draw_image.rb
23
38
  - lib/mnist-ready.rb
24
39
  - lib/mnist_dataset.rb
25
40
  - lib/mnist_digit.rb
@@ -42,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
42
57
  - !ruby/object:Gem::Version
43
58
  version: '0'
44
59
  requirements: []
45
- rubygems_version: 3.4.7
60
+ rubygems_version: 3.4.22
46
61
  signing_key:
47
62
  specification_version: 4
48
63
  summary: A simple and straightforward Ruby library that handles everything related