diff --git a/Example/MLKit.xcodeproj/project.pbxproj b/Example/MLKit.xcodeproj/project.pbxproj index a025c37..f1e0c68 100644 --- a/Example/MLKit.xcodeproj/project.pbxproj +++ b/Example/MLKit.xcodeproj/project.pbxproj @@ -267,7 +267,6 @@ TargetAttributes = { 607FACCF1AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; - DevelopmentTeam = QA828EJ48A; LastSwiftMigration = 0820; ProvisioningStyle = Automatic; }; @@ -379,7 +378,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\"> /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\">&2\n exit 1\nfi\n"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\"> /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\">&2\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; CBF04E3B88BDFD9CA04873B6 /* [CP] Check Pods Manifest.lock */ = { @@ -394,7 +393,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\"> /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\">&2\n exit 1\nfi\n"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\"> /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\">&2\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; E0D9FAAD7A176A48DE5B1E39 /* [CP] Copy Pods Resources */ = { @@ -564,7 +563,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = QA828EJ48A; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = MLKit/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -581,7 +580,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = QA828EJ48A; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = MLKit/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; diff --git a/Example/MLKit/GameScene.swift b/Example/MLKit/GameScene.swift index daed2a5..ebf4b47 100755 --- a/Example/MLKit/GameScene.swift +++ b/Example/MLKit/GameScene.swift @@ -8,6 +8,7 @@ import SpriteKit import MachineLearningKit +import Upsurge class GameScene: SKScene, SKPhysicsContactDelegate { @@ -43,10 +44,18 @@ class GameScene: SKScene, SKPhysicsContactDelegate { /// The best birds from the previous generation var lastBestGen: [FlappyGenome] = [] - /// SKLabel + /// SKLabel var generationLabel: SKLabelNode! - var fitnessLabel:SKLabelNode! + var fitnessLabel: SKLabelNode! + let groundTexture = SKTexture(imageNamed: "land") + + /// Best score (regardless of generation) + var bestScore: Int = 0 + + + /// Label that displays the best score (bestScore attribute) + var bestScoreLabel: SKLabelNode! // END of ADDITIONS @@ -86,7 +95,7 @@ class GameScene: SKScene, SKPhysicsContactDelegate { moving.addChild(pipes) // ground - let groundTexture = SKTexture(imageNamed: "land") + groundTexture.filteringMode = .nearest // shorter form for SKTextureFilteringMode.Nearest let moveGroundSprite = SKAction.moveBy(x: -groundTexture.size().width * 2.0, y: 0, duration: TimeInterval(0.02 * groundTexture.size().width * 2.0)) @@ -180,6 +189,13 @@ class GameScene: SKScene, SKPhysicsContactDelegate { self.addChild(scoreLabelNode) + bestScore = 0 + bestScoreLabel = SKLabelNode(fontNamed:"MarkerFelt-Wide") + bestScoreLabel.position = CGPoint( x: self.frame.midX - 120.0, y: 3 * self.frame.size.height / 4 + 110.0 ) + bestScoreLabel.zPosition = 100 + bestScoreLabel.text = "bestScore: \(self.bestScore)" + self.addChild(bestScoreLabel) + generationLabel = SKLabelNode(fontNamed:"MarkerFelt-Wide") generationLabel.position = CGPoint( x: self.frame.midX - 150.0, y: 3 * self.frame.size.height / 4 + 140.0 ) generationLabel.zPosition = 100 @@ -193,7 +209,9 @@ class GameScene: SKScene, SKPhysicsContactDelegate { self.addChild(fitnessLabel) // Set the current bird - currentBird = flappyBirdGenerationContainer?[currentFlappy] + if let generation = flappyBirdGenerationContainer { + currentBird = generation[currentFlappy] + } } @@ -279,40 +297,44 @@ class GameScene: SKScene, SKPhysicsContactDelegate { currentTimeForFlappyBird = NSDate() // Evaluate the current birds fitness - currentBird?.generateFitness(score: score, time: Float(timeInterval)) - - // Current generation, bird, and fitness of current bird information - print("--------------------------- \n") - print("GENERATION: \(generationCounter)") - print("BIRD COUNT: \(currentFlappy)") - print("FITNESS: \(currentBird?.fitness)") - self.generationLabel.text = "Gen: \(self.generationCounter)" - print("--------------------------- \n") - - /* DEBUGGING - if (currentBird?.fitness)!>= Float(7.0) { - print("-----BEST BIRD FOUND------") - - currentBird?.brain?.inputLayer.printLayer(layer: (currentBird?.brain?.inputLayer)!) - currentBird?.brain?.hiddenLayer.printLayer(listOfHiddenLayers: (currentBird?.brain?.listOfHiddenLayers)!) - currentBird?.brain?.outputLayer.printLayer(layer: (currentBird?.brain?.outputLayer)!) - + if let bird = currentBird { + bird.generateFitness(score: score, time: Float(timeInterval)) + + // Current generation, bird, and fitness of current bird information + print("--------------------------- \n") + print("GENERATION: \(generationCounter)") + print("BIRD COUNT: \(currentFlappy)") + print("FITNESS: \(bird.fitness)") + self.generationLabel.text = "Gen: \(self.generationCounter)" + print("--------------------------- \n") + + if bird.fitness>= 9.0 { + print("FOUND RARE BIRD") + print(bird.brain?.layers[0].weights) + print(bird.brain?.layers[1].weights) + print(bird.brain?.layers[0].bias) + print(bird.brain?.layers[1].bias) + } } - */ // Go to next flappy bird currentFlappy += 1 - // Filter out the worst birds after gen 6 (can be adjusted) - if generationCounter>= 3 { - + if let generation = flappyBirdGenerationContainer { // Experiment: Keep some of the last best birds and put them back into the population - lastBestGen = (flappyBirdGenerationContainer?.filter({0ドル.fitness>= 4}))! + lastBestGen = generation.filter({0ドル.fitness>= 6.0}) + + if lastBestGen.count> 10 { + // We want to make room for unique birds + lastBestGen = Array(lastBestGen[0...6]) + } } - if (currentBird?.fitness)!> maxFitness { - maxFitness = (currentBird?.fitness)! - maxBird = currentBird + if let bird = currentBird { + if bird.fitness> maxFitness { + maxFitness = bird.fitness + maxBird = bird + } } // If we have hit the 20th bird, we need to move on to the next generation @@ -325,8 +347,11 @@ class GameScene: SKScene, SKPhysicsContactDelegate { // New generation array var newGen: [FlappyGenome] = [] - newGen += lastBestGen - newGen.append(maxBird!) + newGen = lastBestGen + + if let bestBird = maxBird { + flappyBirdGenerationContainer?.append(bestBird) + } while newGen.count < 20 { @@ -340,10 +365,10 @@ class GameScene: SKScene, SKPhysicsContactDelegate { var offspring = BiologicalProcessManager.onePointCrossover(crossoverRate: 0.5, parentOneGenotype: parents.0.genotypeRepresentation, parentTwoGenotype: parents.1.genotypeRepresentation) // Mutate their genes - BiologicalProcessManager.inverseMutation(mutationRate: 0.7, genotype: &offspring.0) BiologicalProcessManager.inverseMutation(mutationRate: 0.7, genotype: &offspring.1) + // Create a separate neural network for the birds based on their genes let brainofOffspring1 = GeneticOperations.decode(genotype: offspring.0) @@ -366,12 +391,28 @@ class GameScene: SKScene, SKPhysicsContactDelegate { flappyBirdGenerationContainer = newGen // Set the current bird - currentBird = flappyBirdGenerationContainer?[currentFlappy] + + if let generation = flappyBirdGenerationContainer { + if generation.count> currentFlappy { + currentBird = generation[currentFlappy] + } else { + if let bestBird = maxBird { + currentBird = maxBird + } + } + } } else { // Set the current bird - currentBird = flappyBirdGenerationContainer?[currentFlappy] + if let generation = flappyBirdGenerationContainer { + if generation.count> currentFlappy { + currentBird = generation[currentFlappy] + } + } else { + currentBird = maxBird + } + } } @@ -379,8 +420,7 @@ class GameScene: SKScene, SKPhysicsContactDelegate { override func touchesBegan(_ touches: Set, with event: UIEvent?) { if moving.speed> 0 { for _ in touches { // do we need all touches? - bird.physicsBody?.velocity = CGVector(dx: 0, dy: 0) - bird.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 30)) + } } else if canRestart { self.resetScene() @@ -420,11 +460,21 @@ class GameScene: SKScene, SKPhysicsContactDelegate { // Check to see if the pipe in front has gone behind the bird // if so, make the new pipe in front of the bird the target pipe - if pipes.children[currentPipe].position.x < bird.position.x { + if pipes.children.count> 1 { + if pipes.children[currentPipe].position.x < bird.position.x { + + currentPipe = closestPipe(pipes: pipes.children) + } + } - currentPipe = closestPipe(pipes: pipes.children) + if pipes.children.count == 1 { + if pipes.children[0].position.x < bird.position.x { + + currentPipe = 0 + } } + // Distance between next pipe and bird let distanceOfNextPipe = abs(pipes.children[currentPipe].position.x - bird.position.x) @@ -434,6 +484,16 @@ class GameScene: SKScene, SKPhysicsContactDelegate { let normalizedDistanceOfNextPipe = (distanceOfNextPipe - 3)/(725-3) + let distanceFromTheGround = abs(self.bird.position.y - self.moving.children[1].position.y) + + let normalizedDistanceFromTheGround = (distanceFromTheGround - 135)/(840-135) + + let distanceFromTheSky = abs(880 - self.bird.position.y) + + let normalizedDistanceFromTheSky = distanceFromTheSky/632 + + + // Bird Y position let birdYPos = bird.position.y/CGFloat(880) @@ -442,32 +502,31 @@ class GameScene: SKScene, SKPhysicsContactDelegate { let normalizedPosToGap = (posToGap - (-439))/(279 - (-439)) - /* - print("======================== \n") - print(" DIST: \((finalDistanceOfNextPipe))") - print("PIPE POSITION: \(finalPosToGap)") - print("Bird POS Y: \(birdPos)") - print("======================== \n") - */ + if let flappyBird = currentBird { - // Decision AI makes - let decision = (currentBird?.brain?.forward(input: [Float(1), Float(normalizedDistanceOfNextPipe), Float(normalizedPosToGap), Float(birdYPos), Float(normalizedDistanceFromBottomPipe)]))! + // Decision AI makes + let input = Matrix(rows: 6, columns: 1, elements: [Float(normalizedDistanceOfNextPipe), Float(normalizedPosToGap), Float(birdYPos), Float(normalizedDistanceFromBottomPipe), Float(normalizedDistanceFromTheGround), Float(normalizedDistanceFromTheSky)]) + let potentialDescision = flappyBird.brain?.feedforward(input: input) - print("FLAPPY BIRD DECISION: \(decision)") - // 0.95 was arbitrary, tweaking is recommended - if decision[0]>= Float(0.89) { + if let decision = potentialDescision { - if moving.speed> 0 { + print("FLAPPY BIRD DECISION: \(decision)") - bird.physicsBody?.velocity = CGVector(dx: 0, dy: 0) - bird.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 30)) + if (decision.elements[0])>= Float(0.5) { - } + if moving.speed> 0 { - } else { + bird.physicsBody?.velocity = CGVector(dx: 0, dy: 0) + bird.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 30)) + + } + + } + } } + } if canRestart { @@ -515,6 +574,12 @@ class GameScene: SKScene, SKPhysicsContactDelegate { score += 1 scoreLabelNode.text = String(score) + // Update best score label + if score> bestScore { + bestScore = score + bestScoreLabel.text = "Best Score: \(self.bestScore)" + } + // Add a little visual feedback for the score increment scoreLabelNode.run(SKAction.sequence([SKAction.scale(to: 1.5, duration:TimeInterval(0.1)), SKAction.scale(to: 1.0, duration:TimeInterval(0.1))])) } else { diff --git a/Example/MLKit/GameViewController.swift b/Example/MLKit/GameViewController.swift index 7fe8aa7..a9f5054 100755 --- a/Example/MLKit/GameViewController.swift +++ b/Example/MLKit/GameViewController.swift @@ -41,9 +41,9 @@ public class FlappyGenome: Genome { public var fitness: Float = 0 - public var brain: NeuralNet? + public var brain: NeuralNetwork? - public init(genotype: [Float], network: NeuralNet) { + public init(genotype: [Float], network: NeuralNetwork) { self.genotypeRepresentation = genotype self.brain = network @@ -64,24 +64,39 @@ class GameViewController: UIViewController { // Create First Generation of Flappy Birds var generation1: [FlappyGenome] = [] - for _ in 1...20 { + for _ in 1...19 { // Bias already included - let brain = NeuralNet(numberOfInputNeurons: 4, hiddenLayers: [4], numberOfOutputNeurons: 1) - - brain.activationFuncType = .siglog - - brain.activationFuncTypeOfOutputLayer = .siglog + let brain = NeuralNetwork(size: (6, 1)) + brain.addLayer(layer: Layer(size: (6, 12), activationType: .siglog)) + brain.addLayer(layer: Layer(size: (12, 1), activationType: .siglog)) let newBird = FlappyGenome(genotype: GeneticOperations.encode(network: brain), network: brain) generation1.append(newBird) } + // Best Bird Weights + let brain = NeuralNetwork(size: (6, 1)) + brain.addLayer(layer: Layer(size: (6, 12), activationType: .siglog)) + brain.addLayer(layer: Layer(size: (12, 1), activationType: .siglog)) + + brain.layers[0].weights = Matrix(rows: 12, columns: 6, elements: ValueArray([1.14517, 0.691113, -0.938394, 0.798185, -1.20595, 0.732543, 0.174731, -1.0585, -0.500974, -1.02413, 0.841067, -0.530047, -0.336522, -1.68883, -1.47241, 0.907576, 0.71408, 0.646764, -0.331544, 0.141004, 2.42381, 0.0683608, 1.01601, 1.42153, -0.672598, 0.889775, -1.55454, -0.530047, 0.307019, -0.483846, 0.0292488, 0.478605, 0.000960251, -0.379445, -0.336532, -0.17253, 0.892149, -0.301041, 1.06579, -0.230897, 0.39673, -1.93952, 1.69516, 0.185731, -1.48985, -0.17253, -0.336532, -0.379445, 2.12388, 0.0292488, -0.483846, 0.307019, -1.29687, 0.941488, -1.50857, -1.47241, 0.594132, 1.69516, 0.185731, -1.48985, -0.17253, 1.06579, -0.301041, 0.892149, -1.15464, 1.15181, 0.000960251, 0.478605, 0.0292488, -0.483846, 0.307019, -1.29687])) + + brain.layers[1].weights = Matrix(rows: 1, columns: 12, elements: ValueArray([1.10186, -1.68883, -0.336522, -2.54774, 0.202769, 1.50816, -3.25252, 0.830278, 0.104464, -1.26191, 0.698875, -0.447793])) + + brain.layers[0].bias = Matrix(rows: 12, columns: 1, elements: ValueArray([0.941488, -1.50857, -1.47241, 0.594132, -0.189659, 0.804515, -1.60174, 0.741886, -0.811568, 0.0985006, -0.863954, -0.729362])) + brain.layers[1].bias = Matrix(rows: 1, columns: 1, elements: ValueArray([0.440734])) + + let bestBird = FlappyGenome(genotype: GeneticOperations.encode(network: brain), network: brain) + generation1.append(bestBird) + + if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene { // Set the first generation of Flappy Birds scene.flappyBirdGenerationContainer = generation1 + scene.maxBird = bestBird // Configure the view. let skView = self.view as! SKView diff --git a/Example/MLKit/GeneticOperations.swift b/Example/MLKit/GeneticOperations.swift index 2a12fa1..be8b722 100644 --- a/Example/MLKit/GeneticOperations.swift +++ b/Example/MLKit/GeneticOperations.swift @@ -11,38 +11,26 @@ import MachineLearningKit import Upsurge /// The GeneticOperations class manages encoding genes into weights for the neural network and decoding neural network weights into genes. These methods are not provided in the framework itself, rather it was for the game example. -final class GeneticOperations { +final class GeneticOperations { /** - The encode method converts a NueralNet object to an array of floats by taking the weights of each layer and placing them into an array. + The encode method converts a NueralNetwork object to an array of floats by taking the weights of each layer and placing them into an array. - parameter network: A NeuralNet Object. - returns: An array of Float values. */ - public static func encode(network: NeuralNet) -> [Float] { - - let inputLayerNeurons = network.inputLayer.listOfNeurons - let outputLayerNeurons = network.outputLayer.listOfNeurons + public static func encode(network: NeuralNetwork) -> [Float] { var genotypeRepresentation: [Float] = [] - for neuron in inputLayerNeurons { - genotypeRepresentation += neuron.weightsComingIn - } - - for hiddenLayer in network.listOfHiddenLayers { - for neuron in hiddenLayer.listOfNeurons { - genotypeRepresentation += neuron.weightsComingIn - } + for layer in network.layers { - for neuron in hiddenLayer.listOfNeurons { - genotypeRepresentation += neuron.weightsGoingOut - } + genotypeRepresentation += Array(layer.weights!.elements) } - for neuron in outputLayerNeurons { - genotypeRepresentation += neuron.weightsGoingOut + for layer in network.layers { + genotypeRepresentation += Array(layer.bias!.elements) } return genotypeRepresentation @@ -55,57 +43,17 @@ final class GeneticOperations { - returns: An array of Float values. */ - public static func decode(genotype: [Float]) -> NeuralNet { + public static func decode(genotype: [Float]) -> NeuralNetwork { // Create a new NueralNet - let brain = NeuralNet(numberOfInputNeurons: 4, hiddenLayers: [4], numberOfOutputNeurons: 1) - - brain.activationFuncType = .siglog - - brain.activationFuncTypeOfOutputLayer = .siglog - - // Convert genotype back to weights for each layer - let inputLayerWeights: [Float] = Array(genotype[0...4]) - - // First is bias neuron - let hiddenLayerWeightsComingInForNeuron1: [Float] = Array(genotype[5...8]) - let hiddenLayerWeightsComingInForNeuron2: [Float] = Array(genotype[9...12]) - let hiddenLayerWeightsComingInForNeuron3: [Float] = Array(genotype[13...16]) - let hiddenLayerWeightsComingInForNeuron4: [Float] = Array(genotype[17...20]) - let hiddenLayerWeightsComingInForNeuron5: [Float] = Array(genotype[21...24]) - let hiddenLayerWeightsGoingOut: [Float] = Array(genotype[25...29]) - let outputLayerWeightGoingOut: Float = genotype[30] - - for (i, neuron) in brain.inputLayer.listOfNeurons.enumerated() { - - neuron.weightsComingIn = ValueArray([inputLayerWeights[i]]) - } - - for hiddenLayer in brain.listOfHiddenLayers { - for (i, neuron) in hiddenLayer.listOfNeurons.enumerated() { - - if i == 0 { - neuron.weightsComingIn = ValueArray(hiddenLayerWeightsComingInForNeuron1) - } else if i == 1 { - neuron.weightsComingIn = ValueArray(hiddenLayerWeightsComingInForNeuron2) - } else if i == 2 { - neuron.weightsComingIn = ValueArray(hiddenLayerWeightsComingInForNeuron3) - } else if i == 3 { - neuron.weightsComingIn = ValueArray(hiddenLayerWeightsComingInForNeuron4) - } else if i == 4 { - neuron.weightsComingIn = ValueArray(hiddenLayerWeightsComingInForNeuron5) - } - } - - for (i, neuron) in hiddenLayer.listOfNeurons.enumerated() { - - neuron.weightsGoingOut = ValueArray([hiddenLayerWeightsGoingOut[i]]) - - } - - } - - brain.outputLayer.listOfNeurons[0].weightsGoingOut = ValueArray([outputLayerWeightGoingOut]) + let brain = NeuralNetwork(size: (6, 1)) + brain.addLayer(layer: Layer(size: (6, 12), activationType: .siglog)) + brain.addLayer(layer: Layer(size: (12, 1), activationType: .siglog)) + + brain.layers[0].weights = Matrix(rows: 12, columns: 6, elements: ValueArray(Array(genotype[0...71]))) + brain.layers[0].bias = Matrix(rows: 12, columns: 1, elements: ValueArray(Array(genotype[72...83]))) + brain.layers[1].weights = Matrix(rows: 1, columns: 12, elements: ValueArray(Array(genotype[84...95]))) + brain.layers[1].bias = Matrix(rows: 1, columns: 1, elements: ValueArray([genotype[96]])) return brain } diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 6742bfb..c0288ad 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - MachineLearningKit (0.1.6): + - MachineLearningKit (0.1.7): - Upsurge - Nimble (6.0.1) - Quick (1.1.0) @@ -13,14 +13,14 @@ DEPENDENCIES: EXTERNAL SOURCES: MachineLearningKit: - :path: "../" + :path: ../ SPEC CHECKSUMS: - MachineLearningKit: 0402701c501bfee52a2ebf48426a33b47d698dcd + MachineLearningKit: 040457b6d6afce606454c16008b954f3952a0d32 Nimble: 1527fd1bd2b4cf0636251a36bc8ab37e81da8347 Quick: dafc587e21eed9f4cab3249b9f9015b0b7a7f71d Upsurge: 614412863a3b5470b31636a004654b6ef3a34f47 PODFILE CHECKSUM: 6efa57e13fa4fabb331b61a3a84a43c047bb3113 -COCOAPODS: 1.2.1.beta.1 +COCOAPODS: 1.2.0 diff --git a/Example/Pods/Local Podspecs/MachineLearningKit.podspec.json b/Example/Pods/Local Podspecs/MachineLearningKit.podspec.json index 3f850fa..2443d3f 100644 --- a/Example/Pods/Local Podspecs/MachineLearningKit.podspec.json +++ b/Example/Pods/Local Podspecs/MachineLearningKit.podspec.json @@ -1,6 +1,6 @@ { "name": "MachineLearningKit", - "version": "0.1.6", + "version": "0.1.7", "summary": "A simple machine learning framework written in Swift 🤖", "description": "MLKit is a simple machine learning framework written in Swift. Currently MLKit features machine learning algorithms that deal with the topic of regression, but the framework will expand over time with topics such as classification, clustering, recommender systems, and deep learning. The vision and goal of this framework is to provide developers with a toolkit to create products that can learn from data. MLKit is a side project of mine in order to make it easier for developers to implement machine learning algorithms on the go, and to familiarlize myself with machine learning concepts.", "homepage": "https://github.com/Somnibyte/MLKit", @@ -13,7 +13,7 @@ }, "source": { "git": "https://github.com/Somnibyte/MLKit.git", - "tag": "0.1.6" + "tag": "0.1.7" }, "platforms": { "ios": "9.0", diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 6742bfb..c0288ad 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,5 +1,5 @@ PODS: - - MachineLearningKit (0.1.6): + - MachineLearningKit (0.1.7): - Upsurge - Nimble (6.0.1) - Quick (1.1.0) @@ -13,14 +13,14 @@ DEPENDENCIES: EXTERNAL SOURCES: MachineLearningKit: - :path: "../" + :path: ../ SPEC CHECKSUMS: - MachineLearningKit: 0402701c501bfee52a2ebf48426a33b47d698dcd + MachineLearningKit: 040457b6d6afce606454c16008b954f3952a0d32 Nimble: 1527fd1bd2b4cf0636251a36bc8ab37e81da8347 Quick: dafc587e21eed9f4cab3249b9f9015b0b7a7f71d Upsurge: 614412863a3b5470b31636a004654b6ef3a34f47 PODFILE CHECKSUM: 6efa57e13fa4fabb331b61a3a84a43c047bb3113 -COCOAPODS: 1.2.1.beta.1 +COCOAPODS: 1.2.0 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 2b7db62..677384c 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,180 +7,171 @@ objects = { /* Begin PBXBuildFile section */ + 04ADA7ED88E0D419D4DA1DB9DA1A2FF1 /* MachineLeanringErrorEnum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6576B5347A8A01F10941469B1EA3EB /* MachineLeanringErrorEnum.swift */; }; 04AE1DC56A0C088489EA27CED5190838 /* Stringers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 692BA097D08B9592A8A24370C50D81D0 /* Stringers.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 06701D0572D99FF3577E0C4F3E308FE8 /* MLKit.h in Headers */ = {isa = PBXBuildFile; fileRef = D227D633B0111C5DC188D1C75FBC2BB6 /* MLKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0B846370B6EA04F7D7909A403DD16317 /* CwlBadInstructionException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A0C56CEE8C3AD43FF8AE40F6AFFF4C7 /* CwlBadInstructionException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 0B9A16DAD08AFA59EDD6058831216A70 /* World+DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A46C9CABC6D7C94BE0864668B74F949 /* World+DSL.swift */; }; 0D4B1951108CF54E1968467D30C351B5 /* MatcherFunc.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0CED4BACCDE5B346DA1AF62EB6AF781 /* MatcherFunc.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 0DF2D4E6B55D67E28D8BE9EC5A25F24E /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 256AA66B0C109C259E2D0DDA42B32EDB /* Async.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 10B953E63951E8DB495AA5B5EBDBBABA /* PostNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6C176A86FD62B15FEA0A36C68FCEBF8 /* PostNotification.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 113D7CE0F56C36EE7FFCF7D149176F21 /* Complex.swift in Sources */ = {isa = PBXBuildFile; fileRef = E73EAAE4A9B8B04A94992730F2F8F808 /* Complex.swift */; }; 11EEDB6DB6F03E2AF3FC368AA32274AC /* ThrowAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 564EE9F32DE4725529A52326B19EA90F /* ThrowAssertion.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 123D36BB9CA549C55BBE6FC7D21BAB97 /* NMBStringify.m in Sources */ = {isa = PBXBuildFile; fileRef = 538A45E8224CD67C4262A9B8B8F1F37D /* NMBStringify.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 153AA07F19B6F56DE6BB54E6D7BBF1E5 /* Matrix.swift in Sources */ = {isa = PBXBuildFile; fileRef = B90161234C0D9C58144F0D114775D3E8 /* Matrix.swift */; }; 15B880A364E4467B8496FB49A27371AA /* Quick.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B964EBE2CDB51FDD20A12FCFCB2CA92 /* Quick.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 178FA5CACF9ACD91FBBEB0DF8892201F /* Hyperbolic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24D478FE2127475CABEE5C5AE5B9772D /* Hyperbolic.swift */; }; + 17B85BEE3D018EB0AF42539D1658D24E /* Arithmetic.swift in Sources */ = {isa = PBXBuildFile; fileRef = D24FCB1F18D8CD9497E67BE1BC119854 /* Arithmetic.swift */; }; 18F58A2CDEFED6B5617F4944FC84DBEE /* XCTestSuite+QuickTestSuiteBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = CECAF283BF4E0E908EDD2145F46A956C /* XCTestSuite+QuickTestSuiteBuilder.m */; }; - 19910A844C4F2E529D19AB307FFBCAC7 /* NeuralNet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CD9908844E6289F25B33B76D661F910 /* NeuralNet.swift */; }; 1C37D984F1BBBC7278E1FB6BDB153892 /* CwlCatchBadInstruction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC4FF748D013369FE77FEB13FA517D2 /* CwlCatchBadInstruction.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 1D766EE454F206D5D9AE2163784CF6FC /* Perceptron.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6445F60FE57F75586E5913E05E92441A /* Perceptron.swift */; }; 1F707004C05C63F90F0030E8E4902D66 /* BeLessThanOrEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC69007AFC0A65564291043D24B15E3D /* BeLessThanOrEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 20C32450383B494CC9EF7F3072369EE0 /* Pods-MLKit_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A6F138A9EBF54B5A06DCE9CD171D6071 /* Pods-MLKit_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2173F4681D2DDDF63A01A7439EDE1FD4 /* NMBObjCMatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 460AA53800E69CBD26BBD78537857F1E /* NMBObjCMatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 2211BD314546EEC0AB7B56FC3A45B4E5 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 761E70C09096AF7E9F07C0940571D8E8 /* XCTest.framework */; }; - 26A3DFBD9271C5F76EC35201D1048E5F /* Neuron.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83D8C7F72D654D31C25D4CC5703B897C /* Neuron.swift */; }; + 249AC8A0B6CC8D4D92DA5D841D712900 /* Complex.swift in Sources */ = {isa = PBXBuildFile; fileRef = E73EAAE4A9B8B04A94992730F2F8F808 /* Complex.swift */; }; 288DBE855F794BA1AE8BC47AA413693E /* BeginWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26788572C6F366401AFEC63C14A45513 /* BeginWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 2991245B488F3F00EDCFD3EFB2244294 /* Auxiliary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 012916E1116F4F544559C4FFCDD0D170 /* Auxiliary.swift */; }; + 2B132F4EB4A9D60A8439EFAC1D0D6D2C /* Span.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99A3B4EC6DA19FEADCCDCA96CA327574 /* Span.swift */; }; + 2DB201D5AC1FCE6C27412155BACDF7F6 /* ActivationFunctionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97CC96CA68BA0815524C996D3FD7D4C8 /* ActivationFunctionType.swift */; }; 2DF80575B9759A9E8004F4F642D0D123 /* ContainElementSatisfying.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4891C3E0E5A4953C1B99E8D3D29EE77 /* ContainElementSatisfying.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 3068D78E8F744939B04CA6B03D3380AA /* QCKDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = E676FEA2024624A7035E564D4FD4C518 /* QCKDSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; 30F80459D8D536D8B99880EDD353987A /* BeGreaterThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46306D0BBA1452AFEA95521C31EF74FD /* BeGreaterThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 318F9AE6D9561CFB487071A821B4217D /* BeLessThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = E173D8DBF9F7B3031B549B2E0D20C12A /* BeLessThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 31DAC2CCBBF3C8BA68AB4DC7912A199B /* Pods-MLKit_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D3A07F4F6A05CA6A00CF85FDA94AB57 /* Pods-MLKit_Tests-dummy.m */; }; + 327749EF14CAE658519971A5FDD0AB95 /* Upsurge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29E88E2BB63028C27C1E53746F101DF7 /* Upsurge.framework */; }; 32AB6828BB98A679D3EBCC16C7BE9566 /* Functional.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2D5869169BD2131A228B383AB451505 /* Functional.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 34E0569B2666F68A70EB676EFDCC4434 /* CwlCatchException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40FFCF7710FDE9792C5747C276F2DF4F /* CwlCatchException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 35E498D7267B6961DED0706D43F883A0 /* SuiteHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D765DA753FAB21A06C81689DCF49863 /* SuiteHooks.swift */; }; 383B3EF018CDFD095EFEB7D74769144A /* EndWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05BA3CAD29488F2C5317D831BB6931BF /* EndWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 387B27F0A4DD48F245FF12E5485FB9BE /* QuickConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EB98267420E501E4F7B0573E2C5F96F /* QuickConfiguration.m */; }; - 3E251C0CAF785371595D98B9C979B779 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD3593FEB98ECA8845615527BF4C07B6 /* Accelerate.framework */; }; - 3EA6167592B6FD24072F54B90ACC290B /* Trigonometric.swift in Sources */ = {isa = PBXBuildFile; fileRef = 632231BFC26E16C229D32687B917D3A0 /* Trigonometric.swift */; }; - 3EB611413EE2B54837635CD65F132345 /* Auxiliary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 012916E1116F4F544559C4FFCDD0D170 /* Auxiliary.swift */; }; + 3C8CBA02B15729E98A0F63382FE6217B /* ValueArraySlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19D06F6EACA4C3A8FB660F983B8C2500 /* ValueArraySlice.swift */; }; + 3E456278E0D7B190269739DA08693C9E /* LinearType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AB15E15A6C417380F4BDE4F104E73FA /* LinearType.swift */; }; + 3E699E314F200C3EEF7C7E0D46E26B79 /* Upsurge-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C36512E8311F1878F954D885D3EF9B /* Upsurge-dummy.m */; }; 3FFDB93012DF1EBF973430063D61C96D /* Callsite.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04D296FB2AE0035E8400F25EBD3EF4B /* Callsite.swift */; }; 409A3ECDDC680D0BD343E3F203862E25 /* Nimble.h in Headers */ = {isa = PBXBuildFile; fileRef = 124FF2A96FE15393763BC63572EEC184 /* Nimble.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 438262E9AEBC5203D56677E842F563D5 /* MatrixArithmetic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A2A011722B21DE42A32C785BC89EA01 /* MatrixArithmetic.swift */; }; 4540D4FBCD937483258578DE32634108 /* World+DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = F4AA2FCE20C3F50B7669DC36BD5B9FD0 /* World+DSL.h */; settings = {ATTRIBUTES = (Project, ); }; }; 458ECBFAB660567138EFA52210058C36 /* QuickSelectedTestSuiteBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE29DF31652B34FA490E23487B83FBEE /* QuickSelectedTestSuiteBuilder.swift */; }; 46AAFE6E2E75D62AF8DFED367375002C /* QuickSpecBase.m in Sources */ = {isa = PBXBuildFile; fileRef = B9D3FED038BE3338641A141732755B00 /* QuickSpecBase.m */; }; 4780B7DFD8E5DC959B44110EEB2AD935 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15E689FA8F35DA0540DAED36BA321F6E /* Foundation.framework */; }; - 49631670996180783DC00EFBEB27EDE3 /* ComplexArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDC143C76D629D8D454DC5D8AA30F893 /* ComplexArray.swift */; }; + 48D3AEB90C6F865FB5128840EF13CAC8 /* Layer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C22F81E5621CF7F9199426C6B30396E0 /* Layer.swift */; }; 4A17E1DB4EA2CCBF04B76F5F8EB417A1 /* DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 0874FE88223748474F9540CC3A7B2CDD /* DSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4B6579FFF0062EEBBABB8336C0871171 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C1D721B2C6C17E12FA8322E6E16682 /* Errors.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 4D339AFDC6B6AAA44BA5C0CD471B6EA2 /* QuickSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 67BD782939C66E9C3619A77243519BF6 /* QuickSpec.m */; }; 4D5C0E52B4D1231A2E3057B4A048D1C5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15E689FA8F35DA0540DAED36BA321F6E /* Foundation.framework */; }; - 4E0A8331641CB0F7306B9FF7AA98E011 /* PolynomialRegression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6399E2F1241CE723D578C761B9315C2B /* PolynomialRegression.swift */; }; - 4F771B1F858E7FF60B5272E77A228731 /* TensorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C9E249A32DD13B27BA05B3CDE01B22E /* TensorType.swift */; }; 4FDFB4587C55A09C0A2E3A3780568B54 /* QuickSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 02862E2FB988A3D26C860CD548A14BEB /* QuickSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50471C0EFA0C6F13833F63066765DCFF /* LinearOperators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C3B0FE4A67C53BAE82ACF00A907244A /* LinearOperators.swift */; }; 508E5B8353068B37CA6F40E3D7B89D42 /* Closures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9624E19BE6F7377A79FB879764B1B1DE /* Closures.swift */; }; - 50C5B91FE25D361A85C0DDD1B4AFCA97 /* Adaline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28230F7A0883AEAAC5AA0A1F5A9D4D52 /* Adaline.swift */; }; + 519349F9AF137FFAD28A594685046460 /* Exponential.swift in Sources */ = {isa = PBXBuildFile; fileRef = C00D1260FC691D4C91B5C7B0C1E51CED /* Exponential.swift */; }; + 51CE8C2AEBC657C98FFC03B61E97B412 /* Upsurge-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5480FBA1F6D203291F193F6D19878DBA /* Upsurge-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 562D9F54656827753A037634D5385BFD /* TensorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C9E249A32DD13B27BA05B3CDE01B22E /* TensorType.swift */; }; 5685322E421AB4DA6A91B26C09833B29 /* BeIdenticalTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = E429FE9C8505AE999927833503F9CB86 /* BeIdenticalTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 56E55355678E5D3CCC6C92F54D612C44 /* QuadraticType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 494C0F635D5836E872EF3C5A39E97D40 /* QuadraticType.swift */; }; 59667A95671EEAF87FA2272CE0B01451 /* QCKDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = E3118F695CEE1A70F01A9E795A35D87A /* QCKDSL.m */; }; + 5B18BC28616DDC2DDE3442B98F00CF09 /* PolynomialRegression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B8C04FE82A09C3FC32594EBFC743E53 /* PolynomialRegression.swift */; }; + 5FB36CC3D65A05755802D9EC66B0AEDC /* KMeans.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93DE7AC6CBCC1E15E3EC4491A5B45D7C /* KMeans.swift */; }; 61554BF9F5D2997AD26BC61F4674CD68 /* Pods-MLKit_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9951688C60A46DD572589F5DACF0C4A5 /* Pods-MLKit_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 643B6917C3157C68C92A7260459DC694 /* Real.swift in Sources */ = {isa = PBXBuildFile; fileRef = B05A2B00A7660C87F990F90901BB61C2 /* Real.swift */; }; 646824AF5ADC1159EBC9CAC023BAED4E /* ExampleHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB8099238DE7DDCFE3FE4C07E86CF1E /* ExampleHooks.swift */; }; 65335E2F74AE71C270659EC7E8725030 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 445AD67BD05424A184443D2B95D450E1 /* Expression.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 6929FE4B0377E0E4B63D4B9A9DAAE87A /* Span.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99A3B4EC6DA19FEADCCDCA96CA327574 /* Span.swift */; }; - 69C1BB1111675D1B539F5AEFBB93DBFC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE766189385F7E575AD7202D0316AFFC /* UIKit.framework */; }; + 694FFDD18CDDC9EC5B5F52779DEC4133 /* CSVReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7264F4D0435F000E2684EB1DAACEBDD1 /* CSVReader.swift */; }; 69F9C31FC991A69337CE9B599993D68D /* NimbleEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E2478F9C2B8F6A4FD3E290EB66D2967 /* NimbleEnvironment.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 6AB5FC036C7A26396422EA5900334AA1 /* MatrixArithmetic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A2A011722B21DE42A32C785BC89EA01 /* MatrixArithmetic.swift */; }; + 6B8EEA47C6BE87E17FD2F93747E2A4C5 /* MachineLearningKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D60404BA78CC7BF6C1144F008DDDDBC /* MachineLearningKit-dummy.m */; }; 6C52EF3CBF595A0DC903558A35E303D9 /* QuickTestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE7B423E7D950D806D1D781D4D9FC8B1 /* QuickTestSuite.swift */; }; + 6E55E227D9195A39F978F2DC1C408636 /* RidgeRegression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DB8A700464608EEC997EB8F70F5A97 /* RidgeRegression.swift */; }; 6F36A431DE56B28FD400D20036A23DE4 /* NMBExceptionCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = D90BB83409612B6B1623CBC644ACC3FE /* NMBExceptionCapture.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 70121880DD090476FF2D85A257F7644C /* KMeans.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9616AB853B1C0D8D1727DBD8386E37FD /* KMeans.swift */; }; + 6F74F8072E2C42E51624D0B89AB03048 /* ComplexArithmetic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E0EB0151B5DDBCEC7706C08CB3F6D0A /* ComplexArithmetic.swift */; }; 704DA81E48A5263B35189F36C5247A53 /* FailureMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 077C0519A2057F471035D14A7027344E /* FailureMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 71CD456EE3712FFF55CB7BF70ED20647 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AEF9A30B4EAA4E623AC004398637120 /* MapKit.framework */; }; 7272DB71A8C5325A0778F63E6F6C9957 /* AssertionDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F2FFA2871232A17F74D97604A516636 /* AssertionDispatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 7276DB3552398200B421D06F207EC0E3 /* NimbleXCTestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7EC0E4FEBE039947272C3B4A867BE43 /* NimbleXCTestHandler.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; 74534A7B8A7904903E206702029453C8 /* QuickSpecBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D128A10EA2E300A21235B91F63A2AA3 /* QuickSpecBase.h */; settings = {ATTRIBUTES = (Project, ); }; }; 748BB746CA429F9C5D510EEF3245ECFD /* Nimble-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DBD0EB0CE3764BD0D10DF460F60B14F7 /* Nimble-dummy.m */; }; - 76DE9965F967C929E23496C9190552D7 /* BiologicalProcessManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37EB00DB3008F53F0434B5613FBC4C53 /* BiologicalProcessManager.swift */; }; - 7944F27F56E31EC0ACE39BBC5C2504D8 /* ActivationFunctionEnum.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3646C0A4E9265CF59C37A69AAC866CD /* ActivationFunctionEnum.swift */; }; - 79D372BBA24A59BCE017C0390739789B /* Interval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93BD78CE597862CCAAF3A214DF9A8D46 /* Interval.swift */; }; - 7BA253257934CFE972B3B93DA0E54A13 /* SimpleLinearRegression.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF522F03C4D4A099193666B4BCCC3EC1 /* SimpleLinearRegression.swift */; }; + 76C86B1AE6D2B6BED9ABBA270B6EC2F5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15E689FA8F35DA0540DAED36BA321F6E /* Foundation.framework */; }; + 78726014CB6610CA87B10E02D148478A /* DSP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 383A4DC8ACFD6B49ECF2DFE23764A2D3 /* DSP.swift */; }; + 7900A1BADFEB30B7D803D0869E548E10 /* MatrixSlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 674822B4E356741B78B38B007C88BB9C /* MatrixSlice.swift */; }; 7BD907A708031D5361E1A97CACF9F24E /* Nimble-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 162303716510B6A1AC25BFD0F74F2544 /* Nimble-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7C94AD7C4A4F54FB18623AD4E5CD64F7 /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF83868F61F3BD4402D23052FDEA773A /* Example.swift */; }; - 7E6E10C02DFF79354646133DD3F7A335 /* MachineLeanringErrorEnum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02FE8673FE625152ED12629116F0948C /* MachineLeanringErrorEnum.swift */; }; + 7E08966D0A420CCE741F608370F4759C /* ComplexArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDC143C76D629D8D454DC5D8AA30F893 /* ComplexArray.swift */; }; + 7E950AE4BC7D603625CBFD877F63728C /* ComplexArrayRealSlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1210BE3C711459C58AE9F743F7B82931 /* ComplexArrayRealSlice.swift */; }; + 7F5D5AFA3C84AA582DEDC6A6C78E7533 /* Tensor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AB6F2F34E76936E5DCD781D737E8D0E /* Tensor.swift */; }; 80D1788131B3D3326041E62364F8C7AA /* BeAKindOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1849FDC7F164FD02BFDF72640C9F951 /* BeAKindOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 8116B4216C2E5C01734627A64608B311 /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76A2C52BB2BC141539B6A02006AE6422 /* Value.swift */; }; + 86D13DA212D4F8A87E212941DF61361D /* ComplexArraySlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB163EBF7C9440E868AC98AFF69EA4BF /* ComplexArraySlice.swift */; }; 86E4EF6BCCB1EF6E67552FCD7A3B6D6E /* QuickConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 16D03C36A6892F0A0BA80E3B43181599 /* QuickConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; 874EF0A06B9FC80B877261425BAB4ED2 /* mach_excServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 20BF642EFEB79518E353D7F8F3D860F1 /* mach_excServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 88B771FB81DD05BF7E48A0D9271D9EB4 /* CwlCatchBadInstruction.h in Headers */ = {isa = PBXBuildFile; fileRef = 3949269DDD43CCFF544917979779224B /* CwlCatchBadInstruction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 88F99B90B78BE003CCD3CF0720219D3B /* RidgeRegression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A12C0E3001A5D20FD8C98EFFB3BD207 /* RidgeRegression.swift */; }; 88FEF6149AF4FA0DEE3DBCBFD20BE64C /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 895545B440ABA73C074838125D4DDCD5 /* Filter.swift */; }; - 89842671BEE6483B22D5D8440D46CBE2 /* Upsurge-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C36512E8311F1878F954D885D3EF9B /* Upsurge-dummy.m */; }; 8995462F1A16CFB4BB4B376A1DE531EA /* NSString+C99ExtendedIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79862A111E88CCA41E254825B0A2B523 /* NSString+C99ExtendedIdentifier.swift */; }; - 89BE38D68258AD1FFAB150CCCBD6DFFE /* LinearType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AB15E15A6C417380F4BDE4F104E73FA /* LinearType.swift */; }; - 8B28F52707F686189C4FF86336BED8E1 /* TrainingTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12366F5A28306734A313F3975B44D367 /* TrainingTypes.swift */; }; - 8BD1AC3E151D5A7653D9FEE455391C6B /* Real.swift in Sources */ = {isa = PBXBuildFile; fileRef = B05A2B00A7660C87F990F90901BB61C2 /* Real.swift */; }; - 8D58BCC6313D5B78B6C472083CC1C3AF /* 2DTensorSlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C13EEF6CE7B8665E06332AD77882466 /* 2DTensorSlice.swift */; }; + 8B633AB7CA7CD7773A1C426781C08948 /* BiologicalProcessManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 224B74EEB01665D46840260470EA4991 /* BiologicalProcessManager.swift */; }; 8E00B22C6FE14FEF9B828106A8B1622F /* World.h in Headers */ = {isa = PBXBuildFile; fileRef = 64BEBE3A1D4FF0196925EEA64015469B /* World.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8F266CC6E5329563DE8F148FC7778031 /* ComplexArithmetic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E0EB0151B5DDBCEC7706C08CB3F6D0A /* ComplexArithmetic.swift */; }; - 9020836B53D4F2C01DD75407A318EE10 /* PointerUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCF0CD880E6B5A4F29D38A6CE05AAFA8 /* PointerUtilities.swift */; }; 926F67C94121C19A959745138E5B42B6 /* NMBStringify.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A7F3D729C82E75AB35940B80EDE5960 /* NMBStringify.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 931A3BED40D559A81F5167CFAB56D3A5 /* CSVReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 622324B170D9D4EAB905996D74DBC373 /* CSVReader.swift */; }; + 92EDDC00A5D940D4F7361AEE6644BD30 /* LassoRegression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436FD53B1F1C37D3650BE5FE2C882A5E /* LassoRegression.swift */; }; 96154D504405D81853EF3326A10CA05C /* World.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7D069980D480A434318340B49416C2C /* World.swift */; }; - 962A1AAA808E92DC65244AFE9501295C /* ValueArraySlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19D06F6EACA4C3A8FB660F983B8C2500 /* ValueArraySlice.swift */; }; - 96637FC87F06B7CA2F9613AA7986D4F2 /* NNOperations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D28E4FD8BC290EE2DF8062B79E858E6 /* NNOperations.swift */; }; - 9B10C0FDE7497E14ECCD735C0D13ECBC /* MatrixSlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 674822B4E356741B78B38B007C88BB9C /* MatrixSlice.swift */; }; 9D9155396F48333B854DBE586138EDBF /* NMBExpectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60979E4BD68DB0DE4501D0BCC7234D91 /* NMBExpectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 9E89BAB7963E6327D38AA493C3FD856A /* Genome.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B3B25CE2099F033BEE06C3BAD98E751 /* Genome.swift */; }; + 9FFFDDC2816EEAA4F74BE9FCF9681670 /* SimpleLinearRegression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33447FAB1F2844FCF376B75EB97C4666 /* SimpleLinearRegression.swift */; }; A167AE1A23ECB0052ECE3E97BCE40E70 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15E689FA8F35DA0540DAED36BA321F6E /* Foundation.framework */; }; - A203C28DC0FFC459DE139E78BE09D6B4 /* Matrix.swift in Sources */ = {isa = PBXBuildFile; fileRef = B90161234C0D9C58144F0D114775D3E8 /* Matrix.swift */; }; + A1F2BC02366DABC762E62F506B6D1AC2 /* 2DTensorSlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C13EEF6CE7B8665E06332AD77882466 /* 2DTensorSlice.swift */; }; A279D4DAE8E16C5D8F9019CDBED14D73 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0912AB47C2FD8B724C2FF78EB04DA146 /* DSL.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A36E8372A09415B4A225F5B43326FAF0 /* Exponential.swift in Sources */ = {isa = PBXBuildFile; fileRef = C00D1260FC691D4C91B5C7B0C1E51CED /* Exponential.swift */; }; A665BE606F6B28E89B531EDE41657ECE /* Match.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CCCA0D5F8BB724A0B342E39C887F56C /* Match.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A7A65DD22FFF2848B69FD57F86215716 /* LassoRegression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BC505A053298F63159996DE683D55D5 /* LassoRegression.swift */; }; - A862525C8F30461FB35C4B376D79FA0A /* DSP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 383A4DC8ACFD6B49ECF2DFE23764A2D3 /* DSP.swift */; }; + A711AA562D0AD3092BAF83E2CFCC86A7 /* QuadraticType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 494C0F635D5836E872EF3C5A39E97D40 /* QuadraticType.swift */; }; A87CA098369D61EFC7A05BD61512A3F5 /* BeAnInstanceOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EB4893036DEB2A1EB8B6111A120F5A2 /* BeAnInstanceOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A8F199FA1C0D1AD05EADD8EFBC00592B /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76A2C52BB2BC141539B6A02006AE6422 /* Value.swift */; }; AA6EAFA71E1A6862AA312D89A601C34F /* AsyncMatcherWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1601B2905CD07F5813DA81623EDCA6C /* AsyncMatcherWrapper.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + ABE2A268050AA3DEFDF8D945B9930866 /* DataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477B34BD1FFA8820D6EF220B0BC0118F /* DataManager.swift */; }; ABEE3775B4FD25B3C86EE712BC2502B2 /* BeGreaterThanOrEqualTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = C77F9745A1AEE0419DE285232F7A4B46 /* BeGreaterThanOrEqualTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + AC3D1B5A37FB49CFDCC4C671C79B020F /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C397B78C2E0CE51B2767D2AF1CD9817 /* Extensions.swift */; }; AD2B0E5BFF8EAD0EDF0449F8D198277C /* BeEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 851E4FB881FC4ED5D39D0CBCB7DAA845 /* BeEmpty.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + AE7464C0BFB56E8B11B0670A68B9CF12 /* NeuralNetwork.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F8B6CE41AAC2E1823ECFFB4021CC6E2 /* NeuralNetwork.swift */; }; AF7F875677FF3EB4B6ADDB1373B34249 /* BeLogical.swift in Sources */ = {isa = PBXBuildFile; fileRef = 227DDFCD5D9F3918AB624B74E886C8A5 /* BeLogical.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; AF814F353BF9C15BAED3E4067DCC3BF7 /* MatchError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C9A0B54C6BC094E3CD3A2A61EDA9D85 /* MatchError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - AFF43EFF1ABD5F90CBFEC2A5D25AD493 /* Hyperbolic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24D478FE2127475CABEE5C5AE5B9772D /* Hyperbolic.swift */; }; B138DBC0F7D2656EE7E413BEA735C71D /* DSL+Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F7958F9886E618114345F800A8E55FF /* DSL+Wait.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; B16340143CE7FF40A32CD8082ED4152D /* CurrentTestCaseTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = BA9401876190B7BA1B70B7A9752180D5 /* CurrentTestCaseTracker.h */; settings = {ATTRIBUTES = (Private, ); }; }; B18BBE44B0684143A1542A9ADC880697 /* URL+FileName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D3E3057A07EA15E4008F933E8752DD2 /* URL+FileName.swift */; }; + B1A6D9047AE13EF484B5F58F215440A1 /* Interval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93BD78CE597862CCAAF3A214DF9A8D46 /* Interval.swift */; }; B1D59A1BD0FBDF3BA9A5B65ACFC25D56 /* ThrowError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0117B79C919D9B561E2A88CF83B7969 /* ThrowError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; B1D876C441B5F61984E35ABB5210AFE6 /* CwlDarwinDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F643B28D12D7235D05A86D94E704075 /* CwlDarwinDefinitions.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; B231D3FAB3CCEF59EC681C7C51C0AE56 /* ExampleMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = CABE7AA02D1F045430D6A230BD3B4C19 /* ExampleMetadata.swift */; }; - B2D133C0F3916FDDC17633D0277761CB /* TensorSlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904FEA0622628AADB1CA02AA57ED1A48 /* TensorSlice.swift */; }; - B5636367653C58A6B20949A578317BE8 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9AEF9A30B4EAA4E623AC004398637120 /* MapKit.framework */; }; + B24A0A8140995A495C05A9D6209847CA /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD3593FEB98ECA8845615527BF4C07B6 /* Accelerate.framework */; }; + B4590BB72005AC96211E469104D92DB5 /* InputDataType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEA09D70E089028B813F7E3B421C5F78 /* InputDataType.swift */; }; B612F1F906E3AF8B1FC6B893229E83B6 /* AssertionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA483EF72520B01CF4A81ED38901CC64 /* AssertionRecorder.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - B6EC13F8CB68644BD9886B003BA6900C /* Arithmetic.swift in Sources */ = {isa = PBXBuildFile; fileRef = D24FCB1F18D8CD9497E67BE1BC119854 /* Arithmetic.swift */; }; - B756FD631E2AF33F50050C7EB10069C7 /* InputLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5719043BEEEAC9B415BF36B8C14EC486 /* InputLayer.swift */; }; - BA62865F4E3212AE75CD8EF9150B32F0 /* Population.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99460984C73229E22633921A1D4DD6DF /* Population.swift */; }; + BCA0250C524C4316B3D4D6415A4969C8 /* ValueArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD299764DE8C9B43BA8AFF5C36053F /* ValueArray.swift */; }; BCCBC7CED6FB9D71D85D8044B209B09A /* ExampleGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 711A9AC0701A2E08E65DD82429B871BA /* ExampleGroup.swift */; }; BD782803F394A708E7D3223EBDE31C95 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A6452D2CC7C17DD01ECD91742AF746F /* DSL.swift */; }; C08FCDC247B35C971F5AE7E58987E8AC /* SatisfyAnyOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCBBD5A13ECC31F538E7CFD189D0DC70 /* SatisfyAnyOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C1ABF05D2FD3C1F0B0490ED0B6B6F671 /* Tensor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AB6F2F34E76936E5DCD781D737E8D0E /* Tensor.swift */; }; C39921387DA273A0952A999B0CDC03F9 /* CwlCatchBadInstruction.m in Sources */ = {isa = PBXBuildFile; fileRef = D88E93CB6BC77FCE57F53E52EA5D23E8 /* CwlCatchBadInstruction.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C662107FA334CFCC9035311B62C12197 /* ValueArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AAD299764DE8C9B43BA8AFF5C36053F /* ValueArray.swift */; }; C710B6A7B1A479349273B3AC04CF07C5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15E689FA8F35DA0540DAED36BA321F6E /* Foundation.framework */; }; + C7D1BAD68F1C67EA9AAE23534D3E9665 /* Population.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A45BA6EC001C35D2D0B9BFE6072BD59 /* Population.swift */; }; C83188A450E13A233EF77D94306E926D /* Pods-MLKit_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D5025AF8F620B99C3283F0975D09FE3 /* Pods-MLKit_Example-dummy.m */; }; C9132B1E287B7ECA69A90F4766ADE9C2 /* DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C0D020BB9A8FA4BD0F26AC76A2E14A /* DSL.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; C97B9F51427BCD4C63EC7D75AB161833 /* Contain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95FD3F8CEA2A60510B93CE50FFDAEC43 /* Contain.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; C9AAE13CC11B5370479EA08F706EA61F /* HooksPhase.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA8E6B68CD5B9186B6EC6647BF81A356 /* HooksPhase.swift */; }; - CE5A08D84128D55187606154E5DBE72D /* Upsurge-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5480FBA1F6D203291F193F6D19878DBA /* Upsurge-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CFDD8E224B4E973A73E00FCE0BC51D19 /* OutputLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF70CC1117A6FB08201FDDB1CB266D6C /* OutputLayer.swift */; }; - D0049FF0F7A1B7D2432ABEE038CD8890 /* MachineLearningKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ECF49E5836E9754AAF942842CE1B960 /* MachineLearningKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D0E61450A2042ACA5849C5F62720BF88 /* Training.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E0557ADBBA3D7B968ACB54715F8C5B4 /* Training.swift */; }; - D45F4BA5D809FEEACBB4A752920EAEA0 /* Upsurge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29E88E2BB63028C27C1E53746F101DF7 /* Upsurge.framework */; }; + CC420602CB84B73545CD09A3DAD3F638 /* Trigonometric.swift in Sources */ = {isa = PBXBuildFile; fileRef = 632231BFC26E16C229D32687B917D3A0 /* Trigonometric.swift */; }; + D234F610A6025A894A8CF8971A8F96C0 /* TensorSlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 904FEA0622628AADB1CA02AA57ED1A48 /* TensorSlice.swift */; }; D5D4E8223C271A19448FCEAC36A9B441 /* AdapterProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7738AD08C39FE55EBEED43F72217AD23 /* AdapterProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - D65D3D915B692F53F29BF10FBFDDC8EC /* BackPropagation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E4FFF51329BC9B1183F468ED0D3F0B4 /* BackPropagation.swift */; }; D6A1634CFD5243D18DB762116C8CEF8F /* BeVoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27B970E9789C66FDD4D00112E12E321A /* BeVoid.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; D7408861438442F67469ACE39D1604C1 /* BeCloseTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985F35A8C7BB37C0852C7E45F32619DA /* BeCloseTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; D93C5A1929F8FD53F7EF2C3CA16CCC95 /* Expectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC2B937DBAE6CC4BCEE683AA80588DC7 /* Expectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; D9921CDBA36587248C63AFDD5B3C1981 /* Equal.swift in Sources */ = {isa = PBXBuildFile; fileRef = E91835FDAA353C4CC63023DDB96B91F6 /* Equal.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + DA5FD83FA962C78A2484186465AB5AF2 /* MachineLearningKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ECF49E5836E9754AAF942842CE1B960 /* MachineLearningKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; DA90A10D3A108672F7D61F8A96C42650 /* Quick-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C3523CB10A94DA7970870A6190C1CB1C /* Quick-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; DB039F39038342DE5258F386F694A9A0 /* SourceLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6030DF38EBDBF336FFAE0120EEA4D959 /* SourceLocation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; DB5066EBB8C95A3F8818628C9CA6794D /* CwlCatchException.m in Sources */ = {isa = PBXBuildFile; fileRef = 922D9654CE04819948A343CA3B1429F3 /* CwlCatchException.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; DC9C69D7524AFEECCDC73D5CF1F4C028 /* HaveCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07FB5885E183C905F1B353BA590212F0 /* HaveCount.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - DD7A6967DEAAD49511CEC78355678DEB /* MLKit.h in Headers */ = {isa = PBXBuildFile; fileRef = F51B8F4F59EB42C9058BF2564443D938 /* MLKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; DEF289C7BF4E97D42B06B1EB7CAE0951 /* CwlCatchException.h in Headers */ = {isa = PBXBuildFile; fileRef = 50F4D75F4A1D2B2E24633488475931A3 /* CwlCatchException.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DFA04175FF8EB3DFFA5FFEEF93996E7C /* FFT.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8696FA5715205A2FE823260539588590 /* FFT.swift */; }; E1554E6ED22E94CAD97E211C7FBA530B /* MatcherProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD25694F61A3303C6994E49FD926F60C /* MatcherProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - E2B4416F12F2754E0897FA3EA5A0177B /* MachineLearningKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D60404BA78CC7BF6C1144F008DDDDBC /* MachineLearningKit-dummy.m */; }; - E6C8F28209B49A37CDAA186AB95009D4 /* HiddenLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E051C80B62918A5D9DD916E1A32300F3 /* HiddenLayer.swift */; }; + E1DC6CA2B4B8D7E6F175D02BE729E637 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE766189385F7E575AD7202D0316AFFC /* UIKit.framework */; }; E9CD7EF9DD6E75404E4264F6F0AC8D26 /* NMBExceptionCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CFC980E2966F69FA4D771EB69B2072A /* NMBExceptionCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E9D624FE0FBEB13A17DF3CA43D94E8A9 /* FFT.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8696FA5715205A2FE823260539588590 /* FFT.swift */; }; EEACC5B78AFB71C8594380C005C17A4B /* XCTestObservationCenter+Register.m in Sources */ = {isa = PBXBuildFile; fileRef = 38FE998DBDEEBCE33949AAA9F3296550 /* XCTestObservationCenter+Register.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F0ACEB7555972E46624C3EA9E293DB37 /* LinearOperators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C3B0FE4A67C53BAE82ACF00A907244A /* LinearOperators.swift */; }; F100D41C0564EE46CA47DA9E3540DA70 /* BeNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8255BF758512319BCEC8A9465100F12 /* BeNil.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F1C3DA1C185CA6C61174BC255E9372F6 /* DataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79CCB2C7966BFB9D5D2C995C71C41E7D /* DataManager.swift */; }; F2ED0A18E020A07A092F957B2C7EF0E2 /* mach_excServer.c in Sources */ = {isa = PBXBuildFile; fileRef = 5CEECA1264E2048F119396D446D14C91 /* mach_excServer.c */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F3C489E93A5243B9F2B9ECE3E3D93E79 /* ComplexArraySlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB163EBF7C9440E868AC98AFF69EA4BF /* ComplexArraySlice.swift */; }; - F57892BB17FE9B8F881FE5A68F8AC570 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15E689FA8F35DA0540DAED36BA321F6E /* Foundation.framework */; }; + F4BD351BF32EA4E81E2971E225914D1E /* Genome.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DAB4E6A2EB3A9C3629C2062F345461A /* Genome.swift */; }; + F5F8D1CB9DDF071F399D675E73649244 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15E689FA8F35DA0540DAED36BA321F6E /* Foundation.framework */; }; F6947DC02F61303F74AF8602F1A1BE68 /* NSBundle+CurrentTestBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8F95C5A721744403DDF5D71E3B20A06 /* NSBundle+CurrentTestBundle.swift */; }; F863E54F759068A89CD87B9121C7F6A0 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68FA4E20FBA69E54B8641FB7E2A67324 /* Configuration.swift */; }; F96CD569B97BF947F19270C6C1D0FA23 /* ErrorUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0841731251EEDE7ACA21267B1A8A673F /* ErrorUtility.swift */; }; - FAA38D3E44157CD9C0512A4FCD6C5A27 /* LayerProtocol.swift .swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C898338DFE7E67CC7FBEFB93655AD02 /* LayerProtocol.swift .swift */; }; FAACCCDBE0D2785212E37468636AAB0A /* AllPass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 424CEA9DC77FE5D725C9551F2ACAA8BA /* AllPass.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + FCB81A907C61E1883C282A0271C05D7E /* PointerUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCF0CD880E6B5A4F29D38A6CE05AAFA8 /* PointerUtilities.swift */; }; FD9373DD3C1910FB513089F4CD39613B /* RaisesException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13CD84A26A08B3EC263D565FE02D7940 /* RaisesException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - FDC2EA4BB18793AED748BC5A8733EC1B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15E689FA8F35DA0540DAED36BA321F6E /* Foundation.framework */; }; FE877D0C3D6700F0C8E5CCC0C5020462 /* Quick-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 023DA655BA54CB7DEA97C57AD9725DDE /* Quick-dummy.m */; }; - FF64B428843AFD81F27CC49A77D6681F /* ComplexArrayRealSlice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1210BE3C711459C58AE9F743F7B82931 /* ComplexArrayRealSlice.swift */; }; - FFB35D2F31B5E9604B9972940367F2E7 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A870F309CAC0CCB342388D4554562C3E /* Extensions.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -188,7 +179,7 @@ isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 70BB1F6A80CA78DFE505284EA681F599; + remoteGlobalIDString = 6C57B4D688C9D6216427DD10ADDFFCB6; remoteInfo = Upsurge; }; 6261E54E70518E4B80DE3D3A4B3823C4 /* PBXContainerItemProxy */ = { @@ -198,18 +189,11 @@ remoteGlobalIDString = 0921CC2F4398BE9A4F1CEACB30684B56; remoteInfo = Nimble; }; - 6BDA6707772E5F0BE159E38E1B3639CC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 70BB1F6A80CA78DFE505284EA681F599; - remoteInfo = Upsurge; - }; 9438A9C923DBE3D0619348D344A7421F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 06F752565FCB49AD90CB87375583D386; + remoteGlobalIDString = 28C1C0C2E20677EBC9884E8E60383F6C; remoteInfo = MachineLearningKit; }; A5D12A1484F74731661DDE4440445475 /* PBXContainerItemProxy */ = { @@ -219,13 +203,19 @@ remoteGlobalIDString = 405857F01F82B80417D1BCAA762E7FA5; remoteInfo = Quick; }; + C595E3A155D1433C52691795FEC29880 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6C57B4D688C9D6216427DD10ADDFFCB6; + remoteInfo = Upsurge; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 012916E1116F4F544559C4FFCDD0D170 /* Auxiliary.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Auxiliary.swift; path = Source/Operations/Auxiliary.swift; sourceTree = ""; }; 023DA655BA54CB7DEA97C57AD9725DDE /* Quick-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Quick-dummy.m"; sourceTree = ""; }; 02862E2FB988A3D26C860CD548A14BEB /* QuickSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpec.h; path = Sources/QuickObjectiveC/QuickSpec.h; sourceTree = ""; }; - 02FE8673FE625152ED12629116F0948C /* MachineLeanringErrorEnum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MachineLeanringErrorEnum.swift; sourceTree = ""; }; 05BA3CAD29488F2C5317D831BB6931BF /* EndWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EndWith.swift; path = Sources/Nimble/Matchers/EndWith.swift; sourceTree = ""; }; 077C0519A2057F471035D14A7027344E /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Sources/Nimble/FailureMessage.swift; sourceTree = ""; }; 07FB5885E183C905F1B353BA590212F0 /* HaveCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HaveCount.swift; path = Sources/Nimble/Matchers/HaveCount.swift; sourceTree = ""; }; @@ -233,15 +223,13 @@ 0874FE88223748474F9540CC3A7B2CDD /* DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSL.h; path = Sources/NimbleObjectiveC/DSL.h; sourceTree = ""; }; 08D39735D7DBDB3A52B19BB1A1BEAD08 /* Pods-MLKit_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-MLKit_Example.modulemap"; sourceTree = ""; }; 0912AB47C2FD8B724C2FF78EB04DA146 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Nimble/DSL.swift; sourceTree = ""; }; + 09DB8A700464608EEC997EB8F70F5A97 /* RidgeRegression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RidgeRegression.swift; sourceTree = ""; }; 0AB6F2F34E76936E5DCD781D737E8D0E /* Tensor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Tensor.swift; path = Source/ND/Tensor.swift; sourceTree = ""; }; - 0B3B25CE2099F033BEE06C3BAD98E751 /* Genome.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Genome.swift; sourceTree = ""; }; 0C3B0FE4A67C53BAE82ACF00A907244A /* LinearOperators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinearOperators.swift; path = Source/1D/LinearOperators.swift; sourceTree = ""; }; - 0CD9908844E6289F25B33B76D661F910 /* NeuralNet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NeuralNet.swift; sourceTree = ""; }; 0D765DA753FAB21A06C81689DCF49863 /* SuiteHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SuiteHooks.swift; path = Sources/Quick/Hooks/SuiteHooks.swift; sourceTree = ""; }; 0EB98267420E501E4F7B0573E2C5F96F /* QuickConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickConfiguration.m; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.m; sourceTree = ""; }; 0FB8099238DE7DDCFE3FE4C07E86CF1E /* ExampleHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleHooks.swift; path = Sources/Quick/Hooks/ExampleHooks.swift; sourceTree = ""; }; 1210BE3C711459C58AE9F743F7B82931 /* ComplexArrayRealSlice.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ComplexArrayRealSlice.swift; path = Source/Complex/ComplexArrayRealSlice.swift; sourceTree = ""; }; - 12366F5A28306734A313F3975B44D367 /* TrainingTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TrainingTypes.swift; sourceTree = ""; }; 124FF2A96FE15393763BC63572EEC184 /* Nimble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nimble.h; path = Sources/Nimble/Nimble.h; sourceTree = ""; }; 13CD84A26A08B3EC263D565FE02D7940 /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Sources/Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; 15E689FA8F35DA0540DAED36BA321F6E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; @@ -251,27 +239,26 @@ 1C9E249A32DD13B27BA05B3CDE01B22E /* TensorType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TensorType.swift; path = Source/ND/TensorType.swift; sourceTree = ""; }; 1CA1E0D7EDD11FD11C55B7AC425EA02C /* Quick.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Quick.framework; path = Quick.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1CFC980E2966F69FA4D771EB69B2072A /* NMBExceptionCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBExceptionCapture.h; path = Sources/NimbleObjectiveC/NMBExceptionCapture.h; sourceTree = ""; }; - 1D28E4FD8BC290EE2DF8062B79E858E6 /* NNOperations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NNOperations.swift; sourceTree = ""; }; + 1DAB4E6A2EB3A9C3629C2062F345461A /* Genome.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Genome.swift; sourceTree = ""; }; 2002FFD090C435360F60A33E88C41DBB /* Pods-MLKit_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MLKit_Tests-acknowledgements.markdown"; sourceTree = ""; }; 20BF642EFEB79518E353D7F8F3D860F1 /* mach_excServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mach_excServer.h; path = Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/mach_excServer.h; sourceTree = ""; }; + 224B74EEB01665D46840260470EA4991 /* BiologicalProcessManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BiologicalProcessManager.swift; sourceTree = ""; }; 227DDFCD5D9F3918AB624B74E886C8A5 /* BeLogical.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLogical.swift; path = Sources/Nimble/Matchers/BeLogical.swift; sourceTree = ""; }; 24D478FE2127475CABEE5C5AE5B9772D /* Hyperbolic.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hyperbolic.swift; path = Source/Operations/Hyperbolic.swift; sourceTree = ""; }; 256AA66B0C109C259E2D0DDA42B32EDB /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/Nimble/Utils/Async.swift; sourceTree = ""; }; 26788572C6F366401AFEC63C14A45513 /* BeginWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWith.swift; path = Sources/Nimble/Matchers/BeginWith.swift; sourceTree = ""; }; 27B970E9789C66FDD4D00112E12E321A /* BeVoid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeVoid.swift; path = Sources/Nimble/Matchers/BeVoid.swift; sourceTree = ""; }; - 28230F7A0883AEAAC5AA0A1F5A9D4D52 /* Adaline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Adaline.swift; sourceTree = ""; }; 289B26827495B1EA15C10A9AFE473C7A /* Upsurge.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Upsurge.framework; path = Upsurge.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 29E88E2BB63028C27C1E53746F101DF7 /* Upsurge.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Upsurge.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 2C176355D2DA1EB17207AE84594804D6 /* Pods-MLKit_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MLKit_Tests-resources.sh"; sourceTree = ""; }; 2D3E3057A07EA15E4008F933E8752DD2 /* URL+FileName.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+FileName.swift"; path = "Sources/Quick/URL+FileName.swift"; sourceTree = ""; }; 2D60404BA78CC7BF6C1144F008DDDDBC /* MachineLearningKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MachineLearningKit-dummy.m"; sourceTree = ""; }; 32AA223B57196F7790D905F38D2517BF /* Pods-MLKit_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MLKit_Tests.debug.xcconfig"; sourceTree = ""; }; - 37EB00DB3008F53F0434B5613FBC4C53 /* BiologicalProcessManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BiologicalProcessManager.swift; sourceTree = ""; }; + 33447FAB1F2844FCF376B75EB97C4666 /* SimpleLinearRegression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SimpleLinearRegression.swift; sourceTree = ""; }; 383A4DC8ACFD6B49ECF2DFE23764A2D3 /* DSP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSP.swift; path = Source/DSP/DSP.swift; sourceTree = ""; }; 38FE998DBDEEBCE33949AAA9F3296550 /* XCTestObservationCenter+Register.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestObservationCenter+Register.m"; path = "Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m"; sourceTree = ""; }; 3949269DDD43CCFF544917979779224B /* CwlCatchBadInstruction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlCatchBadInstruction.h; path = Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/CwlCatchBadInstruction.h; sourceTree = ""; }; 3A0C56CEE8C3AD43FF8AE40F6AFFF4C7 /* CwlBadInstructionException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlBadInstructionException.swift; path = Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/CwlBadInstructionException.swift; sourceTree = ""; }; - 3A12C0E3001A5D20FD8C98EFFB3BD207 /* RidgeRegression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RidgeRegression.swift; sourceTree = ""; }; 3A2A011722B21DE42A32C785BC89EA01 /* MatrixArithmetic.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatrixArithmetic.swift; path = Source/2D/MatrixArithmetic.swift; sourceTree = ""; }; 3A46C9CABC6D7C94BE0864668B74F949 /* World+DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "World+DSL.swift"; path = "Sources/Quick/DSL/World+DSL.swift"; sourceTree = ""; }; 3AE3D8AECCC1ACCEA8F2C3B88B7A5070 /* Quick-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-prefix.pch"; sourceTree = ""; }; @@ -279,17 +266,20 @@ 3C9A0B54C6BC094E3CD3A2A61EDA9D85 /* MatchError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatchError.swift; path = Sources/Nimble/Matchers/MatchError.swift; sourceTree = ""; }; 3D34DA76C844CF16C054BA1344541C74 /* Pods-MLKit_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MLKit_Example-resources.sh"; sourceTree = ""; }; 3D5025AF8F620B99C3283F0975D09FE3 /* Pods-MLKit_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MLKit_Example-dummy.m"; sourceTree = ""; }; - 3E0557ADBBA3D7B968ACB54715F8C5B4 /* Training.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Training.swift; sourceTree = ""; }; 3EB4893036DEB2A1EB8B6111A120F5A2 /* BeAnInstanceOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAnInstanceOf.swift; path = Sources/Nimble/Matchers/BeAnInstanceOf.swift; sourceTree = ""; }; 40FFCF7710FDE9792C5747C276F2DF4F /* CwlCatchException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchException.swift; path = Sources/Lib/CwlPreconditionTesting/CwlCatchException/CwlCatchException/CwlCatchException.swift; sourceTree = ""; }; 424CEA9DC77FE5D725C9551F2ACAA8BA /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Sources/Nimble/Matchers/AllPass.swift; sourceTree = ""; }; + 436FD53B1F1C37D3650BE5FE2C882A5E /* LassoRegression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LassoRegression.swift; sourceTree = ""; }; 440AC79C4CAC00E64494654CCFEB3615 /* Pods-MLKit_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MLKit_Tests.release.xcconfig"; sourceTree = ""; }; 445AD67BD05424A184443D2B95D450E1 /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/Nimble/Expression.swift; sourceTree = ""; }; 460AA53800E69CBD26BBD78537857F1E /* NMBObjCMatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBObjCMatcher.swift; path = Sources/Nimble/Adapters/NMBObjCMatcher.swift; sourceTree = ""; }; 46306D0BBA1452AFEA95521C31EF74FD /* BeGreaterThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThan.swift; path = Sources/Nimble/Matchers/BeGreaterThan.swift; sourceTree = ""; }; + 477B34BD1FFA8820D6EF220B0BC0118F /* DataManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataManager.swift; sourceTree = ""; }; 494C0F635D5836E872EF3C5A39E97D40 /* QuadraticType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuadraticType.swift; path = Source/2D/QuadraticType.swift; sourceTree = ""; }; 4A6452D2CC7C17DD01ECD91742AF746F /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Quick/DSL/DSL.swift; sourceTree = ""; }; 4A7F3D729C82E75AB35940B80EDE5960 /* NMBStringify.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBStringify.h; path = Sources/NimbleObjectiveC/NMBStringify.h; sourceTree = ""; }; + 4C397B78C2E0CE51B2767D2AF1CD9817 /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; + 4F8B6CE41AAC2E1823ECFFB4021CC6E2 /* NeuralNetwork.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NeuralNetwork.swift; sourceTree = ""; }; 50F4D75F4A1D2B2E24633488475931A3 /* CwlCatchException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlCatchException.h; path = Sources/Lib/CwlPreconditionTesting/CwlCatchException/CwlCatchException/CwlCatchException.h; sourceTree = ""; }; 538A45E8224CD67C4262A9B8B8F1F37D /* NMBStringify.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBStringify.m; path = Sources/NimbleObjectiveC/NMBStringify.m; sourceTree = ""; }; 5480FBA1F6D203291F193F6D19878DBA /* Upsurge-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Upsurge-umbrella.h"; sourceTree = ""; }; @@ -297,18 +287,13 @@ 564EE9F32DE4725529A52326B19EA90F /* ThrowAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowAssertion.swift; path = Sources/Nimble/Matchers/ThrowAssertion.swift; sourceTree = ""; }; 56C0D020BB9A8FA4BD0F26AC76A2E14A /* DSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSL.m; path = Sources/NimbleObjectiveC/DSL.m; sourceTree = ""; }; 57189BBB8E0A886933E15F0E294E2908 /* Pods_MLKit_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_MLKit_Tests.framework; path = "Pods-MLKit_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 5719043BEEEAC9B415BF36B8C14EC486 /* InputLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = InputLayer.swift; sourceTree = ""; }; 5CEECA1264E2048F119396D446D14C91 /* mach_excServer.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mach_excServer.c; path = Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/mach_excServer.c; sourceTree = ""; }; - 5E4FFF51329BC9B1183F468ED0D3F0B4 /* BackPropagation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BackPropagation.swift; sourceTree = ""; }; 5ECF49E5836E9754AAF942842CE1B960 /* MachineLearningKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MachineLearningKit-umbrella.h"; sourceTree = ""; }; 6030DF38EBDBF336FFAE0120EEA4D959 /* SourceLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceLocation.swift; path = Sources/Nimble/Utils/SourceLocation.swift; sourceTree = ""; }; 60979E4BD68DB0DE4501D0BCC7234D91 /* NMBExpectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBExpectation.swift; path = Sources/Nimble/Adapters/NMBExpectation.swift; sourceTree = ""; }; 617F2E0CEEF4C400A8D6EADD86F6145C /* Quick.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Quick.xcconfig; sourceTree = ""; }; - 622324B170D9D4EAB905996D74DBC373 /* CSVReader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CSVReader.swift; sourceTree = ""; }; 632231BFC26E16C229D32687B917D3A0 /* Trigonometric.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Trigonometric.swift; path = Source/Operations/Trigonometric.swift; sourceTree = ""; }; 636673BDA1F06E469643F565D84270B5 /* Pods-MLKit_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MLKit_Example.debug.xcconfig"; sourceTree = ""; }; - 6399E2F1241CE723D578C761B9315C2B /* PolynomialRegression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PolynomialRegression.swift; sourceTree = ""; }; - 6445F60FE57F75586E5913E05E92441A /* Perceptron.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Perceptron.swift; sourceTree = ""; }; 64BEBE3A1D4FF0196925EEA64015469B /* World.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = World.h; path = Sources/QuickObjectiveC/World.h; sourceTree = ""; }; 674822B4E356741B78B38B007C88BB9C /* MatrixSlice.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatrixSlice.swift; path = Source/2D/MatrixSlice.swift; sourceTree = ""; }; 67BD782939C66E9C3619A77243519BF6 /* QuickSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpec.m; path = Sources/QuickObjectiveC/QuickSpec.m; sourceTree = ""; }; @@ -317,21 +302,19 @@ 6E5F3C7C7DEC67A40AB30E806AC7D1E2 /* Pods-MLKit_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MLKit_Example-acknowledgements.markdown"; sourceTree = ""; }; 6F7958F9886E618114345F800A8E55FF /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Sources/Nimble/DSL+Wait.swift"; sourceTree = ""; }; 711A9AC0701A2E08E65DD82429B871BA /* ExampleGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleGroup.swift; path = Sources/Quick/ExampleGroup.swift; sourceTree = ""; }; + 7264F4D0435F000E2684EB1DAACEBDD1 /* CSVReader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CSVReader.swift; sourceTree = ""; }; 761E70C09096AF7E9F07C0940571D8E8 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 76A2C52BB2BC141539B6A02006AE6422 /* Value.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Value.swift; path = Source/Types/Value.swift; sourceTree = ""; }; 7738AD08C39FE55EBEED43F72217AD23 /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Sources/Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; 79862A111E88CCA41E254825B0A2B523 /* NSString+C99ExtendedIdentifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSString+C99ExtendedIdentifier.swift"; path = "Sources/Quick/NSString+C99ExtendedIdentifier.swift"; sourceTree = ""; }; - 79CCB2C7966BFB9D5D2C995C71C41E7D /* DataManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataManager.swift; sourceTree = ""; }; - 7C898338DFE7E67CC7FBEFB93655AD02 /* LayerProtocol.swift .swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "LayerProtocol.swift .swift"; sourceTree = ""; }; + 7A45BA6EC001C35D2D0B9BFE6072BD59 /* Population.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Population.swift; sourceTree = ""; }; 7CCCA0D5F8BB724A0B342E39C887F56C /* Match.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Match.swift; path = Sources/Nimble/Matchers/Match.swift; sourceTree = ""; }; - 83D8C7F72D654D31C25D4CC5703B897C /* Neuron.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Neuron.swift; sourceTree = ""; }; 851E4FB881FC4ED5D39D0CBCB7DAA845 /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Sources/Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; 8696FA5715205A2FE823260539588590 /* FFT.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FFT.swift; path = Source/DSP/FFT.swift; sourceTree = ""; }; 895545B440ABA73C074838125D4DDCD5 /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Quick/Filter.swift; sourceTree = ""; }; 8AAD299764DE8C9B43BA8AFF5C36053F /* ValueArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValueArray.swift; path = Source/1D/ValueArray.swift; sourceTree = ""; }; 8AB15E15A6C417380F4BDE4F104E73FA /* LinearType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinearType.swift; path = Source/1D/LinearType.swift; sourceTree = ""; }; 8B964EBE2CDB51FDD20A12FCFCB2CA92 /* Quick.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Quick.h; path = Sources/QuickObjectiveC/Quick.h; sourceTree = ""; }; - 8BC505A053298F63159996DE683D55D5 /* LassoRegression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LassoRegression.swift; sourceTree = ""; }; 8D5D6E6E6D3B6CCBD5B8D01D78A6C3A1 /* MachineLearningKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MachineLearningKit.framework; path = MachineLearningKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8E2478F9C2B8F6A4FD3E290EB66D2967 /* NimbleEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleEnvironment.swift; path = Sources/Nimble/Adapters/NimbleEnvironment.swift; sourceTree = ""; }; 8F643B28D12D7235D05A86D94E704075 /* CwlDarwinDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlDarwinDefinitions.swift; path = Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/CwlDarwinDefinitions.swift; sourceTree = ""; }; @@ -340,27 +323,28 @@ 922D9654CE04819948A343CA3B1429F3 /* CwlCatchException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlCatchException.m; path = Sources/Lib/CwlPreconditionTesting/CwlCatchException/CwlCatchException/CwlCatchException.m; sourceTree = ""; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 93BD78CE597862CCAAF3A214DF9A8D46 /* Interval.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Interval.swift; path = Source/Types/Interval.swift; sourceTree = ""; }; + 93DE7AC6CBCC1E15E3EC4491A5B45D7C /* KMeans.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KMeans.swift; sourceTree = ""; }; 94F560C6B000B2C3D6E49CCFD3562B68 /* MachineLearningKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MachineLearningKit-prefix.pch"; sourceTree = ""; }; 95FD3F8CEA2A60510B93CE50FFDAEC43 /* Contain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contain.swift; path = Sources/Nimble/Matchers/Contain.swift; sourceTree = ""; }; - 9616AB853B1C0D8D1727DBD8386E37FD /* KMeans.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KMeans.swift; sourceTree = ""; }; 9624E19BE6F7377A79FB879764B1B1DE /* Closures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Closures.swift; path = Sources/Quick/Hooks/Closures.swift; sourceTree = ""; }; + 97CC96CA68BA0815524C996D3FD7D4C8 /* ActivationFunctionType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ActivationFunctionType.swift; sourceTree = ""; }; 985F35A8C7BB37C0852C7E45F32619DA /* BeCloseTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeCloseTo.swift; path = Sources/Nimble/Matchers/BeCloseTo.swift; sourceTree = ""; }; 98C52913DD43FF732C4CB0156035175F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 99460984C73229E22633921A1D4DD6DF /* Population.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Population.swift; sourceTree = ""; }; 9951688C60A46DD572589F5DACF0C4A5 /* Pods-MLKit_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-MLKit_Example-umbrella.h"; sourceTree = ""; }; 99A3B4EC6DA19FEADCCDCA96CA327574 /* Span.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Span.swift; path = Source/ND/Span.swift; sourceTree = ""; }; 9AEF9A30B4EAA4E623AC004398637120 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/MapKit.framework; sourceTree = DEVELOPER_DIR; }; + 9B8C04FE82A09C3FC32594EBFC743E53 /* PolynomialRegression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PolynomialRegression.swift; sourceTree = ""; }; 9C13EEF6CE7B8665E06332AD77882466 /* 2DTensorSlice.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = 2DTensorSlice.swift; path = Source/2D/2DTensorSlice.swift; sourceTree = ""; }; 9C6B6A08749A762D9174E03E4409BD8E /* Pods-MLKit_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MLKit_Example-frameworks.sh"; sourceTree = ""; }; 9D128A10EA2E300A21235B91F63A2AA3 /* QuickSpecBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpecBase.h; path = Sources/QuickSpecBase/include/QuickSpecBase.h; sourceTree = ""; }; 9D3A07F4F6A05CA6A00CF85FDA94AB57 /* Pods-MLKit_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MLKit_Tests-dummy.m"; sourceTree = ""; }; 9E0EB0151B5DDBCEC7706C08CB3F6D0A /* ComplexArithmetic.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ComplexArithmetic.swift; path = Source/Complex/ComplexArithmetic.swift; sourceTree = ""; }; + 9E6576B5347A8A01F10941469B1EA3EB /* MachineLeanringErrorEnum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MachineLeanringErrorEnum.swift; sourceTree = ""; }; 9F2FFA2871232A17F74D97604A516636 /* AssertionDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionDispatcher.swift; path = Sources/Nimble/Adapters/AssertionDispatcher.swift; sourceTree = ""; }; A6F138A9EBF54B5A06DCE9CD171D6071 /* Pods-MLKit_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-MLKit_Tests-umbrella.h"; sourceTree = ""; }; A7A7DD8570BF793B588ADA5EE940E963 /* Pods-MLKit_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MLKit_Tests-acknowledgements.plist"; sourceTree = ""; }; A7EC0E4FEBE039947272C3B4A867BE43 /* NimbleXCTestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleXCTestHandler.swift; path = Sources/Nimble/Adapters/NimbleXCTestHandler.swift; sourceTree = ""; }; A8255BF758512319BCEC8A9465100F12 /* BeNil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeNil.swift; path = Sources/Nimble/Matchers/BeNil.swift; sourceTree = ""; }; - A870F309CAC0CCB342388D4554562C3E /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; A9C1D721B2C6C17E12FA8322E6E16682 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/Nimble/Utils/Errors.swift; sourceTree = ""; }; ABF3645F0FF96B3623FC6818DA9B5E03 /* Pods-MLKit_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MLKit_Tests-frameworks.sh"; sourceTree = ""; }; AD94BC820DCB168006B7673EF857A635 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -373,12 +357,11 @@ BA9401876190B7BA1B70B7A9752180D5 /* CurrentTestCaseTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CurrentTestCaseTracker.h; path = Sources/NimbleObjectiveC/CurrentTestCaseTracker.h; sourceTree = ""; }; BC1FE7307C927E1E6A92842F57E0C7C9 /* Nimble.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Nimble.framework; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; BE29DF31652B34FA490E23487B83FBEE /* QuickSelectedTestSuiteBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickSelectedTestSuiteBuilder.swift; path = Sources/Quick/QuickSelectedTestSuiteBuilder.swift; sourceTree = ""; }; - BF522F03C4D4A099193666B4BCCC3EC1 /* SimpleLinearRegression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SimpleLinearRegression.swift; sourceTree = ""; }; C00D1260FC691D4C91B5C7B0C1E51CED /* Exponential.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponential.swift; path = Source/Operations/Exponential.swift; sourceTree = ""; }; C0CED4BACCDE5B346DA1AF62EB6AF781 /* MatcherFunc.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherFunc.swift; path = Sources/Nimble/Matchers/MatcherFunc.swift; sourceTree = ""; }; C17505640C9782BB9C72471DFBF96025 /* Nimble-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-prefix.pch"; sourceTree = ""; }; + C22F81E5621CF7F9199426C6B30396E0 /* Layer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Layer.swift; sourceTree = ""; }; C3523CB10A94DA7970870A6190C1CB1C /* Quick-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-umbrella.h"; sourceTree = ""; }; - C3646C0A4E9265CF59C37A69AAC866CD /* ActivationFunctionEnum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ActivationFunctionEnum.swift; sourceTree = ""; }; C77F9745A1AEE0419DE285232F7A4B46 /* BeGreaterThanOrEqualTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThanOrEqualTo.swift; path = Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift; sourceTree = ""; }; C7E15AEC4FF3B6933962B82D62626FC0 /* Pods-MLKit_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-MLKit_Tests.modulemap"; sourceTree = ""; }; CA483EF72520B01CF4A81ED38901CC64 /* AssertionRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionRecorder.swift; path = Sources/Nimble/Adapters/AssertionRecorder.swift; sourceTree = ""; }; @@ -397,6 +380,7 @@ D1601B2905CD07F5813DA81623EDCA6C /* AsyncMatcherWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AsyncMatcherWrapper.swift; path = Sources/Nimble/Matchers/AsyncMatcherWrapper.swift; sourceTree = ""; }; D17AF65B06ED8A966DDAA320DDAE3508 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; D1849FDC7F164FD02BFDF72640C9F951 /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Sources/Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; + D227D633B0111C5DC188D1C75FBC2BB6 /* MLKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MLKit.h; sourceTree = ""; }; D24FCB1F18D8CD9497E67BE1BC119854 /* Arithmetic.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Arithmetic.swift; path = Source/Operations/Arithmetic.swift; sourceTree = ""; }; D88E93CB6BC77FCE57F53E52EA5D23E8 /* CwlCatchBadInstruction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlCatchBadInstruction.m; path = Sources/Lib/CwlPreconditionTesting/CwlPreconditionTesting/CwlCatchBadInstruction.m; sourceTree = ""; }; D90BB83409612B6B1623CBC644ACC3FE /* NMBExceptionCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBExceptionCapture.m; path = Sources/NimbleObjectiveC/NMBExceptionCapture.m; sourceTree = ""; }; @@ -406,8 +390,8 @@ DBD0EB0CE3764BD0D10DF460F60B14F7 /* Nimble-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nimble-dummy.m"; sourceTree = ""; }; DCBBD5A13ECC31F538E7CFD189D0DC70 /* SatisfyAnyOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAnyOf.swift; path = Sources/Nimble/Matchers/SatisfyAnyOf.swift; sourceTree = ""; }; DD78B0C12B597C5AADB88DE894863255 /* Pods-MLKit_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MLKit_Example-acknowledgements.plist"; sourceTree = ""; }; + DEA09D70E089028B813F7E3B421C5F78 /* InputDataType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = InputDataType.swift; sourceTree = ""; }; E0117B79C919D9B561E2A88CF83B7969 /* ThrowError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowError.swift; path = Sources/Nimble/Matchers/ThrowError.swift; sourceTree = ""; }; - E051C80B62918A5D9DD916E1A32300F3 /* HiddenLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = HiddenLayer.swift; sourceTree = ""; }; E173D8DBF9F7B3031B549B2E0D20C12A /* BeLessThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThan.swift; path = Sources/Nimble/Matchers/BeLessThan.swift; sourceTree = ""; }; E2D5869169BD2131A228B383AB451505 /* Functional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Functional.swift; path = Sources/Nimble/Utils/Functional.swift; sourceTree = ""; }; E3118F695CEE1A70F01A9E795A35D87A /* QCKDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QCKDSL.m; path = Sources/QuickObjectiveC/DSL/QCKDSL.m; sourceTree = ""; }; @@ -424,23 +408,19 @@ ED533B83CC472C5A00FECB4769AAC30A /* Nimble.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.xcconfig; sourceTree = ""; }; EDA0AC86CACECCE2595819A08D31B2BE /* Upsurge.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Upsurge.modulemap; sourceTree = ""; }; EDC143C76D629D8D454DC5D8AA30F893 /* ComplexArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ComplexArray.swift; path = Source/Complex/ComplexArray.swift; sourceTree = ""; }; - EF70CC1117A6FB08201FDDB1CB266D6C /* OutputLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OutputLayer.swift; sourceTree = ""; }; F4AA2FCE20C3F50B7669DC36BD5B9FD0 /* World+DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "World+DSL.h"; path = "Sources/QuickObjectiveC/DSL/World+DSL.h"; sourceTree = ""; }; - F51B8F4F59EB42C9058BF2564443D938 /* MLKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MLKit.h; sourceTree = ""; }; F6C176A86FD62B15FEA0A36C68FCEBF8 /* PostNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PostNotification.swift; path = Sources/Nimble/Matchers/PostNotification.swift; sourceTree = ""; }; FCF0CD880E6B5A4F29D38A6CE05AAFA8 /* PointerUtilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PointerUtilities.swift; path = Source/Operations/PointerUtilities.swift; sourceTree = ""; }; FD3593FEB98ECA8845615527BF4C07B6 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 4F10CF42FE20DB256F32763F17FDD2C4 /* Frameworks */ = { + 4FA44FA5690174F265A6D6C6A7652A7B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F57892BB17FE9B8F881FE5A68F8AC570 /* Foundation.framework in Frameworks */, - B5636367653C58A6B20949A578317BE8 /* MapKit.framework in Frameworks */, - 69C1BB1111675D1B539F5AEFBB93DBFC /* UIKit.framework in Frameworks */, - D45F4BA5D809FEEACBB4A752920EAEA0 /* Upsurge.framework in Frameworks */, + B24A0A8140995A495C05A9D6209847CA /* Accelerate.framework in Frameworks */, + 76C86B1AE6D2B6BED9ABBA270B6EC2F5 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -468,21 +448,23 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - CCA7D24C7671E6A5BD6D672CBBD866BF /* Frameworks */ = { + E4DCA3407A8C0FB721EDC1348B32DECF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3E251C0CAF785371595D98B9C979B779 /* Accelerate.framework in Frameworks */, - FDC2EA4BB18793AED748BC5A8733EC1B /* Foundation.framework in Frameworks */, + 4D5C0E52B4D1231A2E3057B4A048D1C5 /* Foundation.framework in Frameworks */, + 2211BD314546EEC0AB7B56FC3A45B4E5 /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - E4DCA3407A8C0FB721EDC1348B32DECF /* Frameworks */ = { + F66E990DDCA2AB92E5BE088582FF8849 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4D5C0E52B4D1231A2E3057B4A048D1C5 /* Foundation.framework in Frameworks */, - 2211BD314546EEC0AB7B56FC3A45B4E5 /* XCTest.framework in Frameworks */, + F5F8D1CB9DDF071F399D675E73649244 /* Foundation.framework in Frameworks */, + 71CD456EE3712FFF55CB7BF70ED20647 /* MapKit.framework in Frameworks */, + E1DC6CA2B4B8D7E6F175D02BE729E637 /* UIKit.framework in Frameworks */, + 327749EF14CAE658519971A5FDD0AB95 /* Upsurge.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -539,28 +521,22 @@ path = Quick; sourceTree = ""; }; - 0FAC186B2BBCC917ADED844EA3DE4733 /* ANN */ = { + 1778580F4F8EE091B81F359F5D5D5FBA /* Targets Support Files */ = { isa = PBXGroup; children = ( - E051C80B62918A5D9DD916E1A32300F3 /* HiddenLayer.swift */, - 5719043BEEEAC9B415BF36B8C14EC486 /* InputLayer.swift */, - 7C898338DFE7E67CC7FBEFB93655AD02 /* LayerProtocol.swift .swift */, - 0CD9908844E6289F25B33B76D661F910 /* NeuralNet.swift */, - 83D8C7F72D654D31C25D4CC5703B897C /* Neuron.swift */, - EF70CC1117A6FB08201FDDB1CB266D6C /* OutputLayer.swift */, - 7BC6C79B1F72DD4201BFC7AA7976D463 /* Learning */, + C33BE72AAA8A6B3C0353F4762B4B7270 /* Pods-MLKit_Example */, + F0131D05BEC2BD586052E0ECAF5DD440 /* Pods-MLKit_Tests */, ); - name = ANN; - path = ANN; + name = "Targets Support Files"; sourceTree = ""; }; - 1778580F4F8EE091B81F359F5D5D5FBA /* Targets Support Files */ = { + 1D9290CBB8F9FDE0A430DD2D913AC93B /* K Means Clustering */ = { isa = PBXGroup; children = ( - C33BE72AAA8A6B3C0353F4762B4B7270 /* Pods-MLKit_Example */, - F0131D05BEC2BD586052E0ECAF5DD440 /* Pods-MLKit_Tests */, + 93DE7AC6CBCC1E15E3EC4491A5B45D7C /* KMeans.swift */, ); - name = "Targets Support Files"; + name = "K Means Clustering"; + path = "K Means Clustering"; sourceTree = ""; }; 3E25486F8A00548F48F062EE3E3C5DA6 /* Upsurge */ = { @@ -601,50 +577,30 @@ path = Upsurge; sourceTree = ""; }; - 5396A5A0F7CB17F1311F3AD68DF3E24C /* Helper Classes & Extensions */ = { + 4AE7C6F0FD3648726140001A937F65A4 /* Classes */ = { isa = PBXGroup; children = ( - 79CCB2C7966BFB9D5D2C995C71C41E7D /* DataManager.swift */, - A870F309CAC0CCB342388D4554562C3E /* Extensions.swift */, - 02FE8673FE625152ED12629116F0948C /* MachineLeanringErrorEnum.swift */, + 7264F4D0435F000E2684EB1DAACEBDD1 /* CSVReader.swift */, + D227D633B0111C5DC188D1C75FBC2BB6 /* MLKit.h */, + EB5A14FBFFD7D19B1C8F35011074CE5C /* ANN */, + A150A522CB01D506F45AAD0F0D18E638 /* Genetic Algorithms */, + 68F4F244E826EF084EF6419CB442D871 /* Helper Classes & Extensions */, + 1D9290CBB8F9FDE0A430DD2D913AC93B /* K Means Clustering */, + AE798DB5CB6B3DFD4A133D9CC0382AE8 /* Regression */, ); - name = "Helper Classes & Extensions"; - path = "Helper Classes & Extensions"; - sourceTree = ""; - }; - 557129D73717A6409C1F258F7958BB15 /* Genetic Algorithms */ = { - isa = PBXGroup; - children = ( - 37EB00DB3008F53F0434B5613FBC4C53 /* BiologicalProcessManager.swift */, - 0B3B25CE2099F033BEE06C3BAD98E751 /* Genome.swift */, - 99460984C73229E22633921A1D4DD6DF /* Population.swift */, - ); - name = "Genetic Algorithms"; - path = "Genetic Algorithms"; + name = Classes; + path = Classes; sourceTree = ""; }; - 58BDD1AD33524DD8AC978BD0AF0F9511 /* K Means Clustering */ = { + 68F4F244E826EF084EF6419CB442D871 /* Helper Classes & Extensions */ = { isa = PBXGroup; children = ( - 9616AB853B1C0D8D1727DBD8386E37FD /* KMeans.swift */, + 477B34BD1FFA8820D6EF220B0BC0118F /* DataManager.swift */, + 4C397B78C2E0CE51B2767D2AF1CD9817 /* Extensions.swift */, + 9E6576B5347A8A01F10941469B1EA3EB /* MachineLeanringErrorEnum.swift */, ); - name = "K Means Clustering"; - path = "K Means Clustering"; - sourceTree = ""; - }; - 7BC6C79B1F72DD4201BFC7AA7976D463 /* Learning */ = { - isa = PBXGroup; - children = ( - C3646C0A4E9265CF59C37A69AAC866CD /* ActivationFunctionEnum.swift */, - 28230F7A0883AEAAC5AA0A1F5A9D4D52 /* Adaline.swift */, - 5E4FFF51329BC9B1183F468ED0D3F0B4 /* BackPropagation.swift */, - 1D28E4FD8BC290EE2DF8062B79E858E6 /* NNOperations.swift */, - 6445F60FE57F75586E5913E05E92441A /* Perceptron.swift */, - 3E0557ADBBA3D7B968ACB54715F8C5B4 /* Training.swift */, - 12366F5A28306734A313F3975B44D367 /* TrainingTypes.swift */, - ); - name = Learning; - path = Learning; + name = "Helper Classes & Extensions"; + path = "Helper Classes & Extensions"; sourceTree = ""; }; 7DB346D0F39D3F0E887471402A8071AB = { @@ -686,19 +642,15 @@ name = Products; sourceTree = ""; }; - 98A87DF51942B76D70730EFEA3FA5BA8 /* Classes */ = { + A150A522CB01D506F45AAD0F0D18E638 /* Genetic Algorithms */ = { isa = PBXGroup; children = ( - 622324B170D9D4EAB905996D74DBC373 /* CSVReader.swift */, - F51B8F4F59EB42C9058BF2564443D938 /* MLKit.h */, - 0FAC186B2BBCC917ADED844EA3DE4733 /* ANN */, - 557129D73717A6409C1F258F7958BB15 /* Genetic Algorithms */, - 5396A5A0F7CB17F1311F3AD68DF3E24C /* Helper Classes & Extensions */, - 58BDD1AD33524DD8AC978BD0AF0F9511 /* K Means Clustering */, - FE5411DC421921CF04845DC88628E15D /* Regression */, + 224B74EEB01665D46840260470EA4991 /* BiologicalProcessManager.swift */, + 1DAB4E6A2EB3A9C3629C2062F345461A /* Genome.swift */, + 7A45BA6EC001C35D2D0B9BFE6072BD59 /* Population.swift */, ); - name = Classes; - path = Classes; + name = "Genetic Algorithms"; + path = "Genetic Algorithms"; sourceTree = ""; }; A819A510A47562E3C92C1A44685374D7 /* Support Files */ = { @@ -801,6 +753,18 @@ path = Nimble; sourceTree = ""; }; + AE798DB5CB6B3DFD4A133D9CC0382AE8 /* Regression */ = { + isa = PBXGroup; + children = ( + 436FD53B1F1C37D3650BE5FE2C882A5E /* LassoRegression.swift */, + 9B8C04FE82A09C3FC32594EBFC743E53 /* PolynomialRegression.swift */, + 09DB8A700464608EEC997EB8F70F5A97 /* RidgeRegression.swift */, + 33447FAB1F2844FCF376B75EB97C4666 /* SimpleLinearRegression.swift */, + ); + name = Regression; + path = Regression; + sourceTree = ""; + }; BC003FE70FEB7D13ABECA4112A71C975 /* Support Files */ = { isa = PBXGroup; children = ( @@ -855,6 +819,18 @@ path = "Example/Pods/Target Support Files/MachineLearningKit"; sourceTree = ""; }; + EB5A14FBFFD7D19B1C8F35011074CE5C /* ANN */ = { + isa = PBXGroup; + children = ( + 97CC96CA68BA0815524C996D3FD7D4C8 /* ActivationFunctionType.swift */, + DEA09D70E089028B813F7E3B421C5F78 /* InputDataType.swift */, + C22F81E5621CF7F9199426C6B30396E0 /* Layer.swift */, + 4F8B6CE41AAC2E1823ECFFB4021CC6E2 /* NeuralNetwork.swift */, + ); + name = ANN; + path = ANN; + sourceTree = ""; + }; EC0EE2C9C961DB08307B5DAA831499AD /* Pods */ = { isa = PBXGroup; children = ( @@ -886,7 +862,7 @@ F551375ACF695895BAD2B86463E2BE0F /* MLKit */ = { isa = PBXGroup; children = ( - 98A87DF51942B76D70730EFEA3FA5BA8 /* Classes */, + 4AE7C6F0FD3648726140001A937F65A4 /* Classes */, ); name = MLKit; path = MLKit; @@ -901,18 +877,6 @@ name = Frameworks; sourceTree = ""; }; - FE5411DC421921CF04845DC88628E15D /* Regression */ = { - isa = PBXGroup; - children = ( - 8BC505A053298F63159996DE683D55D5 /* LassoRegression.swift */, - 6399E2F1241CE723D578C761B9315C2B /* PolynomialRegression.swift */, - 3A12C0E3001A5D20FD8C98EFFB3BD207 /* RidgeRegression.swift */, - BF522F03C4D4A099193666B4BCCC3EC1 /* SimpleLinearRegression.swift */, - ); - name = Regression; - path = Regression; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -940,6 +904,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7C5B32BF357C66C1587EAF79DA4844AF /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 51CE8C2AEBC657C98FFC03B61E97B412 /* Upsurge-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 87CDD88C8BC6FB4A0E318A7AF6364EBF /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -948,11 +920,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A02690805FFC86FABC68BE322D60F937 /* Headers */ = { + A1CA5F639B850916A375701104ECB0BE /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - CE5A08D84128D55187606154E5DBE72D /* Upsurge-umbrella.h in Headers */, + DA5FD83FA962C78A2484186465AB5AF2 /* MachineLearningKit-umbrella.h in Headers */, + 06701D0572D99FF3577E0C4F3E308FE8 /* MLKit.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -971,36 +944,9 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - FEE9DF2A1FC74B9265C92EDC71E5E9CE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - D0049FF0F7A1B7D2432ABEE038CD8890 /* MachineLearningKit-umbrella.h in Headers */, - DD7A6967DEAAD49511CEC78355678DEB /* MLKit.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 06F752565FCB49AD90CB87375583D386 /* MachineLearningKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7E14DF7161D7AC2E03A6C5D5BC3000A8 /* Build configuration list for PBXNativeTarget "MachineLearningKit" */; - buildPhases = ( - 575D586C3224738A308FC09796FE568A /* Sources */, - 4F10CF42FE20DB256F32763F17FDD2C4 /* Frameworks */, - FEE9DF2A1FC74B9265C92EDC71E5E9CE /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - 1297287740E4E2E4A8AAD766EA8F48E1 /* PBXTargetDependency */, - ); - name = MachineLearningKit; - productName = MachineLearningKit; - productReference = 8D5D6E6E6D3B6CCBD5B8D01D78A6C3A1 /* MachineLearningKit.framework */; - productType = "com.apple.product-type.framework"; - }; 0921CC2F4398BE9A4F1CEACB30684B56 /* Nimble */ = { isa = PBXNativeTarget; buildConfigurationList = 761C67FF258DB3BE6B2D4612FA9938E8 /* Build configuration list for PBXNativeTarget "Nimble" */; @@ -1037,6 +983,24 @@ productReference = CA785AB3A9A0B1FEB1F8D8297A1DEB72 /* Pods_MLKit_Example.framework */; productType = "com.apple.product-type.framework"; }; + 28C1C0C2E20677EBC9884E8E60383F6C /* MachineLearningKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1E2225DCCFCA6849974B71B670645A6C /* Build configuration list for PBXNativeTarget "MachineLearningKit" */; + buildPhases = ( + 601A39245B6A4430792A69ED3568C841 /* Sources */, + F66E990DDCA2AB92E5BE088582FF8849 /* Frameworks */, + A1CA5F639B850916A375701104ECB0BE /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 90DA5471E0E3538891588E48A4CB29A6 /* PBXTargetDependency */, + ); + name = MachineLearningKit; + productName = MachineLearningKit; + productReference = 8D5D6E6E6D3B6CCBD5B8D01D78A6C3A1 /* MachineLearningKit.framework */; + productType = "com.apple.product-type.framework"; + }; 405857F01F82B80417D1BCAA762E7FA5 /* Quick */ = { isa = PBXNativeTarget; buildConfigurationList = 4521CA563498BBBB8638765DDF2E0D43 /* Build configuration list for PBXNativeTarget "Quick" */; @@ -1054,13 +1018,13 @@ productReference = 1CA1E0D7EDD11FD11C55B7AC425EA02C /* Quick.framework */; productType = "com.apple.product-type.framework"; }; - 70BB1F6A80CA78DFE505284EA681F599 /* Upsurge */ = { + 6C57B4D688C9D6216427DD10ADDFFCB6 /* Upsurge */ = { isa = PBXNativeTarget; - buildConfigurationList = D20421B6D90855E2B6632EAC0B4EB005 /* Build configuration list for PBXNativeTarget "Upsurge" */; + buildConfigurationList = 1689072BD2C522D2F716D50D402AEC59 /* Build configuration list for PBXNativeTarget "Upsurge" */; buildPhases = ( - 2833DC2016283C8B12885A21C1E388C9 /* Sources */, - CCA7D24C7671E6A5BD6D672CBBD866BF /* Frameworks */, - A02690805FFC86FABC68BE322D60F937 /* Headers */, + C589758AE8B90E8A34CC11BE88742800 /* Sources */, + 4FA44FA5690174F265A6D6C6A7652A7B /* Frameworks */, + 7C5B32BF357C66C1587EAF79DA4844AF /* Headers */, ); buildRules = ( ); @@ -1111,54 +1075,17 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 06F752565FCB49AD90CB87375583D386 /* MachineLearningKit */, + 28C1C0C2E20677EBC9884E8E60383F6C /* MachineLearningKit */, 0921CC2F4398BE9A4F1CEACB30684B56 /* Nimble */, 11214F2158317CCF8497B1AFC05251A3 /* Pods-MLKit_Example */, 9E9C8675948A927700EE9576202C417B /* Pods-MLKit_Tests */, 405857F01F82B80417D1BCAA762E7FA5 /* Quick */, - 70BB1F6A80CA78DFE505284EA681F599 /* Upsurge */, + 6C57B4D688C9D6216427DD10ADDFFCB6 /* Upsurge */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 2833DC2016283C8B12885A21C1E388C9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D58BCC6313D5B78B6C472083CC1C3AF /* 2DTensorSlice.swift in Sources */, - B6EC13F8CB68644BD9886B003BA6900C /* Arithmetic.swift in Sources */, - 3EB611413EE2B54837635CD65F132345 /* Auxiliary.swift in Sources */, - 113D7CE0F56C36EE7FFCF7D149176F21 /* Complex.swift in Sources */, - 8F266CC6E5329563DE8F148FC7778031 /* ComplexArithmetic.swift in Sources */, - 49631670996180783DC00EFBEB27EDE3 /* ComplexArray.swift in Sources */, - FF64B428843AFD81F27CC49A77D6681F /* ComplexArrayRealSlice.swift in Sources */, - F3C489E93A5243B9F2B9ECE3E3D93E79 /* ComplexArraySlice.swift in Sources */, - A862525C8F30461FB35C4B376D79FA0A /* DSP.swift in Sources */, - A36E8372A09415B4A225F5B43326FAF0 /* Exponential.swift in Sources */, - E9D624FE0FBEB13A17DF3CA43D94E8A9 /* FFT.swift in Sources */, - AFF43EFF1ABD5F90CBFEC2A5D25AD493 /* Hyperbolic.swift in Sources */, - 79D372BBA24A59BCE017C0390739789B /* Interval.swift in Sources */, - F0ACEB7555972E46624C3EA9E293DB37 /* LinearOperators.swift in Sources */, - 89BE38D68258AD1FFAB150CCCBD6DFFE /* LinearType.swift in Sources */, - A203C28DC0FFC459DE139E78BE09D6B4 /* Matrix.swift in Sources */, - 6AB5FC036C7A26396422EA5900334AA1 /* MatrixArithmetic.swift in Sources */, - 9B10C0FDE7497E14ECCD735C0D13ECBC /* MatrixSlice.swift in Sources */, - 9020836B53D4F2C01DD75407A318EE10 /* PointerUtilities.swift in Sources */, - 56E55355678E5D3CCC6C92F54D612C44 /* QuadraticType.swift in Sources */, - 8BD1AC3E151D5A7653D9FEE455391C6B /* Real.swift in Sources */, - 6929FE4B0377E0E4B63D4B9A9DAAE87A /* Span.swift in Sources */, - C1ABF05D2FD3C1F0B0490ED0B6B6F671 /* Tensor.swift in Sources */, - B2D133C0F3916FDDC17633D0277761CB /* TensorSlice.swift in Sources */, - 4F771B1F858E7FF60B5272E77A228731 /* TensorType.swift in Sources */, - 3EA6167592B6FD24072F54B90ACC290B /* Trigonometric.swift in Sources */, - 89842671BEE6483B22D5D8440D46CBE2 /* Upsurge-dummy.m in Sources */, - 8116B4216C2E5C01734627A64608B311 /* Value.swift in Sources */, - C662107FA334CFCC9035311B62C12197 /* ValueArray.swift in Sources */, - 962A1AAA808E92DC65244AFE9501295C /* ValueArraySlice.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 41E146CA370726574B1C3087CF111D13 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1224,36 +1151,27 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 575D586C3224738A308FC09796FE568A /* Sources */ = { + 601A39245B6A4430792A69ED3568C841 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 7944F27F56E31EC0ACE39BBC5C2504D8 /* ActivationFunctionEnum.swift in Sources */, - 50C5B91FE25D361A85C0DDD1B4AFCA97 /* Adaline.swift in Sources */, - D65D3D915B692F53F29BF10FBFDDC8EC /* BackPropagation.swift in Sources */, - 76DE9965F967C929E23496C9190552D7 /* BiologicalProcessManager.swift in Sources */, - 931A3BED40D559A81F5167CFAB56D3A5 /* CSVReader.swift in Sources */, - F1C3DA1C185CA6C61174BC255E9372F6 /* DataManager.swift in Sources */, - FFB35D2F31B5E9604B9972940367F2E7 /* Extensions.swift in Sources */, - 9E89BAB7963E6327D38AA493C3FD856A /* Genome.swift in Sources */, - E6C8F28209B49A37CDAA186AB95009D4 /* HiddenLayer.swift in Sources */, - B756FD631E2AF33F50050C7EB10069C7 /* InputLayer.swift in Sources */, - 70121880DD090476FF2D85A257F7644C /* KMeans.swift in Sources */, - A7A65DD22FFF2848B69FD57F86215716 /* LassoRegression.swift in Sources */, - FAA38D3E44157CD9C0512A4FCD6C5A27 /* LayerProtocol.swift .swift in Sources */, - 7E6E10C02DFF79354646133DD3F7A335 /* MachineLeanringErrorEnum.swift in Sources */, - E2B4416F12F2754E0897FA3EA5A0177B /* MachineLearningKit-dummy.m in Sources */, - 19910A844C4F2E529D19AB307FFBCAC7 /* NeuralNet.swift in Sources */, - 26A3DFBD9271C5F76EC35201D1048E5F /* Neuron.swift in Sources */, - 96637FC87F06B7CA2F9613AA7986D4F2 /* NNOperations.swift in Sources */, - CFDD8E224B4E973A73E00FCE0BC51D19 /* OutputLayer.swift in Sources */, - 1D766EE454F206D5D9AE2163784CF6FC /* Perceptron.swift in Sources */, - 4E0A8331641CB0F7306B9FF7AA98E011 /* PolynomialRegression.swift in Sources */, - BA62865F4E3212AE75CD8EF9150B32F0 /* Population.swift in Sources */, - 88F99B90B78BE003CCD3CF0720219D3B /* RidgeRegression.swift in Sources */, - 7BA253257934CFE972B3B93DA0E54A13 /* SimpleLinearRegression.swift in Sources */, - D0E61450A2042ACA5849C5F62720BF88 /* Training.swift in Sources */, - 8B28F52707F686189C4FF86336BED8E1 /* TrainingTypes.swift in Sources */, + 2DB201D5AC1FCE6C27412155BACDF7F6 /* ActivationFunctionType.swift in Sources */, + 8B633AB7CA7CD7773A1C426781C08948 /* BiologicalProcessManager.swift in Sources */, + 694FFDD18CDDC9EC5B5F52779DEC4133 /* CSVReader.swift in Sources */, + ABE2A268050AA3DEFDF8D945B9930866 /* DataManager.swift in Sources */, + AC3D1B5A37FB49CFDCC4C671C79B020F /* Extensions.swift in Sources */, + F4BD351BF32EA4E81E2971E225914D1E /* Genome.swift in Sources */, + B4590BB72005AC96211E469104D92DB5 /* InputDataType.swift in Sources */, + 5FB36CC3D65A05755802D9EC66B0AEDC /* KMeans.swift in Sources */, + 92EDDC00A5D940D4F7361AEE6644BD30 /* LassoRegression.swift in Sources */, + 48D3AEB90C6F865FB5128840EF13CAC8 /* Layer.swift in Sources */, + 04ADA7ED88E0D419D4DA1DB9DA1A2FF1 /* MachineLeanringErrorEnum.swift in Sources */, + 6B8EEA47C6BE87E17FD2F93747E2A4C5 /* MachineLearningKit-dummy.m in Sources */, + AE7464C0BFB56E8B11B0670A68B9CF12 /* NeuralNetwork.swift in Sources */, + 5B18BC28616DDC2DDE3442B98F00CF09 /* PolynomialRegression.swift in Sources */, + C7D1BAD68F1C67EA9AAE23534D3E9665 /* Population.swift in Sources */, + 6E55E227D9195A39F978F2DC1C408636 /* RidgeRegression.swift in Sources */, + 9FFFDDC2816EEAA4F74BE9FCF9681670 /* SimpleLinearRegression.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1273,6 +1191,43 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C589758AE8B90E8A34CC11BE88742800 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F2BC02366DABC762E62F506B6D1AC2 /* 2DTensorSlice.swift in Sources */, + 17B85BEE3D018EB0AF42539D1658D24E /* Arithmetic.swift in Sources */, + 2991245B488F3F00EDCFD3EFB2244294 /* Auxiliary.swift in Sources */, + 249AC8A0B6CC8D4D92DA5D841D712900 /* Complex.swift in Sources */, + 6F74F8072E2C42E51624D0B89AB03048 /* ComplexArithmetic.swift in Sources */, + 7E08966D0A420CCE741F608370F4759C /* ComplexArray.swift in Sources */, + 7E950AE4BC7D603625CBFD877F63728C /* ComplexArrayRealSlice.swift in Sources */, + 86D13DA212D4F8A87E212941DF61361D /* ComplexArraySlice.swift in Sources */, + 78726014CB6610CA87B10E02D148478A /* DSP.swift in Sources */, + 519349F9AF137FFAD28A594685046460 /* Exponential.swift in Sources */, + DFA04175FF8EB3DFFA5FFEEF93996E7C /* FFT.swift in Sources */, + 178FA5CACF9ACD91FBBEB0DF8892201F /* Hyperbolic.swift in Sources */, + B1A6D9047AE13EF484B5F58F215440A1 /* Interval.swift in Sources */, + 50471C0EFA0C6F13833F63066765DCFF /* LinearOperators.swift in Sources */, + 3E456278E0D7B190269739DA08693C9E /* LinearType.swift in Sources */, + 153AA07F19B6F56DE6BB54E6D7BBF1E5 /* Matrix.swift in Sources */, + 438262E9AEBC5203D56677E842F563D5 /* MatrixArithmetic.swift in Sources */, + 7900A1BADFEB30B7D803D0869E548E10 /* MatrixSlice.swift in Sources */, + FCB81A907C61E1883C282A0271C05D7E /* PointerUtilities.swift in Sources */, + A711AA562D0AD3092BAF83E2CFCC86A7 /* QuadraticType.swift in Sources */, + 643B6917C3157C68C92A7260459DC694 /* Real.swift in Sources */, + 2B132F4EB4A9D60A8439EFAC1D0D6D2C /* Span.swift in Sources */, + 7F5D5AFA3C84AA582DEDC6A6C78E7533 /* Tensor.swift in Sources */, + D234F610A6025A894A8CF8971A8F96C0 /* TensorSlice.swift in Sources */, + 562D9F54656827753A037634D5385BFD /* TensorType.swift in Sources */, + CC420602CB84B73545CD09A3DAD3F638 /* Trigonometric.swift in Sources */, + 3E699E314F200C3EEF7C7E0D46E26B79 /* Upsurge-dummy.m in Sources */, + A8F199FA1C0D1AD05EADD8EFBC00592B /* Value.swift in Sources */, + BCA0250C524C4316B3D4D6415A4969C8 /* ValueArray.swift in Sources */, + 3C8CBA02B15729E98A0F63382FE6217B /* ValueArraySlice.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; DAACD664EAA3ACAA0A0B897994FBF48E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1311,19 +1266,19 @@ 069A4C55879441523E4B72005CCC8503 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MachineLearningKit; - target = 06F752565FCB49AD90CB87375583D386 /* MachineLearningKit */; + target = 28C1C0C2E20677EBC9884E8E60383F6C /* MachineLearningKit */; targetProxy = 9438A9C923DBE3D0619348D344A7421F /* PBXContainerItemProxy */; }; - 1297287740E4E2E4A8AAD766EA8F48E1 /* PBXTargetDependency */ = { + 90DA5471E0E3538891588E48A4CB29A6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Upsurge; - target = 70BB1F6A80CA78DFE505284EA681F599 /* Upsurge */; - targetProxy = 6BDA6707772E5F0BE159E38E1B3639CC /* PBXContainerItemProxy */; + target = 6C57B4D688C9D6216427DD10ADDFFCB6 /* Upsurge */; + targetProxy = C595E3A155D1433C52691795FEC29880 /* PBXContainerItemProxy */; }; 9AD6E463D2F2FC8D280D047E0BE45F3F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Upsurge; - target = 70BB1F6A80CA78DFE505284EA681F599 /* Upsurge */; + target = 6C57B4D688C9D6216427DD10ADDFFCB6 /* Upsurge */; targetProxy = 0514A879DA60A69D36EBAE4BF82733F3 /* PBXContainerItemProxy */; }; F4E22DFEB546DDB30C129288CE1D0702 /* PBXTargetDependency */ = { @@ -1377,9 +1332,9 @@ }; name = Release; }; - 3AE4BFD193087F0DEDCBBAB5132B0402 /* Release */ = { + 1F57ADE7C56706080006997E6C275DB3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 617F2E0CEEF4C400A8D6EADD86F6145C /* Quick.xcconfig */; + baseConfigurationReference = 55F8E5E39CFFED8C8B0162606918FB20 /* MachineLearningKit.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1392,14 +1347,14 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Quick/Quick-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Quick/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/MachineLearningKit/MachineLearningKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/MachineLearningKit/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Quick/Quick.modulemap"; + MODULEMAP_FILE = "Target Support Files/MachineLearningKit/MachineLearningKit.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Quick; + PRODUCT_NAME = MachineLearningKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_VERSION = 3.0; @@ -1409,42 +1364,9 @@ }; name = Release; }; - 42FA06A2123A2997BE01016930D42268 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D9452A9050B54245FBAA633769A8E911 /* Upsurge.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Upsurge/Upsurge-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Upsurge/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Upsurge/Upsurge.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Upsurge; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 5809B570D332FEB1E205B5C9B27EE6CC /* Release */ = { + 3AE4BFD193087F0DEDCBBAB5132B0402 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D9452A9050B54245FBAA633769A8E911 /* Upsurge.xcconfig */; + baseConfigurationReference = 617F2E0CEEF4C400A8D6EADD86F6145C /* Quick.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1457,14 +1379,14 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Upsurge/Upsurge-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Upsurge/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Quick/Quick-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Quick/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Upsurge/Upsurge.modulemap"; + MODULEMAP_FILE = "Target Support Files/Quick/Quick.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Upsurge; + PRODUCT_NAME = Quick; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_VERSION = 3.0; @@ -1554,9 +1476,9 @@ }; name = Debug; }; - 7517CE46153100DA1635AF3CA5C55694 /* Debug */ = { + 6E0EE5E4D9587D32D46FAB6E0C629563 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 32AA223B57196F7790D905F38D2517BF /* Pods-MLKit_Tests.debug.xcconfig */; + baseConfigurationReference = 55F8E5E39CFFED8C8B0162606918FB20 /* MachineLearningKit.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1569,18 +1491,14 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-MLKit_Tests/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/MachineLearningKit/MachineLearningKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/MachineLearningKit/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-MLKit_Tests/Pods-MLKit_Tests.modulemap"; + MODULEMAP_FILE = "Target Support Files/MachineLearningKit/MachineLearningKit.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_MLKit_Tests; + PRODUCT_NAME = MachineLearningKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -1591,9 +1509,9 @@ }; name = Debug; }; - 9BE117501B83DA19687D6FADCC4279F2 /* Debug */ = { + 7517CE46153100DA1635AF3CA5C55694 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ED533B83CC472C5A00FECB4769AAC30A /* Nimble.xcconfig */; + baseConfigurationReference = 32AA223B57196F7790D905F38D2517BF /* Pods-MLKit_Tests.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1606,14 +1524,18 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Nimble/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-MLKit_Tests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-MLKit_Tests/Pods-MLKit_Tests.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Nimble; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_MLKit_Tests; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -1624,9 +1546,9 @@ }; name = Debug; }; - A21B7770CD1C66519EA9E8CC1473B9FA /* Debug */ = { + 9BE117501B83DA19687D6FADCC4279F2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 55F8E5E39CFFED8C8B0162606918FB20 /* MachineLearningKit.xcconfig */; + baseConfigurationReference = ED533B83CC472C5A00FECB4769AAC30A /* Nimble.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1639,14 +1561,14 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/MachineLearningKit/MachineLearningKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/MachineLearningKit/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Nimble/Nimble-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Nimble/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/MachineLearningKit/MachineLearningKit.modulemap"; + MODULEMAP_FILE = "Target Support Files/Nimble/Nimble.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = MachineLearningKit; + PRODUCT_NAME = Nimble; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -1657,38 +1579,6 @@ }; name = Debug; }; - AFE7BACA23BC68581C92BBE53C00D2F7 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 55F8E5E39CFFED8C8B0162606918FB20 /* MachineLearningKit.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/MachineLearningKit/MachineLearningKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/MachineLearningKit/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/MachineLearningKit/MachineLearningKit.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = MachineLearningKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; B18A6CA3C5F89421CF2B850F71721DF9 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 636673BDA1F06E469643F565D84270B5 /* Pods-MLKit_Example.debug.xcconfig */; @@ -1766,6 +1656,71 @@ }; name = Release; }; + B8A27CEE87BBFB37CB5E8AB07A8D2FCA /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D9452A9050B54245FBAA633769A8E911 /* Upsurge.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/Upsurge/Upsurge-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Upsurge/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Upsurge/Upsurge.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = Upsurge; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + BB15404BBBD24D84297323F3F2DF19DB /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D9452A9050B54245FBAA633769A8E911 /* Upsurge.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/Upsurge/Upsurge-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Upsurge/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Upsurge/Upsurge.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = Upsurge; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; DA47FD752D5D7A33A663F9B51F4B3C69 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 617F2E0CEEF4C400A8D6EADD86F6145C /* Quick.xcconfig */; @@ -1834,6 +1789,24 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 1689072BD2C522D2F716D50D402AEC59 /* Build configuration list for PBXNativeTarget "Upsurge" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B8A27CEE87BBFB37CB5E8AB07A8D2FCA /* Debug */, + BB15404BBBD24D84297323F3F2DF19DB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1E2225DCCFCA6849974B71B670645A6C /* Build configuration list for PBXNativeTarget "MachineLearningKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6E0EE5E4D9587D32D46FAB6E0C629563 /* Debug */, + 1F57ADE7C56706080006997E6C275DB3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1861,15 +1834,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 7E14DF7161D7AC2E03A6C5D5BC3000A8 /* Build configuration list for PBXNativeTarget "MachineLearningKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A21B7770CD1C66519EA9E8CC1473B9FA /* Debug */, - AFE7BACA23BC68581C92BBE53C00D2F7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 82174FC6C6E04470F8797B33ACE22503 /* Build configuration list for PBXNativeTarget "Pods-MLKit_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1888,15 +1852,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D20421B6D90855E2B6632EAC0B4EB005 /* Build configuration list for PBXNativeTarget "Upsurge" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 42FA06A2123A2997BE01016930D42268 /* Debug */, - 5809B570D332FEB1E205B5C9B27EE6CC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; diff --git a/Example/Pods/Target Support Files/MachineLearningKit/Info.plist b/Example/Pods/Target Support Files/MachineLearningKit/Info.plist index c970b74..d79d927 100644 --- a/Example/Pods/Target Support Files/MachineLearningKit/Info.plist +++ b/Example/Pods/Target Support Files/MachineLearningKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.1.6 + 0.1.7 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/Pods-MLKit_Example/Pods-MLKit_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-MLKit_Example/Pods-MLKit_Example.debug.xcconfig index 6cd6677..cfd5698 100644 --- a/Example/Pods/Target Support Files/Pods-MLKit_Example/Pods-MLKit_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-MLKit_Example/Pods-MLKit_Example.debug.xcconfig @@ -7,5 +7,4 @@ OTHER_LDFLAGS = $(inherited) -framework "MachineLearningKit" -framework "Upsurge OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-MLKit_Example/Pods-MLKit_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-MLKit_Example/Pods-MLKit_Example.release.xcconfig index 6cd6677..cfd5698 100644 --- a/Example/Pods/Target Support Files/Pods-MLKit_Example/Pods-MLKit_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-MLKit_Example/Pods-MLKit_Example.release.xcconfig @@ -7,5 +7,4 @@ OTHER_LDFLAGS = $(inherited) -framework "MachineLearningKit" -framework "Upsurge OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-MLKit_Tests/Pods-MLKit_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-MLKit_Tests/Pods-MLKit_Tests.debug.xcconfig index 243759a..01156eb 100644 --- a/Example/Pods/Target Support Files/Pods-MLKit_Tests/Pods-MLKit_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-MLKit_Tests/Pods-MLKit_Tests.debug.xcconfig @@ -7,5 +7,4 @@ OTHER_LDFLAGS = $(inherited) -framework "Nimble" -framework "Quick" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-MLKit_Tests/Pods-MLKit_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-MLKit_Tests/Pods-MLKit_Tests.release.xcconfig index 243759a..01156eb 100644 --- a/Example/Pods/Target Support Files/Pods-MLKit_Tests/Pods-MLKit_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-MLKit_Tests/Pods-MLKit_Tests.release.xcconfig @@ -7,5 +7,4 @@ OTHER_LDFLAGS = $(inherited) -framework "Nimble" -framework "Quick" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Tests/NeuralNetworkSpec.swift b/Example/Tests/NeuralNetworkSpec.swift index 1f95e75..93de1c0 100644 --- a/Example/Tests/NeuralNetworkSpec.swift +++ b/Example/Tests/NeuralNetworkSpec.swift @@ -16,174 +16,10 @@ class NeuralNetworkSpec: QuickSpec { override func spec() { - it("Should be able to run a simple XOR example using a single layer Perceptron architecture.") { + it("Should be able to run a simple AND example. ") { - print("\n") - print("XOR perceptron TEST \n") - - let net = NeuralNet(numberOfInputNeurons: 2, hiddenLayers: [], numberOfOutputNeurons: 1) - net.printNet() - - net.trainingSet = Matrix(rows: 4, columns: 3, elements: [1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0]) - - net.targetOutputSet = ValueArray([0.0, 0.0, 0.0, 1.0]) - - net.maxEpochs = 10 - - net.targetError = 0.002 - - net.learningRate = 1.0 - - net.trainingType = TrainingType.perceptron - - net.activationFuncType = ActivationFunctionType.step - - let trainedNet = try! net.trainNet() - - trainedNet.printNet() - - trainedNet.printTrainedNet(network: trainedNet) - - var actualOutput: [Float] = [] - - for val in trainedNet.targetOutputSet { - actualOutput.append(val) - } - - expect(trainedNet.estimatedOutputAsArray).to(equal(actualOutput)) - - } - - it("Should be able to run a simple example using a single layer Adaline architecture.") { - - let net = NeuralNet(numberOfInputNeurons: 3, hiddenLayers: [], numberOfOutputNeurons: 1) - - net.printNet() - - net.trainingSet = Matrix(rows: 7, columns: 4, elements: [1.0, 0.98, 0.94, 0.95, 1.0, 0.60, 0.60, 0.85, 1.0, 0.35, 0.15, 0.15, 1.0, 0.25, 0.30, 0.98, 1.0, 0.75, 0.85, 0.91, 1.0, 0.43, 0.57, 0.87, 1.0, 0.05, 0.06, 0.01]) - - net.targetOutputSet = ValueArray([0.80, 0.59, 0.23, 0.45, 0.74, 0.63, 0.10]) - - net.maxEpochs = 10 - - net.targetError = 0.0001 - - net.learningRate = 0.5 - - net.trainingType = TrainingType.adaline - - net.activationFuncType = ActivationFunctionType.linear - - let trainedNet = try! net.trainNet() - - trainedNet.printNet() - - trainedNet.printTrainedNet(network: trainedNet) - - var actualOutput: [Double] = [] - - for val in trainedNet.targetOutputSet { - actualOutput.append(Double(val)) - - } - - var estimatedOutputAsDouble: [Double] = [] - - for val in trainedNet.estimatedOutputAsArray { - estimatedOutputAsDouble.append(Double(val)) - } - - expect(estimatedOutputAsDouble).to(beCloseTo(actualOutput as [Double], within:1.0)) - } - - it("Should be able to run a simple example using a BackPropagation architecture.") { - - let net = NeuralNet.init(numberOfInputNeurons: 2, hiddenLayers: [3], numberOfOutputNeurons: 2) - - print("---------------------backpropagation INIT---------------------") - - net.printNet() - - net.trainingSet = Matrix(rows: 10, columns: 3, elements: [1.0, 1.0, 0.73, - 1.0, 1.0, 0.81, - 1.0, 1.0, 0.86, - 1.0, 1.0, 0.95, - 1.0, 0.0, 0.45, - 1.0, 1.0, 0.70, - 1.0, 0.0, 0.51, - 1.0, 1.0, 0.89, - 1.0, 1.0, 0.79, - 1.0, 0.0, 0.54]) - - net.targetOutputMatrix = Matrix(rows: 10, columns: 2, elements: [1.0, 0.0, - 1.0, 0.0, - 1.0, 0.0, - 1.0, 0.0, - 1.0, 0.0, - 0.0, 1.0, - 0.0, 1.0, - 0.0, 1.0, - 0.0, 1.0, - 0.0, 1.0]) - - net.maxEpochs = 1000 - - net.targetError = 0.002 - - net.learningRate = 0.1 - - net.trainingType = .backpropagation - - net.activationFuncType = ActivationFunctionType.siglog - - net.activationFuncTypeOfOutputLayer = .linear - - let trainedNet = try! net.trainNet() - - trainedNet.printNet() - - trainedNet.printTrainedNet(network: trainedNet) - - } - - it("Should be able to run a simple XOR example using a single layer Perceptron architecture with multiple hidden layers.") { - - print("\n") - print("XOR perceptron TEST multiple hidden layers \n") - - let net = NeuralNet(numberOfInputNeurons: 2, hiddenLayers: [2, 2], numberOfOutputNeurons: 1) - net.printNet() - - net.trainingSet = Matrix(rows: 4, columns: 3, elements: [1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0]) - - net.targetOutputSet = ValueArray([0.0, 0.0, 0.0, 1.0]) - - net.maxEpochs = 10 - - net.targetError = 0.002 - - net.learningRate = 1.0 - - net.trainingType = TrainingType.perceptron - - net.activationFuncType = ActivationFunctionType.step - - let trainedNet = try! net.trainNet() - - trainedNet.printNet() - - trainedNet.printTrainedNet(network: trainedNet) - - var actualOutput: [Float] = [] - - for val in trainedNet.targetOutputSet { - actualOutput.append(val) - } - - expect(trainedNet.estimatedOutputAsArray).to(equal(actualOutput)) } } - } diff --git a/MLKit-PlayGround.playground/Contents.swift b/MLKit-PlayGround.playground/Contents.swift index a449900..ff8403c 100644 --- a/MLKit-PlayGround.playground/Contents.swift +++ b/MLKit-PlayGround.playground/Contents.swift @@ -2,13 +2,356 @@ import UIKit import Upsurge +import MachineLearningKit +/* Already implemented in MachineLearningKit +extension Collection { + /// Return a copy of `self` with its elements shuffled + func shuffle() -> [Iterator.Element] { + var list = Array(self) + list.shuffle() + return list + } +} + +extension MutableCollection where Indices.Iterator.Element == Index { + /// Shuffles the contents of this collection. + mutating func shuffle() { + let c = count + guard c> 1 else { return } + + for (firstUnshuffled, unshuffledCount) in zip(indices, stride(from: c, to: 1, by: -1)) { + let d: IndexDistance = numericCast(arc4random_uniform(numericCast(unshuffledCount))) + guard d != 0 else { continue } + let i = index(firstUnshuffled, offsetBy: d) + swap(&self[firstUnshuffled], &self[i]) + } + } +} + + +struct InputDataType { + + var data: [(input: [Float], target:[Float])] + + var lengthOfTrainingData: Int { + get { + return data.count + } + } +} + + +class Layer { + + + var layerSize: (rows: Int, columns: Int)? + + public var bias: Matrix? + + public var weights: Matrix? + + public var input: Matrix? + + public var zValues: Matrix? + + public var activationValues: Matrix? + + public var Δw: Matrix? + + public var Δb: Matrix? + + public var activationFnc: Bool = false + + + init(size: (rows: Int, columns: Int)){ + + self.layerSize = size + + self.bias = generateRandomBiases() + + self.weights = generateRandomWeights() + + self.Δb = Matrix([Array(repeating: 0.0, count: (self.bias?.elements.count)!)]) + + self.Δw = Matrix([Array(repeating: 0.0, count: (self.weights?.elements.count)!)]) + } + + public func fncStep(val: Float) -> Float { + return val>= 0 ? 1.0 : 0.0 + } + + + func forward(activation:Matrix) -> Matrix { + + var a = activation + + self.input = activation + + a = (self.weights! * a) + + a = Matrix(rows: a.rows, columns: a.columns, elements: a.elements + self.bias!.elements) + + self.zValues = a + + if activationFnc == true { + a = Matrix(rows: a.rows, columns: a.columns, elements: a.elements.map(fncStep)) + }else{ + a = Matrix(rows: a.rows, columns: a.columns, elements: a.elements.map(fncSigLog)) + } + + + self.activationValues = a + + + return a + } + + + func produceOuputError(cost: Matrix) -> Matrix { + + var z = self.zValues + + z = Matrix(rows: (z?.rows)!, columns: (z?.columns)!, elements:ValueArray(z!.elements.map(derivativeOfSigLog))) + + var sigmaPrime = z + + var Δ = cost * sigmaPrime! + + return Δ + } + + + func propagateError(previousLayerDelta: Matrix, nextLayer: Layer) -> Matrix { + + // Compute the current layers δ value. + var nextLayerWeightTranspose = transpose(nextLayer.weights!) + + var deltaMultipliedBywT = nextLayerWeightTranspose * previousLayerDelta + + var sigmaPrime = Matrix(rows: (self.zValues?.rows)!, columns: (self.zValues?.columns)!, elements: ValueArray(self.zValues!.elements.map(derivativeOfSigLog))) + + var currentLayerDelta = Matrix(rows: deltaMultipliedBywT.rows, columns: deltaMultipliedBywT.columns, elements: ValueArray(deltaMultipliedBywT.elements * sigmaPrime.elements)) + + // Update the current layers weights + var inputTranspose = transpose(self.input!) + + var updatedWeights = currentLayerDelta * inputTranspose + + self.Δw = updatedWeights + + // Update the current layers bias + self.Δb = currentLayerDelta + + return currentLayerDelta + } + + + func updateWeights(miniBatchSize: Int, eta: Float){ + + var learningRate = eta/Float(miniBatchSize) + + var changeInWeights = learningRate * self.Δw! + + var changedBiases = learningRate * self.Δb! + + self.weights = self.weights! - changeInWeights -// Feed Forward Implementation + self.bias = self.bias! - changedBiases + } + + // TODO: Make private method + func generateRandomBiases() -> Matrix { + + var biasValues: [Float] = [] + + for i in 0..(rows: (layerSize?.columns)!, columns: 1, elements: ValueArray(biasValues)) + } + + func generateRandomWeights() -> Matrix{ + var weightValues: [Float] = [] + + for i in 0..<(layersize!.rows * layerSize!.columns) { + var weightValue = generateRandomNumber() + + weightValues.append(weightValue) + } + + + return Matrix(rows: layerSize!.columns, columns: layerSize!.rows, elements: ValueArray(weightValues)) + } + + /** + The generateRandomNumber generates a random number (normal distribution using Box-Muller tranform). + + - returns: A random number (normal distribution). + */ + func generateRandomNumber() -> Float{ + let u = Float(arc4random()) / Float(UINT32_MAX) + let v = Float(arc4random()) / Float(UINT32_MAX) + let randomNum = sqrt( -2 * log(u) ) * cos( Float(2) * Float(M_PI) * v ) + + return randomNum + } + + public func fncSigLog(val: Float) -> Float { + return 1.0 / (1.0 + exp(-val)) + } + + public func derivativeOfSigLog(val: Float) -> Float { + return fncSigLog(val: val) * (1.0 - fncSigLog(val: val)) + } + +} + + + + + + + + +// Feed Forward Implementation class NeuralNetwork { - private var numberOfLayers = 2 - + public var layers: [Layer] = [] + public var numberOfLayers: Int? + public var networkSize: (inputLayerSize:Int, outputLayerSize:Int)? + + init(size:(Int, Int)){ + + self.networkSize = size + + } + + func addLayer(layer: Layer){ + + self.layers.append(layer) + } + + public func feedforward(input:Matrix) -> Matrix { + + var a = input + + for l in layers { + a = l.forward(activation: a) + } + + return a + } + + + public func SGD(trainingData: InputDataType, epochs: Int, miniBatchSize: Int, eta: Float, testData: InputDataType? = nil){ + + for i in 0..(rows: batch.input.count, columns: 1, elements: batch.input) + var outputMatrix = Matrix(rows: batch.target.count, columns: 1, elements: batch.target) + + self.backpropagate(input: inputMatrix, target: outputMatrix) + } + + for layer in layers { + + layer.updateWeights(miniBatchSize: miniBatch.lengthOfTrainingData, eta: eta) + + } + + } + + public func backpropagate(input: Matrix, target: Matrix){ + + // Feedforward + let feedForwardOutput = feedforward(input: input) + + // Output Error + let outputError = Matrix(rows: feedForwardOutput.rows, columns: feedForwardOutput.columns, elements: feedForwardOutput.elements - target.elements) + + // Output Layer Delta + var delta = layers.last?.produceOuputError(cost: outputError) + + // Set the change in weights and bias for the last layer + self.layers.last?.Δb = delta + + var activationValuesforTheSecondToLastLayer = layers[layers.count-2].activationValues + + self.layers.last?.Δw = delta! * transpose(activationValuesforTheSecondToLastLayer!) + + // Propogate error through each layer (except last) + for i in (0..(rows: 2, columns: 1, elements: [2.0,10.0]) +var trainingData = InputDataType( data: [ ([0.0,0.0], [0.0]), ([1.0,1.0],[1.0]) ] ) +print(nn.weights?[0]) +print("\n") +print(Layer(size: (2,3)).generateRandomWeights()) +*/ + + + +/* +var bias = nn.bias +var weights = nn.weights +var a = Matrix(rows: 2, columns: 1, elements: [1.0,1.0]) + +var b = weights![0] * a +var c = (b + bias![0]) +c.elements.map(nn.fncSigLog) + +//print(c) + + var d = weights![1] * c + var e = (d + bias![1]) + e.elements.map(nn.fncSigLog) + + print(e) + +*/ + +/* +var nn = NeuralNetwork(size: (2,1)) +nn.addLayer(layer: Layer(size: (2,3))) +nn.addLayer(layer: Layer(size: (3,1))) +var trainingData = InputDataType(data: [ ([0.0, 0.0], [0.0]), ([1.0, 1.0], [1.0]), ([1.0, 0.0], [0.0]), ([0.0, 1.0], [0.0])]) +var input1 = Matrix(rows: 2, columns: 1, elements: [0.0,0.0]) +var input2 = Matrix(rows: 2, columns: 1, elements: [0.0,1.0]) +var input3 = Matrix(rows: 2, columns: 1, elements: [1.0,0.0]) +var input4 = Matrix(rows: 2, columns: 1, elements: [1.0,1.0]) +nn.layers[0].activationFnc = false +nn.layers[1].activationFnc = true +nn.SGD(trainingData: trainingData, epochs: 200, miniBatchSize: 3, eta: 0.5) +print(nn.feedforward(input: input1)) +print(nn.feedforward(input: input2)) +print(nn.feedforward(input: input3)) +print(nn.feedforward(input: input4)) +*/ + +*/ diff --git a/MLKit-PlayGround.playground/timeline.xctimeline b/MLKit-PlayGround.playground/timeline.xctimeline new file mode 100644 index 0000000..cb15561 --- /dev/null +++ b/MLKit-PlayGround.playground/timeline.xctimeline @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/MLKit/Classes/ANN/ActivationFunctionType.swift b/MLKit/Classes/ANN/ActivationFunctionType.swift new file mode 100644 index 0000000..2921005 --- /dev/null +++ b/MLKit/Classes/ANN/ActivationFunctionType.swift @@ -0,0 +1,154 @@ +// +// ActivationFunctionType.swift +// Pods +// +// Created by Guled on 4/7/17. +// +// + +import Foundation + +/// Enum for determining the appropriate activation function for a Layer object. +public enum ActivationFunctionType { + + case step /// Step Activation Function + case linear /// Linear Activation Function + case siglog /// SigLog Activation Function + case hypertan /// HypterTan Activation Function + case softsign /// SoftSign Activation Function + case sinusoid /// Sinusoid Activation Function + case gaussian /// Sinusoid Activation Function + case ReLU /// ReLU Activation Function + case LeakyReLU /// Leaky ReLU Activation Function + + /** + The activate method returns an activation function. + + - returns: A method that takes in a Float as a parameter and returns a Float. + */ + func activate() -> (_:Float) -> Float { + switch self { + case .step: + return fncStep + case .linear: + return fncLinear + case .siglog: + return fncSigLog + case .hypertan: + return fncHyperTan + case .softsign: + return fncSoftSign + case .sinusoid: + return fncSinusoid + case .gaussian: + return fncGuassian + + default: + return error + } + } + + /** + The activate method returns the derivative of the activation function a Layer object is using. + Note that a Layer object is instantiated with an ActivationFunctionType. This method simply observes the + ActivationFunctionType that the layer is using and returns the derivative for that layers particular ActivationFunctionType. + + - returns: A method that taeks in a Float as a parameter and returns a Float. + */ + func derivative() -> (_:Float) -> Float { + switch self { + case .linear: + return derivativeOfLinear + case .siglog: + return derivativeOfSigLog + case .hypertan: + return derivativeOfHyperTan + case .softsign: + return derivativeOfSoftSign + case .sinusoid: + return derivativeOfSinusoid + case .gaussian: + return derivativeOfGaussian + + default: + return error + } + } + + + // MARK: ACTIVATION FUNCTIONS + private func fncStep(val: Float) -> Float { + return val>= 0 ? 1.0 : 0.0 + } + + private func fncLinear(val: Float) -> Float { + return val + } + + private func fncSigLog(val: Float) -> Float { + return 1.0 / (1.0 + exp(-val)) + } + + private func fncHyperTan(val: Float) -> Float { + return tanh(val) + } + + private func fncSoftSign(val: Float) -> Float { + return val / 1 + abs(val) + } + + private func fncSinusoid(val: Float) -> Float { + return sin(val) + } + + private func fncGuassian(val: Float) -> Float { + return exp(powf((-val), 2)) + } + + private func fncReLU(val: Float) -> Float { + return max(0, val) + } + + private func fncLeakyReLU(val: Float) -> Float { + return max(0.01*val, val) + } + + // MARK: Derivatives + private func derivativeOfLinear(val: Float) -> Float { + return 1.0 + } + + private func derivativeOfSigLog(val: Float) -> Float { + return fncSigLog(val: val) * (1.0 - fncSigLog(val: val)) + } + + private func derivativeOfHyperTan(val: Float) -> Float { + return (1.0 / powf(cosh(val), 2.0)) + } + + private func derivativeOfSoftSign(val: Float) -> Float { + return 1 / powf((1 + abs(val)), 2) + } + + private func derivativeOfSinusoid(val: Float) -> Float { + return cosf(val) + } + + private func derivativeOfGaussian(val: Float) -> Float { + return -2 * val * exp(powf((-val), 2)) + } + + private func derivativeOfReLU(val: Float) -> Float { + return (val < 0.0) ? 0.0 : 1.0 + } + + private func derivativeOfLeakyReLU(val: Float) -> Float { + return (val < 0.0) ? 0.01 : 1.0 + } + + /// Simply a method to satisfy the switch statements located in the activate and derivative methods. The method simply returns -1 which indicates that an error has occurred (A non-existant enum was discovered). + private func error(val: Float) -> Float { + return -1 + } + +} diff --git a/MLKit/Classes/ANN/HiddenLayer.swift b/MLKit/Classes/ANN/HiddenLayer.swift deleted file mode 100644 index 81b873a..0000000 --- a/MLKit/Classes/ANN/HiddenLayer.swift +++ /dev/null @@ -1,150 +0,0 @@ -// -// HiddenLayer.swift -// Pods -// -// Created by Guled on 2/23/17. -// -// -// Architecture of the code inspired by Fábio M. Soares and Alan M.F Souza's implementation of a Neural Network - -// in their book Neural Network Programming in Java. - -import Foundation -import Upsurge - -/// The HiddenLayer class represents the hidden layer of a NueralNet object. -public class HiddenLayer: Layer { - - fileprivate var _listOfNeurons: [Neuron]! - fileprivate var _numberOfNeuronsInLayer: Int! - - /// List of neurons associated with a particular hidden layer - public var listOfNeurons: [Neuron] { - - get { - return _listOfNeurons - } - - set { - return _listOfNeurons = newValue - } - } - - /// Number of neurons in a particular hidden layer - public var numberOfNeuronsInLayer: Int { - - get { - return _numberOfNeuronsInLayer - } - - set { - return _numberOfNeuronsInLayer = newValue + 1 // Don't forget BIAS - } - - } - - /** - The initializeLayer method initializes an HiddenLayer object by creating Neurons with random weights and then filling the listOfNeurons attribute with the correct number of Neurons specificed by the developer. - - - parameter listOfHiddenLayers: A list of HiddenLayer objects. - - parameter inputLayer: The input layer (InputLayer Object). - - paramter outputLayer: The output layer (OutputLayer Object). - - - returns: An InputLayer Object. - */ - open func initializeLayer(inputLayer: InputLayer, listOfHiddenLayers: [HiddenLayer], outputLayer: OutputLayer) -> [HiddenLayer] { - - var weightsComingIn: [Float] = [] - var weightsGoingOut: [Float] = [] - var listOfNeurons: [Neuron] = [] - - var numberOfHiddenLayers = listOfHiddenLayers.count - - for var i in 0..