Example #1
0
    def choose_babbling_module(self):
        if self.model_babbling == "random":
            mode = "random"
        elif self.model_babbling == "active":
            mode = "prop"
        interests = {}
        for mid in self.modules.keys():
            interests[mid] = self.modules[mid].interest()

        if mode == 'random':
            mid = np.random.choice(interests.keys())
        elif mode == 'greedy':
            if np.random.random() < self.choice_eps:
                mid = np.random.choice(interests.keys())
            else:
                mid = max(interests, key=interests.get)
        elif mode == 'softmax':
            temperature = self.choice_eps
            w = interests.values()
            mid = self.modules.keys()[softmax_choice(w, temperature)]

        elif mode == 'prop':
            w = interests.values()
            mid = self.modules.keys()[prop_choice(w, eps=self.choice_eps)]

        self.chosen_modules.append(mid)
        return mid
Example #2
0
    def choose_babbling_module(self, mode='prop'):
        interests = {}
        for mid in self.modules.keys():
            if not ((not self.enable_hand) and mid == "mod1"):
                interests[mid] = self.modules[mid].interest()
            else:
                interests[mid] = 0.

        if mode == 'random':
            mid = np.random.choice(self.interests.keys())
        elif mode == 'greedy':
            eps = 0.2
            if np.random.random() < eps:
                mid = np.random.choice(self.interests.keys())
            else:
                mid = max(interests, key=interests.get)
        elif mode == 'softmax':
            temperature = 0.1
            w = interests.values()
            mid = self.modules.keys()[softmax_choice(w, temperature)]

        elif mode == 'prop':
            w = interests.values()
            mid = self.modules.keys()[prop_choice(w, eps=self.choice_eps)]

        self.chosen_modules.append(mid)
        return mid
    def choose_babbling_module(self, auto_create=False, progress_threshold=1e-2, mode='softmax', weight_by_level=False):
        interests = {}
        for mid in self.modules.keys():
            interests[mid] = self.modules[mid].interest()
            self.emit('interest_' + mid, [self.t, interests[mid]])
            self.emit('competence_' + mid, [self.t, self.modules[mid].competence()])
        max_progress = max(interests.values())
        
#         self.emit('babbling_module', "mod2")
#         return "mod2"
    
        #print "max_progress", max_progress
        if not auto_create or max_progress > progress_threshold:
            if mode == 'random':
                mid = np.random.choice(self.modules.keys())
            elif mode == 'greedy':
                eps = 0.1
                if np.random.random() < eps:
                    mid = np.random.choice(self.modules.keys())
                else:
                    mid = max(interests, key=interests.get)
            elif mode == 'softmax':
                temperature = 0.1
                mids = interests.keys()
                w = interests.values()
                #print "progresses", w
                #print "competences", [mod.competence() for mod in self.modules.values()]
                if weight_by_level:
                    levels = self.hierarchy.module_levels()
                    for i in range(len(mids)):
                        f = 2.0
                        w[i] = w[i] * np.power(f, max(levels.values()) - levels[mids[i]])
                #print w
                mid = mids[softmax_choice(w, temperature)]
            
            elif mode == 'prop':
                mids = interests.keys()
                w = interests.values()
                #print "progresses", w
                #print "competences", [mod.competence() for mod in self.modules.values()]
                if weight_by_level:
                    levels = self.hierarchy.module_levels()
                    for i in range(len(mids)):
                        f = 10.0
                        w[i] = w[i] * np.power(f, max(levels.values()) - levels[mids[i]])
                #print w
                mid = mids[prop_choice(w, eps=0.1)]
            
            self.chosen_modules[mid] = self.chosen_modules[mid] + 1
            #print self.chosen_modules
            self.emit('babbling_module', mid)
            return mid
        else:
            return self.create_module()
    def choose_interesting_space(self, mode='softmax'):
        s_spaces = self.config.s_spaces
        interests = {}
        for s_space in s_spaces.keys():
            if s_space == "s_h":
                interests[s_space] = self.modules["mod1"].interest()
            elif s_space == "s_t1":
                interests[s_space] = self.modules["mod2"].interest()
