class Newral::Data::Idx

Public Class Methods

new( file_name: nil, label_file_name: nil ) click to toggle source

reads the MNIST data set fornat yann.lecun.com/exdb/mnist/ used for Handwritten Images

Calls superclass method Newral::Data::Base::new
# File lib/newral/data/idx.rb, line 14
def initialize( file_name: nil, label_file_name: nil )
  @file_name = file_name
  @label_file_name = label_file_name
  super( inputs: [], outputs: [])
end

Public Instance Methods

process() click to toggle source
# File lib/newral/data/idx.rb, line 20
def process
  number_of_items = 0
  open( @file_name, 'rb' ) do |file|
    magic,number_of_items = file.read(8).unpack("NN")
    width,height = file.read(8).unpack("NN")
    number_of_items.times do 
      raise Errors::UnexpectedEOF if file.eof?
      image = file.read(width*height).unpack("C"*width*height)
      @inputs << image 
    end 
    raise Errors::EOFExpected unless file.eof?
  end

  open( @label_file_name, 'rb' ) do |file|
    magic,number_of_labels = file.read(8).unpack("NN")
    raise Errors::LabelsNotMatchingItems unless number_of_labels==number_of_items
    number_of_items.times do 
      raise Errors::UnexpectedEOF,"#{ @outputs.size } vs. #{ number_of_labels }" if file.eof?
      label = file.read(1).unpack("c").first
      @outputs << label 
    end 
    raise Errors::EOFExpected,"#{ @outputs.size } #{file.read.size}" unless file.eof?
  end


end