This test used a library module that no longer exists (Printf).
+++ /dev/null
-BpGen.hs
-Written by Sam Waugh
-Date started : 9th November 1992
-
-This module implements backprop using pattern presentation style,
-allowing for a general number of layers. No sigmoid on last layer.
-+ 0.1 to sigmoid derivative. It does not implement momentum.
-
-Need to use modules for matrix and vector operations.
-
-> module BpGen {-partain:(Dimensions(..),
-> Layer(..), Layers(..),
-> Eg(..), Egs(..),
-> Weight(..), Weights(..),
-> maxplace, classeg, calcerror, selectegs,
-> trainweights, randweights)-} where
-
-> import {-fool mkdependHS-}
-> Random
-> import List(transpose)
-> infixl 7 $$
-
-> randomInts :: a -> Int -> [Int]
-> randomInts _ l = randoms (mkStdGen l)
-> randomDoubles :: a -> Int -> [Double]
-> randomDoubles _ l = randoms (mkStdGen l)
-
--------------------------------------------------------------------------------
-| Data Types |
--------------------------------------------------------------------------------
-
-> type Dimensions = [Int] -- for network topology
-> type Layer = [Double] -- vector for layers (incl. input and output)
-> type Layers = [Layer]
-> type Weight = [[Double]] -- connections between layers
-> type Weights = [Weight]
-> type Eg = (Layer,Layer) -- attributes and classes
-> type Egs = [Eg]
-
-
--------------------------------------------------------------------------------
-| Utility functions |
--------------------------------------------------------------------------------
-
-Maxplace finds the position of the maximum element in a list.
-sublist subtracts two vectors, $$ performs across vector multiplication
-weivecmult multiplies a matrix and a vector
-classeg takes the weights of a network and an input vector, and produces
-a list of the Layers of the network after classification
-calcerror calculates the root mean squared error of the data set
-Also implemented sqr and sig (Sigmoid function).
-
-> maxplace :: (Ord a) => [a] -> Int
-> maxplace xs = length (takeWhile (/=(maximum xs)) xs)
-
-> sqr :: (Num a) => a -> a
-> sqr x = x * x
-
-> sig :: (Floating a) => a -> a
-> sig x = 1.0 / (1.0 + exp (negate x))
-
-> sublist, ($$) :: (Num a) => [a] -> [a] -> [a]
-> sublist = zipWith (-)
-> ($$) = zipWith (*)
-
-> weivecmult :: Weight -> Layer -> Layer
-> weivecmult w v = [sum (wi $$ v) | wi <- w]
-
-
-> classeg :: Weights -> Layer -> Layers
-> classeg [] y = [y]
-> classeg (w:ws) l
-> = let l' = if null ws then weivecmult w templ
-> else map sig (weivecmult w templ)
-> templ = if null ws then l
-> else 1.0 : l
-> in templ : (classeg ws l')
-
-
-
-> calcerror :: Weights -> Egs -> Double
-> calcerror ws egs = sqrt (calcerror1 ws egs)
-
-> calcerror1 :: Weights -> Egs -> Double
-> calcerror1 _ [] = 0.0
-> calcerror1 ws ((x,t):egs)
-> = (sum.(map sqr).(sublist t).last) (classeg ws x)
-> + calcerror1 ws egs
-
-
--------------------------------------------------------------------------------
-| Network Training Functions |
--------------------------------------------------------------------------------
-
-selectegs produces a list of random numbers corresponding to the examples
-to be selected during training. (It takes the range of the examples)
-
-> selectegs :: Int -> [Int]
-> selectegs n = map (`rem` n) (randomInts n n)
-
-
-trainweights calls trainepoch to iteratively train the network. It
-also checks the error at the end of each call to see if it has fallen to
-a reasonable level.
-
-> trainweights :: Egs -> Weights -> Int -> Double -> Double
-> -> [Int] -> (Weights, [Double])
-> trainweights _ ws 0 _ _ _ = (ws, [])
-> --should be:trainweights egs ws (eps+1) err eta rs
-> trainweights egs ws eps err eta rs
-> | eps < 0 = error "BpGen.trainweights"
-> | otherwise
-> = let (ws',rs') = trainepoch egs ws (length egs) eta rs
-> newerr = calcerror ws' egs
-> (ws'', errs) = trainweights egs ws' (eps-1) err eta rs'
-> in if newerr < err then (ws', [newerr])
-> else (ws'', newerr:errs)
-
-
-trainepoch iteratively calls classeg and backprop to train the network,
-as well as selecting an example.
-
-> trainepoch :: Egs -> Weights -> Int -> Double -> [Int] -> (Weights, [Int])
-> trainepoch _ ws 0 _ rs = (ws,rs)
-> --should be: trainepoch egs ws (egno+1) eta (r:rs)
-> trainepoch egs ws egno eta (r:rs)
-> | egno < 0 = error "BpGen.trainepoch"
-> | otherwise
-> = let (x,t) = egs !! r
-> ws' = backprop eta (classeg ws x) ws t
-> in trainepoch egs ws' (egno-1) eta rs
-
-
-backprop causes weight changes after calculating the change
-
-> backprop :: Double -> Layers -> Weights -> Layer -> Weights
-> backprop eta (o:os) (w:ws) t
-> = changeweights eta (o:os) (calcchange os ws t) (w:ws)
-
-
-calcchange calculates the changes to the weights
-
-> calcchange :: Layers -> Weights -> Layer -> Layers
-> calcchange [o] [] t = [sublist t o]
-> calcchange (o:os) (w:ws) t
-> = (sigop o (weivecmult (transpose w) (head ds))) : ds
-> where ds = calcchange os ws t
-
-
-sigop performs the calculations involving the derivative of the sigmoid.
-This uses a constant to eliminate flat spots [Fahlman, 1988]
-
-> sigop :: Layer -> Layer -> Layer
-> sigop out change
-> = let sig' x = x * (1.0 - x) + 0.1
-> in (map sig' out) $$ change
-
-
-changeweights makes the actual changes to weights
-
-> changeweights :: Double -> Layers -> Layers -> Weights -> Weights
-> changeweights eta os ds ws
-> = [[[wji + eta * dj * oi | (oi,wji) <- zip o wj]
-> | (dj,wj) <- zip d w]
-> | (w,d,o) <- zip3 ws ds os]
-
-
--------------------------------------------------------------------------------
-| Weight Manipulation |
--------------------------------------------------------------------------------
-
-randweights generates random weights in the range -1.0 to +1.0
-
-> randweights :: Dimensions -> Weights
-> randweights dimensions
-> = genweights dimensions (map (\x -> 2.0 * x - 1.0) (randomDoubles 1 1))
-
-
-Generates weights, taking the values from the list of Doubles.
-The weight sizes are taken from the list of dimensions.
-
-> genweights :: Dimensions -> [Double] -> Weights
-> genweights [x] _ = []
-> genweights (x:y:dimensions) rs
-> = let (w, rs') = if null dimensions then multSplitAt x y rs
-> else multSplitAt (x+1) y rs
-> in w : (genweights (y:dimensions) rs')
-
-
-> multSplitAt :: Int -> Int -> [a] -> ([[a]],[a])
-> multSplitAt inner 0 xs = ([], xs)
-> --should be:multSplitAt inner (outer + 1) xs
-> multSplitAt inner outer xs
-> | outer < 0 = error "BpGen.multSplitAt"
-> | otherwise
-> = let (l, xs') = splitAt inner xs
-> (ls, xs'') = multSplitAt inner (outer-1) xs'
-> in (l:ls, xs'')
+++ /dev/null
-From: waugh@probitas.cs.utas.edu.au (Sam Waugh)
-Message-Id: <9410100613.AA68794@probitas.cs.utas.edu.au>
-Subject: "Bug" in 0.22 -- order of magnitude slower than hbc
-To: glasgow-haskell-bugs@dcs.gla.ac.uk
-Date: Mon, 10 Oct 1994 17:13:41 +1000 (EETDT)
-
-Hi.
-
-I've come up with what you might consider to be a bug with ghc-0.22 (unless
-I've done something obviously wrong). I wrote some code to perform a simple
-backpropagation neural network simulator (just to see how it would go), and
-I have just recompiled it using hbc version 0.999.4. The ghc executable was
-much slower -- even when "optimised".
-
-I've included at the bottom of this message a uuencoded gzipped tar file
-(took a while to make) which includes the following documents:
-
- *.lhs -- actual code
- makefile -- makefile for ghc (hbc was compiled by producing
- object files and linking them together. The
- optimised hbc code used -O. The optimised
- ghc code was generated with the extra options
- in the makefile).
- temp -- machine and gcc compiler details.
- compile -- standard ghc compilation with -v
- out.0.22 -- output from all trials
- err.* -- the timings of the different trials (ignore the
- .2 on the .999.4.2 files -- it was a second
- try).
-
-Hopefully that is all the files I've included and all the files you need.
-Let me know if you have any problems.
-
-On a final note -- when compiling using all the optimisations for ghc there
-were an awful lot of warnings. Is there anyway you can get rid of these
-(like by fixing the problems)? It might be obscuring something important.
-
-Thanks for your time.
-
-Sam.
---
-Sam Waugh Phone: +61 02 202962
-Department of Computer Science Fax: +61 02 202913
-University of Tasmania Email: waugh@cs.utas.edu.au
-GPO Box 252C, Hobart Tasmania 7001, Australia
-
-[snip snip]
+++ /dev/null
-Main.hs for backprop simulation
-Written by Sam Waugh
-Date started: 10th November 1992.
-
-This main module initialises, runs and gets results from the
-backpropagation functions and values.
-
-> import BpGen
-> import ReadLists (readWhiteList)
-> import Numeric(showFFloat)
-
--------------------------------------------------------------------------------
-| Constant Values |
--------------------------------------------------------------------------------
-The following constants set the training problem and parameters:
- name - the name of the file
- dimensions - the layered network topology
- eta - the learning rate
- accepterr - the level of error acceptable to stop training
- epochs - the maximum number of epochs in training
-
-> name :: String
-> name = "xor"
-> dimensions :: Dimensions
-> dimensions = [2,2,1]
-> eta,accepterr :: Double
-> eta = 1.0
-> accepterr = 0.001
-> epochs :: Int
-> epochs = 10000
-
-
--------------------------------------------------------------------------------
-| IO and Main Program |
--------------------------------------------------------------------------------
-
-> main = do
-> s <- readFile name
-> putStr (program s "")
-
-> program :: String -> ShowS
-> program s
-> = let egs = readegs s
-> ws = randweights dimensions
-> rs = selectegs (length egs)
-> (ws',res) = trainweights egs ws epochs accepterr eta rs
-> in
-> showString "Examples:\n"
-> . showegs egs
-> . showString "Classification:\n"
-> . showresults egs ws
-> . showString "Training Error:\n"
-> . showerr res
-> . showString "Trained Classification:\n"
-> . showresults egs ws'
-
-> {- ORIG:
-> program :: String -> String
-> program s
-> = _scc_ "program" (
-> let egs = _scc_ "readegs" readegs s
-> ws = _scc_ "randweights" randweights dimensions
-> rs = _scc_ "selectegs" selectegs (length egs)
-> (ws',res) = _scc_ "trainweights" trainweights egs ws epochs accepterr eta rs
-> in "Examples:\n"
-> ++ _scc_ "showegs" showegs egs
-> ++ "Classification:\n"
-> ++ _scc_ "showresults" showresults egs ws
-> ++ "Training Error:\n"
-> ++ _scc_ "showerr" showerr res
-> ++ "Trained Classification:\n"
-> ++ _scc_ "showresults2" showresults egs ws'
-> )
-> -}
-
--------------------------------------------------------------------------------
-| Show Functions |
--------------------------------------------------------------------------------
-
-> showdouble :: Double -> ShowS
-> showdouble = showFFloat (Just 4)
-
-> showdoubles :: [Double] -> ShowS
-> showdoubles [] = showString ""
-> showdoubles (v:vs) = showdouble v . showdoubles vs
-
-> showegs :: Egs -> ShowS
-> showegs [] = showString "\n"
-> showegs ((x,t):egs)
-> = showdoubles x . showString " " . showdoubles t . showString "\n" . showegs egs
-
-> showresults :: Egs -> Weights -> ShowS
-> showresults [] _ = showString "\n"
-> showresults ((x,t):egs) ws
-> = let y = last (classeg ws x)
-> p = maxplace y
-> c = maxplace t
-> in shows p . showString " " . showdouble (y!!p) . showString " " .
-> shows c . showString " " . showdouble (t!!c) . showString "\n" . showresults egs ws
-
-> showerr :: [Double] -> ShowS
-> showerr [] = showString ""
-> showerr (x:xs) = showerr xs . showdouble x . showString "\n"
-
-> showweights :: Weights -> ShowS
-> showweights [] = showString "\n"
-> showweights (w:ws) = showweight w . showweights ws
-
-> showweight, showl :: Weight -> ShowS
-> showweight [] = showString "[]\n"
-> showweight (x:xs) = showString "[" . showdoubles x . showl xs
-
-> showl [] = showString "]\n"
-> showl (x:xs) = showString "\n " . showdoubles x . showl xs
-
-> {- ORIG:
-> showdouble :: Double -> String
-> showdouble v = printf "%6.4f " [UDouble v]
-
-> showdoubles :: [Double] -> String
-> showdoubles [] = ""
-> showdoubles (v:vs) = showdouble v ++ showdoubles vs
-
-> showegs :: Egs -> String
-> showegs [] = "\n"
-> showegs ((x,t):egs)
-> = (showdoubles x) ++ " " ++ (showdoubles t) ++ "\n" ++ showegs egs
-
-> showresults :: Egs -> Weights -> String
-> showresults [] _ = "\n"
-> showresults ((x,t):egs) ws
-> = let y = last (classeg ws x)
-> p = maxplace y
-> c = maxplace t
-> in show p ++ " " ++ showdouble (y!!p) ++ " " ++
-> show c ++ " " ++ showdouble (t!!c) ++ "\n" ++ showresults egs ws
-
-> showerr :: [Double] -> String
-> showerr [] = ""
-> showerr (x:xs) = showerr xs ++ showdouble x ++ "\n"
-
-> showweights :: Weights -> String
-> showweights [] = "\n"
-> showweights (w:ws) = showweight w ++ showweights ws
-> showweight, showl :: Weight -> String
-> showweight [] = "[]\n"
-> showweight (x:xs) = "[" ++ showdoubles x ++ showl xs
-> showl [] = "]\n"
-> showl (x:xs) = "\n " ++ showdoubles x ++ showl xs
-> -}
-
--------------------------------------------------------------------------------
-| Data Reading Functions |
--------------------------------------------------------------------------------
-
-> readegs :: String -> Egs
-> readegs s = readData (readWhiteList s)
-
-> readData :: [Double] -> Egs
-> readData [] = []
-> readData bs = let (inp, bs') = splitAt (head dimensions) bs
-> (out, bs'') = splitAt (last dimensions) bs'
-> in (inp,out) : (readData bs'')
+++ /dev/null
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -package lang
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
+++ /dev/null
-ReadLists
-Written by Sam Waugh
-Date Started : 10th September 1992
-Last Modified: 10th November 1992
-
-This module allows the reading of lists of values from a string
-of the one type seperated by white space.
-
-Thanks to Paul Hudak for suggestions concerning getVals.
-
-> module ReadLists (readWhiteList, readNumBools) where
-
-
-readWhiteList reads a white-spaced list from a given string
-
-> readWhiteList :: (Read a) => String -> [a]
-> readWhiteList = getVals reads
-
-
-readNumBools reads a list of white-spaced boolean values from a given
-string. Booleans in a string are represented as 1's and 0's.
-
-> readNumBools :: String -> [Bool]
-> readNumBools = getVals readBool
-
-> readBool :: ReadS Bool
-> readBool [] = []
-> readBool (x:xs) = [(x == '1', xs)]
-
-
-getVals (base function) takes a string, s, and a reading function, readVal,
-and repeatedly applies readVal to s while removing whitespace
-
-> getVals :: ReadS a -> String -> [a]
-> getVals readVal s = case readVal (stripWhite s) of
-> [] -> []
-> (x,s'):_ -> x : getVals readVal s'
-
-
-stripWhite removes white space from the front of a string
-
-> stripWhite :: String -> String
-> stripWhite = dropWhile (`elem` " \t\n")
+++ /dev/null
-Examples:
-0.0000 0.0000 0.0000
-0.0000 1.0000 1.0000
-1.0000 0.0000 1.0000
-1.0000 1.0000 0.0000
-
-Classification:
-0 -0.1059 0 0.0000
-0 0.0368 0 1.0000
-0 0.1047 0 1.0000
-0 0.1930 0 0.0000
-
-Training Error:
-0.0006
-0.0013
-0.0012
-0.0012
-0.0015
-0.0011
-0.0013
-0.0018
-0.0025
-0.0014
-0.0017
-0.0023
-0.0013
-0.0022
-0.0020
-0.0021
-0.0023
-0.0015
-0.0012
-0.0023
-0.0019
-0.0042
-0.0031
-0.0026
-0.0019
-0.0020
-0.0039
-0.0026
-0.0031
-0.0028
-0.0023
-0.0022
-0.0022
-0.0028
-0.0027
-0.0047
-0.0030
-0.0027
-0.0046
-0.0038
-0.0027
-0.0077
-0.0034
-0.0041
-0.0113
-0.0077
-0.0156
-0.0171
-0.0159
-0.0126
-0.0094
-0.0104
-0.0095
-0.0117
-0.0151
-0.0150
-0.0109
-0.0158
-0.0136
-0.0100
-0.0080
-0.0067
-0.0063
-0.0063
-0.0070
-0.0141
-0.0087
-0.0090
-0.0107
-0.0163
-0.0127
-0.0159
-0.0100
-0.0078
-0.0136
-0.0184
-0.0264
-0.0263
-0.0165
-0.0277
-0.0200
-0.0340
-0.0156
-0.0350
-0.0263
-0.0175
-0.0300
-0.0246
-0.0285
-0.0179
-0.0348
-0.0139
-0.0365
-0.0287
-0.0216
-0.0237
-0.0168
-0.0153
-0.0384
-0.0316
-0.0286
-0.0228
-0.0261
-0.0219
-0.0168
-0.0089
-0.0098
-0.0092
-0.0124
-0.0105
-0.0160
-0.0209
-0.0283
-0.0132
-0.0139
-0.0192
-0.0212
-0.0117
-0.0120
-0.0109
-0.0133
-0.0292
-0.0230
-0.0360
-0.0266
-0.0203
-0.0161
-0.0172
-0.0171
-0.0187
-0.0377
-0.0174
-0.0136
-0.0127
-0.0136
-0.0171
-0.0163
-0.0193
-0.0099
-0.0177
-0.0182
-0.0063
-0.0092
-0.0080
-0.0124
-0.0145
-0.0107
-0.0075
-0.0073
-0.0114
-0.0071
-0.0081
-0.0203
-0.0087
-0.0114
-0.0173
-0.0130
-0.0081
-0.0217
-0.0131
-0.0139
-0.0125
-0.0275
-0.0174
-0.0241
-0.0210
-0.0123
-0.0140
-0.0094
-0.0084
-0.0137
-0.0150
-0.0137
-0.0078
-0.0138
-0.0078
-0.0092
-0.0090
-0.0090
-0.0080
-0.0186
-0.0081
-0.0074
-0.0125
-0.0306
-0.0278
-0.0241
-0.0451
-0.0218
-0.0224
-0.0605
-0.0442
-0.0214
-0.0072
-0.0086
-0.0124
-0.0130
-0.0075
-0.0081
-0.0069
-0.0198
-0.0073
-0.0114
-0.0078
-0.0239
-0.0125
-0.0164
-0.0082
-0.0075
-0.0061
-0.0052
-0.0136
-0.0071
-0.0105
-0.0137
-0.0062
-0.0065
-0.0128
-0.0145
-0.0102
-0.0064
-0.0113
-0.0090
-0.0107
-0.0066
-0.0069
-0.0052
-0.0054
-0.0051
-0.0113
-0.0163
-0.0238
-0.0115
-0.0091
-0.0094
-0.0094
-0.0107
-0.0243
-0.0206
-0.0160
-0.0134
-0.0132
-0.0158
-0.0202
-0.0291
-0.0289
-0.0155
-0.0206
-0.0256
-0.0123
-0.0153
-0.0339
-0.0148
-0.0360
-0.0188
-0.0230
-0.0388
-0.0203
-0.0263
-0.0179
-0.0406
-0.0174
-0.0163
-0.0295
-0.0180
-0.0356
-0.0290
-0.0328
-0.0419
-0.0259
-0.0170
-0.0198
-0.0317
-0.0296
-0.0452
-0.0356
-0.0396
-0.0251
-0.0250
-0.0156
-0.0286
-0.0288
-0.0320
-0.0232
-0.0309
-0.0199
-0.0365
-0.0251
-0.0210
-0.0362
-0.0262
-0.0460
-0.0453
-0.0319
-0.0144
-0.0257
-0.0434
-0.0281
-0.0432
-0.0296
-0.0212
-0.0292
-0.0191
-0.0152
-0.0235
-0.0090
-0.0251
-0.0153
-0.0462
-0.0317
-0.0218
-0.0133
-0.0202
-0.0421
-0.0151
-0.0277
-0.0136
-0.0213
-0.0351
-0.0287
-0.0296
-0.0377
-0.0419
-0.0238
-0.0305
-0.0285
-0.0184
-0.0147
-0.0292
-0.0249
-0.0228
-0.0314
-0.0336
-0.0472
-0.0721
-0.0395
-0.0469
-0.0238
-0.0322
-0.0150
-0.0125
-0.0267
-0.0253
-0.0177
-0.0100
-0.0177
-0.0246
-0.0135
-0.0174
-0.0122
-0.0222
-0.0165
-0.0214
-0.0313
-0.0299
-0.0172
-0.0273
-0.0197
-0.0261
-0.0266
-0.0191
-0.0272
-0.0139
-0.0185
-0.0132
-0.0164
-0.0178
-0.0179
-0.0237
-0.0335
-0.0205
-0.0316
-0.0345
-0.0643
-0.0431
-0.0894
-0.0560
-0.0509
-0.1541
-0.0750
-0.0944
-0.0815
-0.1373
-0.0743
-0.1324
-0.0990
-0.1165
-0.2020
-0.1822
-0.3030
-0.2503
-0.1155
-0.3019
-0.2439
-0.4729
-0.1733
-0.1518
-0.3804
-0.1371
-0.1534
-0.4186
-0.2648
-0.1183
-0.3230
-0.2882
-0.2370
-0.2439
-0.1663
-0.0973
-0.1101
-0.2022
-0.0969
-0.1587
-0.0838
-0.1114
-0.0676
-0.1860
-0.1772
-0.0820
-0.0949
-0.0887
-0.2098
-0.0934
-0.0965
-0.1262
-0.0529
-0.0849
-0.1050
-0.0565
-0.1413
-0.1486
-0.1968
-0.1590
-0.1195
-0.1178
-0.1361
-0.0793
-0.2035
-0.0685
-0.0888
-0.0676
-0.0484
-0.0430
-0.0492
-0.0444
-0.0696
-0.0338
-0.0754
-0.0768
-0.0535
-0.0455
-0.0331
-0.0330
-0.0310
-0.0343
-0.0364
-0.0649
-0.0419
-0.0309
-0.0633
-0.0419
-0.0528
-0.0311
-0.0421
-0.0453
-0.0227
-0.0259
-0.0613
-0.0408
-0.0224
-0.0115
-0.0247
-0.0109
-0.0161
-0.0168
-0.0104
-0.0185
-0.0193
-0.0067
-0.0069
-0.0081
-0.0077
-0.0101
-0.0109
-0.0182
-0.0113
-0.0232
-0.0111
-0.0102
-0.0139
-0.0115
-0.0189
-0.0151
-0.0203
-0.0115
-0.0217
-0.0189
-0.0243
-0.0369
-0.0417
-0.0471
-0.0645
-0.0411
-0.0549
-0.0196
-0.0393
-0.0298
-0.0125
-0.0093
-0.0218
-0.0116
-0.0118
-0.0147
-0.0116
-0.0210
-0.0179
-0.0348
-0.0198
-0.0119
-0.0106
-0.0101
-0.0149
-0.0335
-0.0257
-0.0249
-0.0284
-0.0340
-0.0794
-0.1231
-0.0752
-0.1574
-0.0589
-0.1023
-0.1208
-0.1316
-0.0805
-0.0667
-0.0898
-0.1548
-0.1017
-0.1279
-0.0981
-0.1481
-0.1220
-0.1387
-0.2427
-0.3398
-0.2162
-0.2501
-0.1538
-0.1318
-0.0558
-0.0853
-0.1432
-0.1571
-0.0789
-0.0717
-0.0585
-0.0543
-0.0529
-0.1346
-0.0512
-0.0431
-0.0462
-0.0767
-0.0596
-0.0914
-0.0345
-0.0331
-0.0451
-0.0491
-0.0318
-0.0335
-0.0410
-0.0354
-0.0879
-0.0471
-0.0492
-0.0497
-0.0848
-0.0490
-0.0592
-0.0423
-0.0585
-0.0426
-0.0258
-0.0402
-0.0188
-0.0197
-0.0195
-0.0241
-0.0264
-0.0408
-0.0226
-0.0344
-0.0188
-0.0364
-0.0431
-0.0198
-0.0282
-0.0243
-0.0521
-0.0483
-0.0292
-0.0342
-0.0653
-0.0286
-0.0381
-0.0274
-0.0525
-0.0661
-0.0286
-0.0666
-0.0384
-0.0285
-0.0217
-0.0405
-0.0443
-0.0303
-0.0601
-0.0370
-0.0232
-0.0259
-0.0274
-0.0295
-0.0694
-0.0371
-0.0323
-0.0515
-0.0687
-0.0305
-0.0508
-0.0402
-0.0428
-0.0922
-0.0459
-0.1083
-0.1454
-0.1593
-0.1142
-0.0774
-0.1408
-0.1267
-0.1318
-0.0634
-0.0862
-0.1191
-0.0954
-0.0965
-0.0734
-0.0700
-0.0778
-0.0901
-0.0614
-0.1199
-0.0618
-0.0505
-0.0697
-0.0410
-0.0572
-0.1019
-0.0856
-0.0771
-0.0908
-0.0332
-0.0674
-0.0483
-0.0339
-0.0309
-0.0308
-0.0443
-0.0467
-0.0714
-0.0540
-0.0408
-0.0450
-0.0482
-0.0558
-0.0683
-0.0407
-0.0375
-0.0416
-0.0891
-0.0968
-0.0586
-0.1387
-0.0728
-0.0705
-0.0565
-0.1113
-0.0723
-0.1056
-0.0658
-0.0625
-0.0344
-0.0468
-0.0392
-0.0317
-0.0265
-0.0360
-0.0338
-0.0308
-0.0727
-0.0286
-0.0522
-0.0405
-0.0375
-0.0257
-0.0249
-0.0346
-0.0191
-0.0286
-0.0311
-0.0283
-0.0407
-0.0275
-0.0750
-0.0911
-0.0425
-0.0362
-0.0591
-0.0270
-0.0290
-0.0338
-0.0592
-0.0350
-0.0552
-0.0564
-0.0446
-0.0558
-0.0369
-0.0497
-0.0650
-0.0433
-0.0420
-0.0434
-0.0546
-0.0415
-0.0394
-0.0488
-0.0695
-0.0372
-0.0458
-0.0385
-0.0337
-0.0354
-0.0324
-0.0575
-0.0505
-0.0566
-0.1589
-0.1263
-0.1118
-0.2126
-0.2967
-0.2778
-0.2609
-0.6322
-0.7693
-0.5429
-0.1965
-0.3751
-0.3611
-0.2222
-0.2763
-0.2273
-0.3213
-0.2207
-0.2181
-0.1717
-0.1765
-0.3055
-0.2081
-0.2476
-0.2661
-0.1559
-0.1006
-0.1233
-0.1502
-0.1001
-0.1113
-0.1471
-0.1477
-0.0594
-0.1124
-0.0564
-0.0538
-0.0451
-0.0435
-0.0558
-0.0365
-0.0820
-0.0432
-0.0735
-0.0375
-0.0851
-0.0587
-0.1136
-0.0859
-0.1611
-0.0959
-0.1569
-0.1321
-0.0898
-0.0977
-0.1466
-0.1692
-0.0777
-0.1352
-0.0826
-0.0442
-0.0398
-0.0639
-0.0494
-0.0545
-0.0318
-0.0795
-0.0540
-0.0687
-0.0597
-0.0709
-0.0997
-0.0884
-0.1047
-0.1659
-0.1014
-0.1369
-0.1411
-0.0814
-0.0963
-0.0805
-0.0774
-0.1477
-0.0741
-0.0723
-0.1459
-0.0819
-0.0615
-0.0622
-0.0539
-0.0547
-0.0599
-0.0635
-0.1005
-0.0703
-0.0717
-0.0415
-0.0654
-0.0331
-0.0417
-0.1216
-0.0763
-0.0705
-0.0923
-0.0792
-0.0829
-0.0462
-0.0870
-0.1555
-0.1023
-0.1440
-0.0655
-0.1040
-0.2320
-0.0897
-0.0833
-0.0592
-0.0559
-0.0569
-0.0643
-0.0807
-0.0862
-0.0502
-0.0679
-0.0652
-0.0575
-0.0557
-0.0711
-0.1001
-0.0551
-0.0560
-0.0537
-0.0539
-0.0600
-0.0759
-0.1523
-0.1705
-0.1183
-0.1832
-0.2640
-0.1693
-0.1337
-0.2807
-0.8807
-1.0110
-1.1298
-0.8362
-0.3536
-0.2293
-0.0994
-0.1356
-0.1334
-0.2120
-0.0832
-0.1290
-0.0884
-0.1778
-0.1456
-0.1121
-0.1612
-0.0711
-0.1206
-0.1081
-0.0507
-0.0819
-0.0771
-0.0783
-0.0783
-0.0560
-0.1450
-0.2208
-0.0846
-0.2032
-0.1537
-0.1352
-0.2858
-0.3946
-0.3023
-0.4804
-0.3720
-0.3830
-0.4174
-0.3898
-0.6058
-0.3161
-0.2903
-0.2651
-0.1544
-0.4088
-0.2355
-0.2825
-0.4602
-0.2062
-0.1985
-0.1613
-0.1495
-0.1726
-0.3099
-0.1895
-0.1237
-0.1268
-0.1344
-0.1068
-0.1129
-0.0869
-0.0912
-0.0926
-0.0905
-0.1214
-0.0649
-0.0876
-0.1203
-0.1225
-0.1146
-0.1131
-0.1489
-0.1334
-0.1083
-0.0903
-0.0981
-0.3364
-0.2867
-0.3913
-0.3200
-0.3584
-0.2114
-0.1862
-0.1882
-0.1458
-0.1275
-0.2299
-0.2936
-0.3161
-0.3604
-0.1345
-0.2309
-0.2310
-0.3559
-0.3741
-0.3841
-0.1600
-0.3186
-0.1768
-0.1374
-0.1833
-0.1551
-0.1107
-0.0685
-0.1061
-0.0834
-0.0876
-0.0769
-0.1060
-0.1000
-0.0803
-0.2304
-0.1964
-0.3363
-0.1922
-0.2041
-0.1679
-0.1237
-0.0920
-0.1977
-0.3451
-0.2789
-0.2462
-0.2204
-0.2798
-0.3526
-0.2780
-0.5861
-0.3788
-0.6887
-0.4506
-0.3664
-0.2358
-0.0767
-0.2181
-0.2429
-0.2658
-0.3366
-0.1841
-0.1113
-0.0914
-0.0824
-0.0719
-0.1407
-0.0824
-0.1721
-0.1516
-0.1562
-0.1351
-0.1235
-0.1095
-0.0962
-0.1015
-0.0892
-0.1545
-0.1909
-0.4212
-0.4129
-0.3782
-0.3431
-0.3330
-0.2739
-0.3242
-0.2353
-0.2348
-0.3102
-0.3587
-0.5124
-0.3840
-0.4732
-0.4399
-0.2119
-0.1322
-0.1233
-0.1316
-0.1150
-0.0998
-0.1800
-0.1273
-0.2833
-0.1345
-0.1112
-0.1187
-0.1175
-0.1231
-0.4920
-0.6189
-0.2811
-0.2768
-0.3276
-0.2768
-0.4092
-0.3237
-0.5175
-0.3444
-0.2286
-0.3363
-0.2437
-0.2369
-0.3936
-0.2882
-0.1668
-0.2125
-0.1564
-0.2847
-0.3474
-0.3749
-0.2152
-0.4767
-0.3737
-0.2519
-0.1675
-0.1980
-0.1459
-0.1549
-0.1512
-0.1498
-0.2775
-0.3663
-0.2599
-0.3337
-0.1786
-0.7095
-0.4253
-0.2590
-0.2128
-0.3139
-0.4042
-0.3455
-0.8963
-0.5630
-0.6491
-0.3273
-0.5495
-0.7103
-0.3689
-0.3517
-0.2506
-0.2394
-0.2563
-0.2178
-0.3305
-0.2091
-0.2713
-0.9382
-0.4809
-0.3457
-0.3757
-0.3567
-0.3623
-0.7483
-0.2758
-0.3359
-0.4226
-0.4436
-0.5415
-0.7246
-0.5840
-0.5240
-0.4820
-0.4918
-0.3472
-0.4292
-0.2638
-0.8652
-0.6386
-0.2970
-0.2482
-0.3634
-0.5364
-0.3266
-0.2738
-0.3561
-0.2874
-0.2952
-0.3432
-0.5600
-0.4412
-0.7108
-0.5172
-1.1662
-1.0235
-0.5857
-0.9115
-0.8491
-0.6621
-0.3065
-0.4287
-0.4757
-0.5191
-0.3534
-0.4221
-0.4662
-0.3410
-0.4524
-0.7814
-0.4169
-0.4127
-0.3937
-0.5450
-0.3860
-0.3942
-0.4960
-0.4516
-0.5248
-0.4116
-0.4200
-0.4214
-0.5984
-0.5791
-0.5775
-0.6311
-0.6828
-1.0524
-1.0729
-0.7104
-0.7662
-0.5090
-0.6262
-0.5004
-0.8285
-0.5389
-0.6671
-0.7463
-0.6655
-0.8002
-1.0429
-1.1349
-0.5813
-0.5798
-0.6674
-0.7338
-1.0065
-0.8124
-0.6703
-0.6968
-0.6548
-0.7707
-0.6928
-0.6606
-0.7861
-0.7466
-0.7467
-0.9788
-0.7896
-0.8128
-0.8151
-0.8171
-1.1193
-1.0804
-1.0764
-0.8801
-0.9400
-1.0559
-0.8107
-0.8610
-0.8641
-0.8087
-0.8159
-0.8625
-0.9505
-0.9631
-0.9564
-0.8354
-0.8608
-0.9085
-0.8384
-1.0629
-0.8835
-0.8643
-0.9080
-0.9002
-1.0846
-0.9661
-0.9995
-1.0096
-1.0039
-1.0839
-0.9100
-1.0386
-1.2184
-1.1378
-0.8842
-1.0651
-0.8931
-0.9578
-1.0597
-0.8947
-0.9176
-0.9138
-0.9297
-1.0663
-0.9131
-1.0254
-1.1214
-1.0609
-0.9520
-1.0866
-1.0985
-0.9468
-0.9588
-0.9661
-1.0548
-1.0921
-1.1088
-1.1045
-1.1313
-0.9873
-1.1151
-1.1237
-0.9889
-1.0286
-1.0728
-1.1691
-1.0330
-1.0835
-1.1305
-0.9608
-1.1476
-1.0012
-1.0972
-1.1373
-1.0784
-1.0679
-1.0392
-1.1016
-0.9909
-1.0779
-0.9820
-1.0325
-1.0863
-1.1063
-0.9852
-1.5432
-1.0038
-1.0676
-0.9857
-1.1375
-1.0446
-1.1342
-1.1891
-0.9901
-1.1802
-1.1556
-0.9927
-1.0766
-1.1414
-1.0948
-1.1492
-0.9973
-1.1168
-1.1166
-1.0655
-1.0620
-1.0904
-1.0921
-1.0157
-1.2459
-1.3257
-1.0308
-1.1034
-1.0122
-0.9948
-1.2459
-1.3062
-1.3424
-Trained Classification:
-0 -0.0001 0 0.0000
-0 1.0000 0 1.0000
-0 1.0006 0 1.0000
-0 0.0002 0 0.0000
-
+++ /dev/null
-0.0 0.0 0.0
-0.0 1.0 1.0
-1.0 0.0 1.0
-1.0 1.0 0.0