module MNIST
Public Class Methods
categorical(y_data)
click to toggle source
# File lib/nn/mnist.rb, line 28 def self.categorical(y_data) y_data = y_data.map do |label| classes = Array.new(10, 0) classes[label] = 1 classes end end
load_test()
click to toggle source
# File lib/nn/mnist.rb, line 16 def self.load_test if File.exist?("mnist/test.marshal") marshal = File.binread("mnist/test.marshal") Marshal.load(marshal) else x_test, y_test = load("mnist/t10k-images-idx3-ubyte.gz", "mnist/t10k-labels-idx1-ubyte.gz") marshal = Marshal.dump([x_test, y_test]) File.binwrite("mnist/test.marshal", marshal) [x_test, y_test] end end
load_train()
click to toggle source
# File lib/nn/mnist.rb, line 4 def self.load_train if File.exist?("mnist/train.marshal") marshal = File.binread("mnist/train.marshal") Marshal.load(marshal) else x_train, y_train = load("mnist/train-images-idx3-ubyte.gz", "mnist/train-labels-idx1-ubyte.gz") marshal = Marshal.dump([x_train, y_train]) File.binwrite("mnist/train.marshal", marshal) [x_train, y_train] end end
Private Class Methods
load(images_file_name, labels_file_name)
click to toggle source
# File lib/nn/mnist.rb, line 38 def self.load(images_file_name, labels_file_name) images = [] labels = nil Zlib::GzipReader.open(images_file_name) do |f| magic, n_images = f.read(8).unpack("N2") n_rows, n_cols = f.read(8).unpack("N2") n_images.times do images << f.read(n_rows * n_cols).unpack("C*") end end Zlib::GzipReader.open(labels_file_name) do |f| magic, n_labels = f.read(8).unpack("N2") labels = f.read(n_labels).unpack("C*") end [images, labels] end