Пример #1
0
 def trainSequence(self, xs, cs, update=1, key=None):
     "Train with an integer sequence of codes."
     assert xs.shape[1] == self.Ni, "wrong image height"
     # forward step
     self.outputs = array(self.lstm.forward(xs))
     # CTC alignment
     self.targets = array(make_target(cs, self.No))
     self.aligned = array(
         ctc_align_targets(self.outputs,
                           self.targets,
                           debug=self.debug_align))
     # propagate the deltas back
     deltas = self.aligned - self.outputs
     self.lstm.backward(deltas)
     if update: self.lstm.update()
     # translate back into a sequence
     result = translate_back(self.outputs)
     # compute least square error
     self.error = sum(deltas**2)
     self.error_log.append(self.error**.5 / len(cs))
     # compute class error
     self.cerror = levenshtein(cs, result)
     self.cerror_log.append((self.cerror, len(cs)))
     # training keys
     self.key_log.append(key)
     return result
Пример #2
0
def testLevenshtein(a, b, should):
    if edist.levenshtein(a, b) == should:
        print 'ok - levenshtein(%s, %s) == %s' % (a, b, should)
        return 0
    else:
        print 'not ok - levenshtein(%s, %s) == %s' % (a, b, should)
        return 1
Пример #3
0
 def trainSequence(self,xs,cs,update=1,key=None):
     "Train with an integer sequence of codes."
     assert xs.shape[1]==self.Ni,"wrong image height"
     # forward step
     self.outputs = array(self.lstm.forward(xs))
     # CTC alignment
     self.targets = array(make_target(cs,self.No))
     self.aligned = array(ctc_align_targets(self.outputs,self.targets,debug=self.debug_align))
     # propagate the deltas back
     deltas = self.aligned-self.outputs
     self.lstm.backward(deltas)
     if update: self.lstm.update()
     # translate back into a sequence
     result = translate_back(self.outputs)
     # compute least square error
     self.error = sum(deltas**2)
     self.error_log.append(self.error**.5/len(cs))
     # compute class error
     self.cerror = edist.levenshtein(cs,result)
     self.cerror_log.append((self.cerror,len(cs)))
     # training keys
     self.key_log.append(key)
     return result