Skip to content

学习Thinc

概念与原理

参照thinc.ai/docs/concept,首先,关于反向传播以及计算图的学习可以看资料:openmlsys.github.io,里面对于反向传播误差的描述最为清晰

可组合性

使用普通的方法,在进行反向传播的过程中,权重差不能传播到中间层

在不使用反向自动微分机制(大多数dl框架的设计策略)的情况下,我们可以使用higher order function,我们所见到的问题其实非常简单:我们希望获得推理结果的同时,也能够获得剃度;解决这个问题的办法就是callback,大致思路如下:

python
def forward(X: InT) -> Tuple[OutT, Callable[[OutT], Int]]:
    Y: OutT = _do_compute(X)

    def backward(dY: OutT) -> InT:
        dX: InputType = _do_backprop(dY, X)
        return dX

    return Y, backward

def chain(layer1, layer2):
    def forward_chain(X):
        Y, get_dX = layer1(X)
        Z, get_dY = layer2(Y)

        def backprop_chain(dZ):
            dY = get_dY(dZ)
            dX = get_dX(dY)
            return dX
        
        return Z, backprop_chain

    return forward_chain

知识在于积累