2
m,n =size(l.x)
for batch=1:m
l.ly = l.y[batch,:]
l.jacobian .= -l.ly .* l.ly'
l.jacobian[diagind(l.jacobian)] .= l.ly.*(1.0.-l.ly)
# # n x 1 = n x n * n x 1
l.dldx[batch,:] = l.jacobian * DLDY[batch,:]
end
return l.dldx
l.x
是m
由n
矩陣。 l.y
是另一個與l.x
大小相同的矩陣。我的目標是通過n
matrix,l.dldx
創建另一個m
,其中每行都是for循環內部操作的結果。任何一個可以進一步優化這段代碼?上面的代碼是https://github.com/stevenygd/NN.jl的一部分。有沒有辦法重構下面的朱莉婭代碼,以避免循環/ malloc?
將計算打包成幾個'for'循環將其降至2個分配,並給*另一個5倍速度提升*。這是微不足道的,但我會在需要時添加代碼。 –
請添加代碼!你是朱莉婭演出中的上帝。 –
你也可以解釋一下如何將整個代碼塊重構爲一行?我不明白在你的代碼中你計算了雅可比矩陣的對角線條目。 –