def read_data(datasetDirectory, lines_to_jump): data_letters = {} datasets = glob.glob(datasetDirectory + '/*.dat') for dataset in datasets: name = os.path.splitext(os.path.basename(dataset))[0] if name in alphabet: try: with open(dataset, 'r') as data: i = 0 for line in data.readlines(): i += 1 if i > lines_to_jump: shape = literal_eval( ('[' + line + ']').replace('[,', '[')) shape = np.reshape(shape, (-1, 1)) data_stroke = Stroke() data_stroke.stroke_from_xxyy( np.reshape(shape, len(shape))) #data_stroke.uniformize() try: data_stroke.normalize_wrt_max() except ValueError: print(name + " is empty") data_letters.setdefault(name, []).append(data_stroke) except IOError: raise RuntimeError("no reading permission for file" + dataset) return data_letters
def read_data(datasetDirectory, lines_to_jump): data_letters = {} datasets = glob.glob(datasetDirectory + '/*.dat') for dataset in datasets: name = os.path.splitext(os.path.basename(dataset))[0] if name in alphabet: try: with open(dataset, 'r') as data: i=0 for line in data.readlines(): i+=1 if i>lines_to_jump: shape = literal_eval(('['+ line +']').replace('[,','[')) shape = np.reshape(shape, (-1, 1)) data_stroke = Stroke() data_stroke.stroke_from_xxyy(np.reshape(shape,len(shape))) #data_stroke.uniformize() try: data_stroke.normalize_wrt_max() except ValueError: print name+" is empty" data_letters.setdefault(name,[]).append(data_stroke) except IOError: raise RuntimeError("no reading permission for file"+dataset ) return data_letters
def respond_to_demonstration_letter(self, demonstration, letter, mode='midway', mode_param=0.5): demo_stroke = Stroke() demo_stroke.stroke_from_xxyy( np.reshape(demonstration, len(demonstration))) demo_stroke.normalize_wrt_max() if mode == 'midway': learned_stroke = stroke.midway(demo_stroke, self.generated_letters[letter], mode_param) self.generated_letters[letter] = learned_stroke save_learned_allograph(self.child_path, letter, learned_stroke) _, score = stroke.euclidian_distance(demo_stroke, self.refs[letter]) if mode == 'simple': learned_stroke = stroke.weigthedSum(demo_stroke, self.generated_letters[letter], mode_param) self.generated_letters[letter] = learned_stroke save_learned_allograph(self.child_path, letter, learned_stroke) _, score = stroke.euclidian_distance(demo_stroke, self.refs[letter]) return self.shape_message(letter), score
def respond_to_demonstration_letter(self, demonstration, letter, grade, mode='midway'): demo_stroke = Stroke() demo_stroke.stroke_from_xxyy(np.reshape(demonstration,len(demonstration))) #demo_stroke.uniformize() demo_stroke.normalize_wrt_max() if mode == 'midway': learned_stroke = stroke.midway(demo_stroke, self.generated_letters[letter], grade) self.generated_letters[letter] = learned_stroke save_learned_allograph(self.robot_path, letter, learned_stroke) _,score = stroke.euclidian_distance(demo_stroke, self.refs[letter]) #if mode = 'PCA' #if mode = 'sigNorm' (mixture of sigma-log-normal) #if mode = 'CNN' (1-D convolutionnal neural networks) return self.shape_message(letter),score