คำถามติดแท็ก matrix-multiplication

12
ทำไม MATLAB ถึงรวดเร็วในการคูณเมทริกซ์?
ฉันกำลังสร้างมาตรฐานด้วย CUDA, C ++, C #, Java และการใช้ MATLAB สำหรับการตรวจสอบและสร้างเมทริกซ์ เมื่อฉันทำการคูณเมทริกซ์ด้วย MATLAB 2048x2048และเมทริกซ์ที่ยิ่งใหญ่กว่าก็จะถูกคูณด้วยเกือบทันที 1024x1024 2048x2048 4096x4096 --------- --------- --------- CUDA C (ms) 43.11 391.05 3407.99 C++ (ms) 6137.10 64369.29 551390.93 C# (ms) 10509.00 300684.00 2527250.00 Java (ms) 9149.90 92562.28 838357.94 MATLAB (ms) 75.01 423.10 3133.90 มีเพียง CUDA เท่านั้นที่สามารถแข่งขันได้ แต่ฉันคิดว่าอย่างน้อย C …

3
สัญลักษณ์ '@ =' สำหรับใน Python คืออะไร
ฉันรู้ว่า@สำหรับนักตกแต่ง แต่@=สำหรับ Python มีอะไรบ้าง? มันเป็นเพียงการจองสำหรับแนวคิดในอนาคตบางอย่าง? นี่เป็นเพียงหนึ่งในหลาย ๆ tokenizer.pyคำถามของฉันในขณะที่อ่าน

8
การคูณแตกต่างกันอย่างไรสำหรับคลาส NumPy Matrix vs Array
เอกสาร numpy แนะนำให้ใช้อาร์เรย์แทนเมทริกซ์สำหรับการทำงานกับเมทริกซ์ อย่างไรก็ตามไม่เหมือนกับอ็อกเทฟ (ที่ฉันใช้จนถึงเมื่อไม่นานมานี้) * ไม่ทำการคูณเมทริกซ์คุณต้องใช้ฟังก์ชัน matrixmultipy () ฉันรู้สึกว่านี่ทำให้โค้ดอ่านไม่ออก มีใครแบ่งปันมุมมองของฉันและพบวิธีแก้ไขหรือไม่?

10
เหตุใดจึงมีประสิทธิภาพสูงในการคูณอาร์เรย์ 2048x2048 เทียบกับ 2047x2047
ฉันกำลังทำการเปรียบเทียบการคูณเมทริกซ์ตามที่กล่าวไว้ก่อนหน้านี้ใน เหตุใด MATLAB จึงเร็วมากในการคูณเมทริกซ์ ตอนนี้ฉันมีปัญหาอื่นเมื่อคูณสองเมทริกซ์ 2048x2048 มีความแตกต่างอย่างมากระหว่าง C # และอื่น ๆ เมื่อฉันลองคูณเมทริกซ์ 2047x2047 เท่านั้นดูเหมือนจะปกติ เพิ่มคนอื่น ๆ เพื่อเปรียบเทียบด้วย 1024x1024 - 10 วินาที 1027x1027 - 10 วินาที 2047x2047 - 90 วินาที 2048x2048 - 300 วินาที 2049x2049 - 91 วินาที (update) 2500x2500 - 166 วินาที นั่นคือความแตกต่างสามนาทีครึ่งสำหรับเคส 2k คูณ 2k ใช้อาร์เรย์ 2dim //Array init …

6
ความแตกต่างระหว่าง numpy dot () และการคูณเมทริกซ์ Python 3.5+ @
ฉันเพิ่งย้ายไป Python 3.5 และสังเกตเห็นผู้ประกอบการคูณเมทริกซ์ใหม่ (@)บางครั้งทำงานแตกต่างกันจากจุด numpyผู้ประกอบการ ตัวอย่างเช่นสำหรับอาร์เรย์ 3 มิติ: import numpy as np a = np.random.rand(8,13,13) b = np.random.rand(8,13,13) c = a @ b # Python 3.5+ d = np.dot(a, b) ตัว@ดำเนินการส่งคืนอาร์เรย์ของรูปร่าง: c.shape (8, 13, 13) ในขณะที่np.dot()ฟังก์ชันส่งกลับ: d.shape (8, 13, 8, 13) ฉันจะสร้างผลลัพธ์เดียวกันด้วย numpy dot ได้อย่างไร มีความแตกต่างที่สำคัญอื่น ๆ หรือไม่?

4
วิธีการรับการคูณเมทริกซ์ที่ชาญฉลาด (ผลิตภัณฑ์ Hadamard) เป็นตัวเลข
ฉันมีเมทริกซ์สองตัว a = np.matrix([[1,2], [3,4]]) b = np.matrix([[5,6], [7,8]]) และฉันต้องการได้ผลิตภัณฑ์ที่เป็นองค์ประกอบอย่าง[[1*5,2*6], [3*7,4*8]]เท่าเทียมกัน [[5,12], [21,32]] ฉันเหนื่อย print(np.dot(a,b)) และ print(a*b) แต่ทั้งสองให้ผลลัพธ์ [[19 22], [43 50]] ซึ่งเป็นผลิตภัณฑ์เมทริกซ์ไม่ใช่ผลิตภัณฑ์ที่เป็นองค์ประกอบ ฉันจะรับผลิตภัณฑ์ที่มีองค์ประกอบ (หรือที่เรียกว่าผลิตภัณฑ์ Hadamard) โดยใช้ฟังก์ชันในตัวได้อย่างไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.