mirror of
https://github.com/explosion/spaCy.git
synced 2025-02-11 09:00:36 +03:00
Tweak efficiency of precomputable affine
This commit is contained in:
parent
d85d063231
commit
306a591e1f
|
@ -48,8 +48,7 @@ def forward(model, X, is_train):
|
||||||
model.inc_grad("b", dY.sum(axis=0))
|
model.inc_grad("b", dY.sum(axis=0))
|
||||||
dY = dY.reshape((dY.shape[0], nO * nP))
|
dY = dY.reshape((dY.shape[0], nO * nP))
|
||||||
|
|
||||||
Wopfi = W.transpose((1, 2, 0, 3))
|
Wopfi = model.ops.as_contig(W.transpose((1, 2, 0, 3)))
|
||||||
Wopfi = model.ops.xp.ascontiguousarray(Wopfi)
|
|
||||||
Wopfi = Wopfi.reshape((nO * nP, nF * nI))
|
Wopfi = Wopfi.reshape((nO * nP, nF * nI))
|
||||||
dXf = model.ops.gemm(dY.reshape((dY.shape[0], nO * nP)), Wopfi)
|
dXf = model.ops.gemm(dY.reshape((dY.shape[0], nO * nP)), Wopfi)
|
||||||
|
|
||||||
|
@ -59,7 +58,8 @@ def forward(model, X, is_train):
|
||||||
model.ops.gemm(dY, Xf, out=dWopfi, trans1=True)
|
model.ops.gemm(dY, Xf, out=dWopfi, trans1=True)
|
||||||
dWopfi = dWopfi.reshape((nO, nP, nF, nI))
|
dWopfi = dWopfi.reshape((nO, nP, nF, nI))
|
||||||
# (o, p, f, i) --> (f, o, p, i)
|
# (o, p, f, i) --> (f, o, p, i)
|
||||||
model.inc_grad("W", dWopfi.transpose((2, 0, 1, 3)))
|
dWopfi = model.ops.as_contig(dWopfi.transpose((2, 0, 1, 3)))
|
||||||
|
model.inc_grad("W", dWopfi)
|
||||||
return dXf.reshape((dXf.shape[0], nF, nI))
|
return dXf.reshape((dXf.shape[0], nF, nI))
|
||||||
|
|
||||||
return Yf, backward
|
return Yf, backward
|
||||||
|
|
Loading…
Reference in New Issue
Block a user