              return
          cdef uint64_t nr_weight = self.nr_weight * nr_class - nr_class
          cdef vector[uint64_t] indices
          # Collect all feature indices
          cdef uint32_t[2] hashed
          cdef uint64_t hash2
          for feat in features[:nr_feat]:
              if feat.value == 0:
 
</s> remove         cdef uint64_t nr_weight = self.nr_weight
 </s> add  </s> remove         cdef uint64_t nr_weight = self.nr_weight
 </s> add         self.time += 1 </s> remove             d_W = &self.d_W[idx * nr_class]
            for clas in range(nr_class):
                if d_scores[clas] < 0:
                    d_W[clas] += max(-10., d_scores[clas])
                else:
                    d_W[clas] += min(10., d_scores[clas])
 </s> add             #avg = &self.averages[idx]
            #last_upd = &self.last_upd[idx]
            W = &self.W[idx]
            #mom = &self.mom[idx]
            for i in range(nr_class):
                if d_scores[i] == 0:
                    continue
                d = d_scores[i]
                W[i] -= self.learn_rate * d
                #unchanged = self.time - last_upd[i]
                #avg[i] += unchanged * W[i]
                #mom[i] *= self.momentum ** unchanged
                #mom[i] += self.learn_rate * d
                #W[i] -= mom[i]
                #last_upd[i] = self.time
        indices.reserve(nr_feat * 2)
              return
          cdef uint64_t nr_weight = self.nr_weight * nr_class - nr_class
          cdef vector[uint64_t] indices
          # Collect all feature indices
        indices.reserve(nr_feat * 2)
          cdef uint32_t[2] hashed
          cdef uint64_t hash2
          for feat in features[:nr_feat]:
              if feat.value == 0:
keep keep keep add keep keep keep keep
 Play with hash kernel class 
spacy/_ml.pyx