4.9 • 848 Ratings
🗓️ 9 June 2018
⏱️ 27 minutes
🧾️ Download transcript
Explains the fundamental differences between tensor dimensions, size, and shape, clarifying frequent misconceptions—such as the distinction between the number of features (“columns”) and true data dimensions—while also demystifying reshaping operations like expand_dims, squeeze, and transpose in NumPy. Through practical examples from images and natural language processing, listeners learn how to manipulate tensors to match model requirements, including scenarios like adding dummy dimensions for grayscale images or reordering axes for sequence data.
Tensor: A general term for an array of any number of dimensions.
NDArray (NumPy): Stands for "N-dimensional array," the foundational array type in NumPy, synonymous with "tensor."
.ndim
property (e.g., array.ndim
).[1, 2, 3, 4, 5]
).size
property.shape = (256, 256, 3)
.(1_000_000, 50)
(256, 256, 3)
(batch_size, width, height, channels)
, e.g., (32, 256, 256, 3)
.Adding Dimensions:
(256, 256)
to (256, 256, 1)
).np.expand_dims
or array.reshape
.Removing Singleton Dimensions:
(N, 1)
and single dimension should be removed to yield (N,)
.np.squeeze
or array.reshape
.Wildcard with -1:
-1
is a placeholder for NumPy to infer the correct size, useful when batch size or another dimension is variable.Flattening:
np.ravel
to turn a multi-dimensional tensor into a contiguous 1D array.np.transpose
for general axis permutations.np.swapaxes
to swap two specific axes but prefer transpose
for clarity and flexibility.(batch_size, sequence_length, embedding_dim)
might need to be reordered to (batch_size, embedding_dim, sequence_length)
for certain models.array.transpose(0, 2, 1)
Operation | NumPy Function | Purpose |
---|---|---|
Add dimension | np.expand_dims | Convert (256,256) to (256,256,1) |
Remove dimension | np.squeeze | Convert (N,1) to (N,) |
General reshape | np.reshape | Any change matching total size |
Flatten | np.ravel | Convert (a,b) to (a*b,) |
Swap axes | np.swapaxes | Exchange positions of two axes |
Permute axes | np.transpose | Reorder any sequence of axes |
Click on a timestamp to play from that location
0:01.0 | You're listening to Machine Learning Applied. |
0:03.6 | In this episode, we're going to talk about shapes and sizes of ND arrays and tensors. |
0:09.3 | I personally found shaping to be a very confusing concept when I first started doing machine learning. |
0:14.8 | It's something you definitely don't deal with outside of machine learning and data science |
0:18.5 | and regular computer programming and web development and the sort. So it took me a while to get comfortable with it. And it just takes practice. |
0:25.3 | So you'll eventually get it when working in machine learning. But I figured I'd do an episode and give |
0:30.0 | you a lay of land. So as a recap on something I've mentioned multiple times in MLG, |
0:35.5 | when you're dealing with arrays of multiple dimensions, we call that a tensor. |
0:40.5 | So an array, like you're used to, a standard array, we call that a 1D tensor, a one-dimensional |
0:47.4 | tensor, or sometimes a vector. A two-dimensional array, or 2-DD tensor is called a matrix. |
0:56.0 | Incidentally, a 0D tensor is called a scalar, which is just a number, like the number 5 or the number 10. |
1:05.0 | That's a 0D tensor. |
1:07.0 | So the general term we have for any dimensional array is a tensor in mathematics. |
1:14.9 | In NumPi, they call it an ND array, any dimensional array. |
1:20.1 | And we have names for 0D, 1D, and 2D tensors, that is, scalar, vector, and matrix, respectively. And there might be names for 3D and above. I'm |
1:32.6 | unfamiliar with them. Instead, in the industry, we just say 3D tensor, 4D tensor, and beyond. |
1:38.9 | So a tensor is any dimensional array. And in NUMPI, we call it ND array. So let's talk about the structure of these |
1:45.4 | tensors. What we have is number of dimensions, size, and shape. Dimensions, size, and shape. |
1:54.3 | So dimensions like I just mentioned are basically the number of nestings of these arrays. |
2:00.4 | So if we have a list of numbers, that's a vector, |
2:03.5 | if we have a spreadsheet of housing data, |
2:06.0 | that's a matrix, that's a 2D tensor, |
... |
Please login to see the full transcript.
Disclaimer: The podcast and artwork embedded on this page are from OCDevel, and are the property of its owner and not affiliated with or endorsed by Tapesearch.
Generated transcripts are the property of OCDevel and are distributed freely under the Fair Use doctrine. Transcripts generated by Tapesearch are not guaranteed to be accurate.
Copyright © Tapesearch 2025.