0Pricing
Deep Learning Academy · 课时

张量与 NumPy 的互操作

在 torch 张量与 NumPy 数组之间转换

张量与 NumPy 的互操作 是 CoddyKit 上的免费 Deep Learning Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Deep Learning Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Deep Learning Academy 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

Two Worlds, One Bridge

Lots of data starts life as a NumPy array. PyTorch makes it easy to move between arrays and tensors in both directions.

NumPy Arrays Are Like Tensors

A NumPy array also stores numbers in a shape, just without GPU support or autograd. Tensors add those superpowers.

import numpy as np
a = np.array([1, 2, 3])
print(a.shape)  # (3,)

From NumPy with from_numpy

Turn an array into a tensor with torch.from_numpy. It is the standard entry point for existing NumPy data.

a = np.array([1, 2, 3])
t = torch.from_numpy(a)
print(t)  # tensor([1, 2, 3])

Back to NumPy with .numpy

Going the other way, call .numpy on a tensor. Great for plotting or handing data to other libraries.

t = torch.tensor([1, 2, 3])
a = t.numpy()
print(type(a))  # numpy.ndarray

They Share the Same Memory

By default the array and tensor share one block of memory. Changing one quietly changes the other.

a = np.array([1, 2, 3])
t = torch.from_numpy(a)
a[0] = 99
print(t[0])  # tensor(99)

Copy to Break the Link

Want independent data? Call .clone on the tensor so edits stay separate from the original array.

a = np.array([1, 2, 3])
t = torch.from_numpy(a).clone()
a[0] = 99
print(t[0])  # tensor(1)

Dtypes Carry Across

The dtype follows the data over the bridge. A float64 array becomes a float64 tensor unless you cast it.

a = np.array([1.0, 2.0])
t = torch.from_numpy(a)
print(t.dtype)  # torch.float64

Watch the Float64 Trap

NumPy defaults to float64, but models want float32. Cast after conversion to avoid mismatched dtype errors.

a = np.array([1.0, 2.0])
t = torch.from_numpy(a).float()
print(t.dtype)  # torch.float32

GPU Tensors Need a Trip Home

You can't call .numpy on a GPU tensor directly. Move it back with .cpu() first, then convert.

t = torch.tensor([1, 2, 3])
a = t.cpu().numpy()
print(a)  # [1 2 3]

Detach Before Converting Grads

If a tensor tracks gradients, call .detach before .numpy so you grab the values without the autograd graph.

t = torch.tensor([1.0], requires_grad=True)
a = t.detach().numpy()
print(a)  # [1.]

A Clean Conversion Recipe

The safe pattern for any tensor is detach then cpu then numpy. It works whether or not grads or GPUs are involved.

t = torch.tensor([1.0, 2.0])
a = t.detach().cpu().numpy()
print(a)  # [1. 2.]

Quick Check

One question about the array and tensor connection.

Recap: Tensors Talk to NumPy

You can bridge both ways with from_numpy and .numpy, watch the shared-memory trap, and use detach-cpu-numpy for a safe export. 🌉

常见问题解答

「张量与 NumPy 的互操作」课时是免费的吗?

是的 — 「张量与 NumPy 的互操作」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Deep Learning Academy 课程的其余内容,请升级到 CoddyKit PRO。 Deep Learning Academy 课程共包含 4 节课。

「张量与 NumPy 的互操作」这节课中我会学到什么?

在 torch 张量与 NumPy 数组之间转换 你通过在浏览器中直接运行的动手代码来练习 Deep Learning Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Deep Learning Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Deep Learning Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「张量与 NumPy 的互操作」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Deep Learning Academy 课中编写并运行代码吗?

能。每节 Deep Learning Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 形状、数据类型与索引
  2. 重塑、视图、压缩与扩展维度
  3. 帮您省去循环的广播规则
  4. 张量与 NumPy 的互操作
← 返回 Deep Learning Academy