#             elif s_space == "s_t2":
#                 interests[s_space] = self.modules["mod3"].interest()
            elif s_space == "s_o":
                interests[s_space] = np.sum([self.modules[mid].interest() for mid in ["mod3", "mod4"]])
        
        self.emit('interests', [self.t, interests])
        
        if mode == 'random':
            s_space = np.random.choice(self.interests.keys())
        elif mode == 'greedy':
            eps = 0.2
            if np.random.random() < eps:
                s_space = np.random.choice(self.interests.keys())
            else:
                s_space = max(interests, key=interests.get)
        elif mode == 'softmax':
            temperature = 0.1
            w = interests.values()
            s_space = s_spaces.keys()[softmax_choice(w, temperature)]
        
        elif mode == 'prop':
            w = interests.values()
            s_space = s_spaces.keys()[prop_choice(w, eps=0.2)]
            if self.t % 200 == 1:
                print
                print 'iterations', self.t - 1
                print "competences", np.array([self.modules[mid].competence() for mid in self.modules.keys()])
                print "progresses", np.array([self.modules[mid].interest_model.current_progress for mid in self.modules.keys()])
                print "interests", np.array([self.modules[mid].interest() for mid in self.modules.keys()])
                print "sm db n points", [len(self.modules[mid].sensorimotor_model.model.imodel.fmodel.dataset) for mid in self.modules.keys()]
                print "im db n points", [len(self.modules[mid].interest_model.data_xc) for mid in self.modules.keys()]
                print self.chosen_modules
                print "made tool moved object", self.credit_tool_move
                print "made hand moved object", self.credit_hand_move
        
        self.chosen_spaces[s_space] = self.chosen_spaces[s_space] + 1
        return s_space
Example #5
0
    def choose_babbling_module(self):
        interests = {}
        for mid in self.modules.keys():
            interests[mid] = self.modules[mid].interest()
        if self.model_babbling == 'random':
            #mid = np.random.choice(interests.keys())
            if np.random.random() < self.arm_goal_selection:
                mid = np.random.choice(self.arm_modules)
            else:
                mid = np.random.choice(self.diva_modules)
        elif self.model_babbling == 'hand_object_sound':
            if np.random.random() < 1. / 3.:
                mid = 'mod1'
            elif np.random.random() < 1. / 2.:
                mid = np.random.choice([
                    'mod2', 'mod3', 'mod4', 'mod5', 'mod10', 'mod11', 'mod12'
                ])
            else:
                mid = np.random.choice(['mod6', 'mod13', 'mod14'])
        elif self.model_babbling == 'object_sound':
            if np.random.random() < 1. / 2.:
                mid = np.random.choice([
                    'mod1', 'mod2', 'mod3', 'mod4', 'mod5', 'mod10', 'mod11',
                    'mod12'
                ])
            else:
                mid = np.random.choice(['mod6', 'mod13', 'mod14'])
        elif self.model_babbling == 'greedy':
            if np.random.random() < self.choice_eps:
                mid = np.random.choice(interests.keys())
            else:
                mid = max(interests, key=interests.get)
        elif self.model_babbling == 'softmax':
            temperature = self.choice_eps
            w = interests.values()
            mid = self.modules.keys()[softmax_choice(w, temperature)]

        elif self.model_babbling == 'prop':
            w = interests.values()
            mid = self.modules.keys()[prop_choice(w, eps=self.choice_eps)]

        self.chosen_modules.append(int(mid[3:]))
        return mid
    def choose_babbling_module(self, auto_create=False, progress_threshold=1e-2, mode="softmax", weight_by_level=False):
        interests = {}
        for mid in self.modules.keys():
            interests[mid] = self.modules[mid].interest()
        self.emit("interests", [self.t, interests])

        if mode == "random":
            mid = np.random.choice(self.modules.keys())
        elif mode == "greedy":
            eps = 0.1
            if np.random.random() < eps:
                mid = np.random.choice(self.modules.keys())
            else:
                mid = max(interests, key=interests.get)
        elif mode == "softmax":
            temperature = 0.1
            mids = interests.keys()
            w = interests.values()
            if weight_by_level:
                levels = self.hierarchy.module_levels()
                for i in range(len(mids)):
                    f = 2.0
                    w[i] = w[i] * np.power(f, max(levels.values()) - levels[mids[i]])
            # print w
            mid = mids[softmax_choice(w, temperature)]

        elif mode == "prop":
            mids = interests.keys()
            w = interests.values()
            #             if self.t % 100 == 0:
            #                 print
            #                 print 'iteration', self.t
            #                 print "competences", np.array([self.modules[mid].competence() for mid in self.modules.keys()])
            #                 if sum(w) > 0:
            #                     print "interests", np.array(w)
            #                     print "interesting objects:", int(((w[3] + w[6]) / sum(w))*100), "%"
            #                     print "cumulated:", int((self.chosen_modules["mod4"] + self.chosen_modules["mod7"]) / float(sum(self.chosen_modules.values())) * 100), "%"
            #                 print self.chosen_modules
            # print "competences", [mod.competence() for mod in self.modules.values()]
            if weight_by_level:
                levels = self.hierarchy.module_levels()
                for i in range(len(mids)):
                    f = 10.0
                    w[i] = w[i] * np.power(f, max(levels.values()) - levels[mids[i]])
            # print w
            mid = mids[prop_choice(w, eps=0.1)]
        #             print
        #             print
        #             print self.chosen_modules
        #             print "chosen module:", mid

        elif mode == "prop-min":
            mids = interests.keys()
            w = interests.values()
            #             if self.t % 100 == 0:
            #                 print "interests", np.array(w), 'iteration', self.t, "competences", np.array([self.modules[mid].competence() for mid in self.modules.keys()]), int(((w[3] + w[4]-2*min(w)) / sum(np.array(w)-min(w)))*100), "%"
            mid = mids[prop_choice(np.array(w) - min(w), eps=0.1)]

        self.chosen_modules[mid] = self.chosen_modules[mid] + 1
        # print self.chosen_modules
        self.emit("babbling_module", mid)
        return mid
