গণিতে আমার মনে হয়, বিন্দু বিন্দুটি আরও বোধগম্য
বিন্দু (ক, খ) _ {আই, জে, কে, এ, বি, সি} =
যেহেতু এটি বিন্দু পণ্য দেয় যখন a এবং b ভেক্টর হয় বা ম্যাট্রিক্সের গুণ যখন a এবং b ম্যাট্রিক হয়
নম্পিতে ম্যাটমুল অপারেশন হিসাবে এটি বিন্দু ফলাফলের অংশগুলি নিয়ে গঠিত এবং এটি হিসাবে সংজ্ঞায়িত করা যায়
> মাতমুল (ক, খ) _ {আই, জে, কে, সি} =
সুতরাং, আপনি দেখতে পাচ্ছেন যে ম্যাটমুল (ক, খ) একটি ছোট আকারের সাথে একটি অ্যারে প্রদান করে, যার মেমরির পরিমাণ কম থাকে এবং অ্যাপ্লিকেশনগুলিতে আরও জ্ঞান লাভ করে। বিশেষত, সম্প্রচারের সাথে সম্মিলন করে আপনি পেতে পারেন
মাতমুল (ক, খ) _ {আই, জে, কে, এল} =
উদাহরণ স্বরূপ.
উপরের দুটি সংজ্ঞা থেকে, আপনি এই দুটি অপারেশন ব্যবহার করার প্রয়োজনীয়তা দেখতে পাবেন। ধরুন a.shape = (s1, s2, s3, s4) এবং b. Shape = (t1, t2, t3, t4)
বিন্দু (ক, খ) ব্যবহার করতে আপনার প্রয়োজন
- t3 = এস 4 ;
ম্যাটমুল (ক, খ) ব্যবহার করতে আপনার প্রয়োজন
- T3 = S4
- t2 = s2 , বা t2 এবং s2 এর মধ্যে 1 হয়
- টি 1 = এস 1 , বা টি 1 এবং এস 1 এর 1 হ'ল
নিজেকে বোঝাতে নীচের কোডটির টুকরোটি ব্যবহার করুন।
কোড নমুনা
import numpy as np
for it in xrange(10000):
a = np.random.rand(5,6,2,4)
b = np.random.rand(6,4,3)
c = np.matmul(a,b)
d = np.dot(a,b)
#print 'c shape: ', c.shape,'d shape:', d.shape
for i in range(5):
for j in range(6):
for k in range(2):
for l in range(3):
if not c[i,j,k,l] == d[i,j,k,j,l]:
print it,i,j,k,l,c[i,j,k,l]==d[i,j,k,j,l] #you will not see them