예제 #1
0
	def __init__(self):
		self.vision = Images()
		self.knowledgeBase = []
예제 #2
0
 def __init__(self):
     self.vision = Images()
     self.knowledgeBase = []
예제 #3
0
class Savant():
	def __init__(self):
		self.vision = Images()
		self.knowledgeBase = []

	def loadKB(self):
		self.knowledgeBase = [x[14:] for x in glob.glob("knowledgeBase/*")]
		print "current known commands:"
		for knowledge in self.knowledgeBase:
			print knowledge.replace("_"," ")		#["train vision"] #need to load these from a file

	def learnAction(self,action):
		if raw_input("I have never done this before, should I attempt to learn it now? (y/n): ") == "y":
			actionSpecs = open("knowledgeBase/"+action.replace(" ","_"),"w")
			inputLayerUnits = input("How many input units do I need? ")
			hiddenLayerUnits = input("How many hidden units do I need? ")
			outputLayerUnits = input("How many output units do I need? ")
			actionSpecs.write(str(inputLayerUnits))
			actionSpecs.write("\n")
			actionSpecs.write(str(hiddenLayerUnits))
			actionSpecs.write("\n")
			actionSpecs.write(str(outputLayerUnits))
			actionSpecs.close()
			net = NeuralNetwork(action)
			print "making neural network..."
			net.makeNetwork(inputLayerUnits,hiddenLayerUnits,outputLayerUnits)
			print "initializing random weights..."
			net.initializeRandomWeights()
			print "generating input activations..."
			net.genInputActivations()
			try:
				print "training..."
				net.train()
			except KeyboardInterrupt:
				net.saveWeights()	
				print "weights saved"
				return
			except RuntimeError:
				print "Training failed."
				net.saveWeights()
				print "weights saved"
				return
			print "Success!"
			net.saveWeights()
			print "weights saved"
			self.knowledgeBase.append(action)
			print "testing..."
			net.test()
			return
		else:
			print "Ok, maybe later."		
			return

	def performAction(self,action):
		actionSpecs = open("knowledgeBase/"+action.replace(" ","_"),"r")
		inputLayerUnits = actionSpecs.readline()
		hiddenLayerUnits = actionSpecs.readline()
		outputLayerUnits = actionSpecs.readline()
		actionSpecs.close()
		net = NeuralNetwork(action)
		print "making neural network..."
		net.makeNetwork(int(inputLayerUnits),int(hiddenLayerUnits),int(outputLayerUnits))
		print "generating input activations..."
                net.genInputActivations()
                print "loading weights..."
		net.loadWeights("weights/"+action.replace(" ","_"))
		if raw_input("Continue training? (y/n): ") == "y":
                        try:
                                print "training..."
                                net.train()
                        except KeyboardInterrupt:
                                net.saveWeights()
                                print "weights saved"
                        except RuntimeError:
                                print "Training failed."
                                net.saveWeights()
                                print "weights saved"
                #need to do minus/plus phase here

	def trainVision(self):
		net = NeuralNetwork("vision")
		net.makeNetwork(1024,25,2)
		if raw_input("Continue Previous Training? (y/n): ") == "y":
			print "loading weights..."	
			net.loadWeights("weights/vision_2")	
		else:
			print "initializing random weights..."
			net.initializeRandomWeights()
		print "generating input activations..."
		net.genInputActivations()
		try:
			print "training..."
			net.train()
		except KeyboardInterrupt:
			net.saveWeights()	
			print "weights saved"
	
	def loadVision(self):
		#index = input("Enter image index: ")
		for index in range(len(self.vision.images["data"])-1):
			self.vision.saveImage(index)
예제 #4
0
class Savant():
    def __init__(self):
        self.vision = Images()
        self.knowledgeBase = []

    def loadKB(self):
        self.knowledgeBase = [x[14:] for x in glob.glob("knowledgeBase/*")]
        print "current known commands:"
        for knowledge in self.knowledgeBase:
            print knowledge.replace(
                "_", " ")  #["train vision"] #need to load these from a file

    def learnAction(self, action):
        if raw_input(
                "I have never done this before, should I attempt to learn it now? (y/n): "
        ) == "y":
            actionSpecs = open("knowledgeBase/" + action.replace(" ", "_"),
                               "w")
            inputLayerUnits = input("How many input units do I need? ")
            hiddenLayerUnits = input("How many hidden units do I need? ")
            outputLayerUnits = input("How many output units do I need? ")
            actionSpecs.write(str(inputLayerUnits))
            actionSpecs.write("\n")
            actionSpecs.write(str(hiddenLayerUnits))
            actionSpecs.write("\n")
            actionSpecs.write(str(outputLayerUnits))
            actionSpecs.close()
            net = NeuralNetwork(action)
            print "making neural network..."
            net.makeNetwork(inputLayerUnits, hiddenLayerUnits,
                            outputLayerUnits)
            print "initializing random weights..."
            net.initializeRandomWeights()
            print "generating input activations..."
            net.genInputActivations()
            try:
                print "training..."
                net.train()
            except KeyboardInterrupt:
                net.saveWeights()
                print "weights saved"
                return
            except RuntimeError:
                print "Training failed."
                net.saveWeights()
                print "weights saved"
                return
            print "Success!"
            net.saveWeights()
            print "weights saved"
            self.knowledgeBase.append(action)
            print "testing..."
            net.test()
            return
        else:
            print "Ok, maybe later."
            return

    def performAction(self, action):
        actionSpecs = open("knowledgeBase/" + action.replace(" ", "_"), "r")
        inputLayerUnits = actionSpecs.readline()
        hiddenLayerUnits = actionSpecs.readline()
        outputLayerUnits = actionSpecs.readline()
        actionSpecs.close()
        net = NeuralNetwork(action)
        print "making neural network..."
        net.makeNetwork(int(inputLayerUnits), int(hiddenLayerUnits),
                        int(outputLayerUnits))
        print "generating input activations..."
        net.genInputActivations()
        print "loading weights..."
        net.loadWeights("weights/" + action.replace(" ", "_"))
        if raw_input("Continue training? (y/n): ") == "y":
            try:
                print "training..."
                net.train()
            except KeyboardInterrupt:
                net.saveWeights()
                print "weights saved"
            except RuntimeError:
                print "Training failed."
                net.saveWeights()
                print "weights saved"

#need to do minus/plus phase here

    def trainVision(self):
        net = NeuralNetwork("vision")
        net.makeNetwork(1024, 25, 2)
        if raw_input("Continue Previous Training? (y/n): ") == "y":
            print "loading weights..."
            net.loadWeights("weights/vision_2")
        else:
            print "initializing random weights..."
            net.initializeRandomWeights()
        print "generating input activations..."
        net.genInputActivations()
        try:
            print "training..."
            net.train()
        except KeyboardInterrupt:
            net.saveWeights()
            print "weights saved"

    def loadVision(self):
        #index = input("Enter image index: ")
        for index in range(len(self.vision.images["data"]) - 1):
            self.vision.saveImage(index)