Trong hướng dẫn MNist của Google bằng cách sử dụng TensorFlow , một phép tính được thể hiện trong đó một bước tương đương với nhân một ma trận với một vectơ. Google trước tiên hiển thị một hình ảnh trong đó mỗi phép nhân số và phép cộng sẽ thực hiện phép tính được viết đầy đủ. Tiếp theo, họ hiển thị một hình ảnh trong đó thay vào đó là biểu thức nhân ma trận, cho rằng phiên bản tính toán này, hoặc ít nhất có thể nhanh hơn:
Nếu chúng ta viết nó ra dưới dạng phương trình, chúng ta sẽ nhận được:
Chúng ta có thể "vector hóa" thủ tục này, biến nó thành phép nhân ma trận và phép cộng vector. Điều này rất hữu ích cho hiệu quả tính toán. (Đó cũng là một cách hữu ích để suy nghĩ.)
Tôi biết rằng các phương trình như thế này thường được viết theo định dạng nhân ma trận bởi những người thực hành máy học, và tất nhiên có thể thấy những lợi thế để làm như vậy từ quan điểm của sự căng thẳng mã hoặc hiểu toán học. Điều tôi không hiểu là tuyên bố của Google rằng việc chuyển đổi từ dạng thủ công sang dạng ma trận "rất hữu ích cho hiệu quả tính toán"
Khi nào, tại sao và làm thế nào để có thể đạt được các cải tiến hiệu suất trong phần mềm bằng cách biểu thị các phép tính dưới dạng nhân ma trận? Nếu tôi tự tính toán nhân ma trận trong hình ảnh thứ hai (dựa trên ma trận), thì tôi sẽ làm điều đó bằng cách thực hiện tuần tự từng phép tính riêng biệt được hiển thị trong hình ảnh đầu tiên (vô hướng). Đối với tôi, chúng chẳng là gì ngoài hai ký hiệu cho cùng một chuỗi tính toán. Tại sao nó khác với máy tính của tôi? Tại sao một máy tính có thể thực hiện phép tính ma trận nhanh hơn phép tính vô hướng?