Example #7
0
    def choose_babbling_module(self,
                               auto_create=False,
                               progress_threshold=1e-2,
                               mode='softmax',
                               weight_by_level=False):
        interests = {}
        for mid in self.modules.keys():
            interests[mid] = self.modules[mid].interest()
        self.emit('interests', [self.t, interests])

        if mode == 'random':
            mid = np.random.choice(self.modules.keys())
        elif mode == 'greedy':
            eps = 0.1
            if np.random.random() < eps:
                mid = np.random.choice(self.modules.keys())
            else:
                mid = max(interests, key=interests.get)
        elif mode == 'softmax':
            temperature = 0.1
            mids = interests.keys()
            w = interests.values()
            if weight_by_level:
                levels = self.hierarchy.module_levels()
                for i in range(len(mids)):
                    f = 2.0
                    w[i] = w[i] * np.power(
                        f,
                        max(levels.values()) - levels[mids[i]])
            #print w
            mid = mids[softmax_choice(w, temperature)]

        elif mode == 'prop':
            mids = interests.keys()
            w = interests.values()
            #             if self.t % 100 == 0:
            #                 print
            #                 print 'iteration', self.t
            #                 print "competences", np.array([self.modules[mid].competence() for mid in self.modules.keys()])
            #                 if sum(w) > 0:
            #                     print "interests", np.array(w)
            #                     print "interesting objects:", int(((w[3] + w[6]) / sum(w))*100), "%"
            #                     print "cumulated:", int((self.chosen_modules["mod4"] + self.chosen_modules["mod7"]) / float(sum(self.chosen_modules.values())) * 100), "%"
            #                 print self.chosen_modules
            #print "competences", [mod.competence() for mod in self.modules.values()]
            if weight_by_level:
                levels = self.hierarchy.module_levels()
                for i in range(len(mids)):
                    f = 10.0
                    w[i] = w[i] * np.power(
                        f,
                        max(levels.values()) - levels[mids[i]])
            #print w
            mid = mids[prop_choice(w, eps=0.1)]
#             print
#             print
#             print self.chosen_modules
#             print "chosen module:", mid

        elif mode == 'prop-min':
            mids = interests.keys()
            w = interests.values()
            #             if self.t % 100 == 0:
            #                 print "interests", np.array(w), 'iteration', self.t, "competences", np.array([self.modules[mid].competence() for mid in self.modules.keys()]), int(((w[3] + w[4]-2*min(w)) / sum(np.array(w)-min(w)))*100), "%"
            mid = mids[prop_choice(np.array(w) - min(w), eps=0.1)]

        self.chosen_modules[mid] = self.chosen_modules[mid] + 1
        #print self.chosen_modules
        self.emit('babbling_module', mid)
        return mid