Sha256: b662a12876d305faaa3728a38c8a7eb66042e8d8c0dc54cab10d2f3e8b64efbe

Contents?: true

Size: 906 Bytes

Versions: 2

Compression:

Stored size: 906 Bytes

Contents

module DNN
  # This module provides utility functions.
  module Utils
    # Categorize labels into "num_classes" classes.
    def self.to_categorical(y, num_classes, narray_type = nil)
      narray_type ||= y.class
      y2 = narray_type.zeros(y.shape[0], num_classes)
      y.shape[0].times do |i|
        y2[i, y[i]] = 1
      end
      y2
    end

    # Convert hash to an object.
    def self.load_hash(hash)
      dnn_class = DNN.const_get(hash[:class])
      if dnn_class.respond_to?(:load_hash)
        return dnn_class.load_hash(hash)
      end
      dnn_class.new
    end

    # TODO
    # Don't want to write an implementation of the activation function in utils, so we will consider it later.
    def self.sigmoid(x)
      1 / (1 + NMath.exp(-x))
    end

    def self.softmax(x)
      NMath.exp(x) / NMath.exp(x).sum(1).reshape(x.shape[0], 1)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ruby-dnn-0.9.3 lib/dnn/core/utils.rb
ruby-dnn-0.9.2 lib/dnn/core/utils.rb