----------------------------------------------------
-- |
-- Module     :  AI.Network
-- License    :  GPL
--
-- Maintainer :  Kiet Lam <ktklam9@gmail.com>
--
--
-- This module provides an initialization for
-- a classification neural network model
--
-- NOTE: This theoretically should be faster than
-- the General model if used for classification
--
--
----------------------------------------------------


module AI.Model.Classification (
  initializeClassification
  ) where

import Data.Packed.Vector
import System.Random

import AI.Calculation
import AI.Network
import AI.Model.GenericModel


-- | Make a neural network model
-- that should be used for classification
-- using the Sigmoid as the activation model
-- and Logistic as the cost model
initializeClassification :: [Int]           -- ^ The architecture of the neural network
                            -> Double       -- ^ The regularization constant
                            -> StdGen       -- ^ The random generator
                            -> GenericModel -- ^ Returns the initialized classification
                                            --   model
initializeClassification arch la gen =
  initializeModel Sigmoid Logistic arch la gen