Transposing flips a matrix over its diagonal: row i becomes column i. An m × n matrix comes back as n × m.
Task: write transpose(matrix) that takes a list of rows and returns the transposed matrix, also as a list of rows.
This shows up constantly once you start writing gradients by hand.
X @ WneedsX.Tto get the gradient with respect toW— the shapes only line up one way, and transpose is what lines them up.