meta_pixel
Tapesearch Logo
Log in
Machine Learning Guide

MLA 005 Shapes and Sizes: Tensors and NDArrays

Machine Learning Guide

OCDevel

Artificial, Introduction, Learning, Courses, Technology, Ml, Intelligence, Ai, Machine, Education

4.9848 Ratings

🗓️ 9 June 2018

⏱️ 27 minutes

🧾️ Download transcript

Summary

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.

Links

Definitions

  • Tensor: A general term for an array of any number of dimensions.

    • 0D Tensor (Scalar): A single number (e.g., 5).
    • 1D Tensor (Vector): A simple list of numbers.
    • 2D Tensor (Matrix): A grid of numbers (rows and columns).
    • 3D+ Tensors: Higher-dimensional arrays, such as images or batches of images.
  • NDArray (NumPy): Stands for "N-dimensional array," the foundational array type in NumPy, synonymous with "tensor."

Tensor Properties

Dimensions

  • Number of nested levels in the array (e.g., a matrix has two dimensions: rows and columns).
  • Access in NumPy: Via .ndim property (e.g., array.ndim).

Size

  • Total number of elements in the tensor.
  • Examples:
    • Scalar: size = 1
    • Vector: size equals number of elements (e.g., 5 for [1, 2, 3, 4, 5])
    • Matrix: size = rows × columns (e.g., 10×10 = 100)
  • Access in NumPy: Via .size property.

Shape

  • Tuple listing the number of elements per dimension.
  • Example: An image with 256×256 pixels and 3 color channels has shape = (256, 256, 3).

Common Scenarios & Examples

Data Structures in Practice

  • CSV/Spreadsheet Example: Dataset with 1 million housing examples and 50 features:
    • Shape: (1_000_000, 50)
    • Size: 50,000,000
  • Image Example (RGB): 256×256 pixel image:
    • Shape: (256, 256, 3)
    • Dimensions: 3 (width, height, channels)
  • Batching for Models:
    • For a convolutional neural network, shape might become (batch_size, width, height, channels), e.g., (32, 256, 256, 3).

Conceptual Clarifications

  • The term "dimensions" in data science often refers to features (columns), but technically in tensors it means the number of structural axes.
  • The "curse of dimensionality" often uses "dimensions" to refer to features, not tensor axes.

Reshaping and Manipulation in NumPy

Reshaping Tensors

  • Adding Dimensions:

    • Useful when a model expects higher-dimensional input than currently available (e.g., converting grayscale image from shape (256, 256) to (256, 256, 1)).
    • Use np.expand_dims or array.reshape.
  • Removing Singleton Dimensions:

    • Occurs when, for example, model output is (N, 1) and single dimension should be removed to yield (N,).
    • Use np.squeeze or array.reshape.
  • Wildcard with -1:

    • In reshaping, -1 is a placeholder for NumPy to infer the correct size, useful when batch size or another dimension is variable.
  • Flattening:

    • Use np.ravel to turn a multi-dimensional tensor into a contiguous 1D array.

Axis Reordering

  • Transposing Axes:
    • Needed when model input or output expects axes in a different order (e.g., sequence length and embedding dimensions in NLP).
    • Use np.transpose for general axis permutations.
    • Use np.swapaxes to swap two specific axes but prefer transpose for clarity and flexibility.

Practical Example

  • In NLP sequence models:
    • 3D tensor with (batch_size, sequence_length, embedding_dim) might need to be reordered to (batch_size, embedding_dim, sequence_length) for certain models.
    • Achieved using: array.transpose(0, 2, 1)

Core NumPy Functions for Manipulation

  • reshape: General function for changing the shape of a tensor, including adding or removing dimensions.
  • expand_dims: Adds a new axis with size 1.
  • squeeze: Removes axes with size 1.
  • ravel: Flattens to 1D.
  • transpose: Changes the order of axes.
  • swapaxes: Swaps specified axes (less general than transpose).

Summary Table of Operations

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

Closing Notes

  • A deep understanding of tensor structure - dimensions, size, and shape - is vital for preparing data for machine learning models.
  • Reshaping, expanding, squeezing, and transposing tensors are everyday tasks in model development, especially for adapting standard datasets and models to each other.

Transcript

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.