def grad(self, inputs, gout): shapes = tt.stack([i.shape for i in inputs]) index_end = shapes.cumsum(0) index_begin = index_end - shapes slices = [ix_(tt.arange(index_begin[i, 0], index_end[i, 0]), tt.arange(index_begin[i, 1], index_end[i, 1]) ) for i in range(len(inputs))] return [gout[0][slc] for slc in slices]