Neuron module, defining an artificial neuron type and the basical operations we can do on it
- data Neuron = Neuron {}
- createNeuronU :: Double -> UArr Double -> (Double -> Double) -> Neuron
- createNeuronHeavysideU :: Double -> UArr Double -> Neuron
- createNeuronSigmoidU :: Double -> UArr Double -> Neuron
- createNeuron :: Double -> [Double] -> (Double -> Double) -> Neuron
- createNeuronHeavyside :: Double -> [Double] -> Neuron
- createNeuronSigmoid :: Double -> [Double] -> Neuron
- heavyside :: Double -> Double
- sigmoid :: Double -> Double
- computeU :: Neuron -> UArr Double -> Double
- compute :: Neuron -> [Double] -> Double
- learnSampleU :: Double -> Neuron -> (UArr Double, Double) -> Neuron
- learnSample :: Double -> Neuron -> ([Double], Double) -> Neuron
- learnSamplesU :: Double -> Neuron -> [(UArr Double, Double)] -> Neuron
- learnSamples :: Double -> Neuron -> [([Double], Double)] -> Neuron
Type Definitions, type class instances
Our Artificial Neuron type
Neuron creation
createNeuronU :: Double -> UArr Double -> (Double -> Double) -> NeuronSource
Creates a Neuron with the given threshold, weights and transfer function
createNeuronHeavysideU :: Double -> UArr Double -> NeuronSource
Equivalent to `createNeuronU t ws heavyside'
createNeuronSigmoidU :: Double -> UArr Double -> NeuronSource
Equivalent to `createNeuronU t ws sigmoid'
createNeuron :: Double -> [Double] -> (Double -> Double) -> NeuronSource
Same as createNeuronU, with a list instead of an UArr for the weights (converted to UArr anyway)
createNeuronHeavyside :: Double -> [Double] -> NeuronSource
Same as createNeuronHeavysideU, with a list instead of an UArr for the weights (converted to UArr anyway)
createNeuronSigmoid :: Double -> [Double] -> NeuronSource
Same as createNeuronSigmoidU, with a list instead of an UArr for the weights (converted to UArr anyway)
Transfer functions
Neuron output computation
computeU :: Neuron -> UArr Double -> DoubleSource
Computes the output of a given Neuron for given inputs
Neuron learning with Widrow-Hoff (Delta rule)
learnSampleU :: Double -> Neuron -> (UArr Double, Double) -> NeuronSource
Trains a neuron with the given sample, of the form (inputs, wanted_result) and the given learning ratio (alpha)