def backward(self, T, mode='X'):
if 'X' in mode and 'G' in mode:
D = T
X = np.squeeze (self.X, 1)
G = np.tensordot(D, X, ([0,2,3],[0,1,2]))
self.accumulate(G)
if 'X' in mode: T = uncollapse(T, self.W)
else : T = np.sum(T, 1)[:,None]
O = np.zeros((T.shape[0], 1) + (self.sh[2]-self.w[2]+1, self.sh[3]-self.w[3]+1) + tuple(self.w[1:]) + T.shape[7:], dtype='float32')
_ = ne.evaluate('T', out=O[self.S]) #O[self.S] = T
O = unexpand(O)
return O
评论列表
文章目录