úÎ<8j/      !"#$%&'()*+,-.EProvides certain general purpose utilities in the Haskell_ML package.(c) David Banas, 2018BSD-3capn.freako@gmail.com experimental?None"#-]<WA single sample in the dataset is a pair of a list of attributes and a classification.OData type representing the set of attributes for a sample in the Iris dataset.JThe 3 classes of iris are represented by the 3 constructors of this type. 1Read in an Iris dataset from the given file name. -Rescale all feature values, to fall in [0,1]./*Finds the minimum value, for a particular  field, in a list of samples.0*Finds the maximum value, for a particular  field, in a list of samples.1Applies a reduction to an  field in a list of s.2Extracts the values of a  field from a list of s. Convert a value of type  to a value of type 3 4.Convert a value of type # to a one-hot vector value of type 3 3.-Calculate the classification accuracy, given:a list of results vectors, anda list of reference vectors.#Calculate the mean value of a list."Pretty printer for values of type 3 n.#Pretty printer for values of type (3 m, 3 n).,Plot a list of Doubles to an ASCII terminal."Convenience function (= flip map).     xAllows: creation, training, running, saving, and loading, of multi-layer, fully connected neural networks.(c) David Banas, 2018BSD-3capn.freako@gmail.com experimental?None"#&'-6FQSTV]h7¹ .Data type for holding training evolution data. training accuracies!'differences of weights/biases, by layer"„A fully connected, multi-layer network with fixed input/output widths, but variable (and existentially hidden!) internal structure.#Returns a value of type "u, filled with random weights ready for training, tucked inside the appropriate Monad, which must be an instance of 4 . (IO is such an instance.)\The input/output widths are determined by the compiler automatically, via type inferencing.ÿThe internal structure of the network is determined by the list of integers passed in. Each integer in the list indicates the output width of one hidden layer, with the first entry in the list corresponding to the hidden layer nearest to the input layer.$Train a network on several epochs of the training data, keeping track of accuracy and weight/bias changes per layer, after each.%"Run a network on a list of inputs.&>Basic sanity test of our code, taken from Justin's repository.7Printed output should contain two offset solid circles.'RReturns a list of integers corresponding to the widths of the hidden layers of a ".(]Returns a list of lists of Doubles, each containing the weights of one layer of the network.)\Returns a list of lists of Doubles, each containing the biases of one layer of the network.5­Normalize a vector to a probability vector, via softmax. softMax :: (KnownNat n) => R n -- ^ vector to be normalized -> R n softMax v = exp v / norm_0 v,6 instance definition for ".GWith this definition, the user of our library is able to use standard 7 and 8j calls, to serialize his created/trained network for future use. And we don't need to provide auxilliary saveNet and loadNet functions in the API.$Number of epochs learning ratethe network to be trainedthe training pairs%the network to runthe list of inputsthe list of outputs  !"#$%&'() " !#%&'()$9:;<=>? !"@;5A       !"#$%&'()*+,-./0123456789:;<=;<>;<?@ABCCDE#F'haskell-ml-0.4.2-AlAAd9LgyUrB8YGkcnGCD2Haskell_ML.UtilHaskell_ML.FCNSample AttributessepLensepWidthpedLenpedWidthIrisSetosa Versicolor Virginica readIrisDatamkSmplsUniformattributeToVectoririsTypeToVectorclassificationAccuracy calcMeanList printVector printVecPair asciiPlotfor $fShowIris $fReadIris$fEqIris $fOrdIris $fEnumIris$fShowAttributes$fReadAttributes$fEqAttributes$fOrdAttributesTrainEvoaccsdiffsFCNetrandNet trainNTimesrunNetnetTest hiddenStruct getWeights getBiases $fBinaryLayer$fBinaryNetwork $fBinaryFCNet $fShowLayer$fGenericLayer minFldVal maxFldVal overSamps fldFromSamps'hmatrix-0.18.2.0-534FHax4hFM1mn7APuCGAeInternal.StaticR(MonadRandom-0.5.1-CoWiKtgSaZqEyWNUYOzGYZControl.Monad.Random.Class MonadRandomlogisticbinary-0.8.5.1Data.Binary.ClassBinaryputgetNetworkW:&~Layerbiasesnodes