【PyTorch实战:Tensor】4、NumPy与PyTorch Tensor指南:深度学习中的数据操作与转换

在这里插入图片描述

一、NumPy与PyTorch的紧密关系

1.1 为什么需要同时掌握NumPy和PyTorch?

在深度学习领域,NumPy和PyTorch是两个不可或缺的工具,它们之间存在着天然的协作关系:

  • NumPy:是Python科学计算的基石,提供了强大的多维数组操作能力,适合数据预处理、分析和可视化
  • PyTorch:构建在NumPy理念之上,增加了GPU加速自动求导功能,适合模型训练和推理
协作流程
.from_numpy()
.numpy()
PyTorch模型训练
NumPy预处理
NumPy结果分析
原始数据

1.2 核心概念对应关系

NumPy概念 PyTorch对应概念 关键区别
ndarray Tensor Tensor支持GPU和自动求导
np.array() torch.tensor() 创建方式类似
shape shape 相同属性
dtype dtype 数据类型系统相似
广播机制 广播机制 规则完全相同
np.dot() torch.mm()@ 矩阵乘法

二、NumPy在深度学习中的关键应用

2.1 图像处理与数据加载

深度学习项目通常始于数据加载和预处理,NumPy在这里发挥着重要作用:

import numpy as np
from PIL import Image
import cv2

# 使用Pillow读取图像(RGB通道顺序)
def load_image_pillow(path):
    im = Image.open(path)
    im_array = np.array(im)  # 转换为NumPy数组
    print(f"图像形状: {
     
     im_array.shape}, 数据类型: {
     
     im_array.dtype}")
    return im_array

# 使用OpenCV读取图像(BGR通道顺序)
def load_image_opencv(path):
    im_array = cv2.imread(path)  # 直接得到NumPy数组
    im_array = cv2.cvtColor(im_array, cv2.COLOR_BGR2RGB)  # 转换为RGB
    print(f"图像形状: {
     
     im_array.shape}, 数据类型: {
     
     im_array.dtype}")
    return im_array

# 图像归一化处理
def normalize_image(image):
    # 转换为float32并缩放到[0,1]范围
    normalized = image.astype(np.float32) / 255.0
    # 或者缩放到[-1,1]范围
    # normalized = (image.astype(np.float32) / 127.5) - 1.0
    return normalized

2.2 数组操作与广播机制

广播机制是NumPy和PyTorch中最强大的特性之一,它允许不同形状的数组进行数学运算:

# 广播机制示例
def demonstrate_broadcasting():
    # 示例1: 向量 + 标量
    vector = np.array([1, 2, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无心水

您的鼓励就是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值