मैं कोशिश कर रहा हूँ लागू करने के लिए कुछ गणना, लेकिन मैं समझ नहीं सकते कैसे करने के लिए vectorize मेरे कोड नहीं है और छोरों का उपयोग कर.
मुझे समझाने दो: मैं एक मैट्रिक्स M[N,C]
या तो 0
या 1
. एक और मैट्रिक्स Y[N,1]
युक्त मूल्यों के [0,C-1]
(मेरी कक्षा). एक और मैट्रिक्स ds[N,M]
जो डेटासेट.
मेरे आउटपुट मैट्रिक्स के आकार grad[M,C]
और गणना की जानी चाहिए का पालन के रूप में: मैं समझाता हूँ के लिए grad[:,0]
, एक ही तर्क के लिए किसी भी अन्य स्तंभ ।
प्रत्येक पंक्ति के लिए(नमूना) में ds
, तो Y[that sample] != 0
(वर्तमान स्तंभ के आउटपुट मैट्रिक्स) और M[that sample, 0] > 0
, तो grad[:,0] += ds[that sample]
अगर Y[that sample] == 0
, तो grad[:,0] -= (ds[that sample] * <Num of non zeros in M[that sample,:]>
)
यहाँ है मेरे चलने का दृष्टिकोण:
for i in range(M.size(dim=1)):
for j in range(ds.size(dim=0)):
if y[j] == i:
grad[:,i] = grad[:,i] - (ds[j,:].T * sum(M[j,:]))
else:
if M[j,i] > 0:
grad[:,i] = grad[:,i] + ds[j,:].T