Skip to content

请教一个fc.py里面梯度计算的问题 #6

@aidarikako

Description

@aidarikako

楼主你好,因为conv的反向传播时计算梯度,就是用x的转置去乘上一层传递下来的梯度,为啥在fc里面变成了用上一层梯度乘x的转置呀。
就是如下代码,在fc的27行左右,为啥楼主你写的源代码如下:
col_x = self.x[i][:, np.newaxis]
eta_i = eta[i][:, np.newaxis].T
self.w_gradient += np.dot(col_x, eta_i)
而不是这样呀:
col_x = self.x[i][np.newaxis,:].T
eta_i = eta[i][np.newaxis,:]
self.w_gradient += np.dot(col_x, eta_i)
我刚试了一下下面这种方式也是可以正常训练的。所以我不知道是我矩阵梯度算错了,还是楼主不小心写错了,或者是两种方式都是可以的呢,希望楼主能解答一下疑惑,谢谢

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions