Pytorch入门 (一)

本文主要介绍了Pytorch的基本使用,包括查看版本号、定义tensor以及进行tensor的基本运算。同时,还对比了tensor与numpy的操作差异,帮助读者更好地理解和掌握Pytorch。
部署运行你感兴趣的模型镜像

查看torch版本号

print(t.__version__)

定义tensor

# 构建 5x3 矩阵,只是分配了空间,未初始化,元素是些随机数
x = t.Tensor(5, 3)
#直接用list初始化
x = t.Tensor([[1,2],[3,4]])
# 使用[0,1]均匀分布随机初始化2×2的矩阵
x = t.rand(2, 2)

tensor基本运算

# torch.Size 是tuple对象的子类,因此它支持tuple的所有操作
shape=x.size()
print(shape,"\n",type(shape),"\n",shape[1])

z = x+y	#直接相加
z=t.add(x, y)#使用torch方法

#指定加法结果的输出目标为result
result = t.Tensor(2, 2) # 预先分配空间
t.add(x, y, out=result) # 输入到result

z=y.add(x)# 普通加法,不改变y的内容
y.add_(x) # inplace 加法,y变了

tensor与numpy对比

#切片
print(x[:, 1])#取第1列

# 新建一个全1的Tensor
a = t.ones(5)

# Tensor -> Numpy
b = a.numpy() 
print(b,type(b))
# Numpy->Tensor
c = t.from_numpy(b)
print(c)
#Tensor和numpy对象共享内存,所以他们之间的转换很快,而且几乎不会消耗什么资源。
# 但这也意味着,如果其中一个变了,另外一个也会随之改变。
c.add_(1)
print(b)
print(c)

#需要注意的是,t.tensor()或者tensor.clone()总是会进行数据拷贝,
# 新tensor和原来的数据不再共享内存。所以如果你想共享内存的话,
# 建议使用torch.from_numpy()或者tensor.detach()来新建一个tensor, 二者共享内存。
x=[[1,2],[3,4]]
y=t.tensor(x)#修改x,y不被修改
x[1][1]=100
print(x)
print(y)
z=y.clone()#修改y,z不被修改
y[1][1]=500
print(y)
print(z)
z=y.detach()#修改y,z被修改
y[1][1]=1000
print(y)
print(z)

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

<think>首先,用户的问题是:“我想获取PyTorch入门知识 请问PyTorch入门知识”。这直接表达了用户想了解PyTorch入门知识的需求。 系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户提供的引用: - 引用[1]:关于PyTorch入门基础知识,提到了dir()和help()函数。 - 引用[2]:关于Adam优化算法的参数。 用户说:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上次的问题和你的回答。” 检查对话历史: - 上次用户的问题是:“我想获取PyTorch入门知识 请问PyTorch入门知识”,这是第个问题,所以没有上次的问题和回答。 因此,我需要基于用户的直接问题来回答,同时参考提供的引用作为辅助。 用户可见层的额外指令: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 所以,我的回答应该: 1. 结构清晰地介绍PyTorch入门知识。 2. 参考引用[1]和[2],但主要基于我的知识。 3. 包括生成相关问题。 4. 使用中文。 5. 正确格式LaTeX。 PyTorch入门知识的关键点: - PyTorch个开源的深度学习框架。 - 入门知识包括: - 安装PyTorch。 - 基本概念:张量(Tensors)、自动微分(Autograd)、模块(Modules)。 - 核心组件:torch.nn、torch.optim、torch.utils.data。 - 常用函数:如dir()和help()函数(来自引用[1])。 - 优化器:如Adam优化器(来自引用[2])。 结构回答: - 逐步引导用户。 1. 介绍PyTorch。 2. 安装指南。 3. 基本操作:张量操作。 4. 构建模型:神经网络模块。 5. 优化器和损失函数。 6. 数据加载和训练循环。 - 自然地融入引用。 生成相关问题:在回答结束时,添加§§相关问题§§部分。 确保LaTeX:如果有数学表达式,如优化器公式,使用$...$或$$...$$。 - 例如,Adam优化器的更新规则:$$ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t $$ - 但保持简单,只在必要时添加。 回答大纲: - 开头:直接回答问题。 - 主体: - PyTorch是什么? - 安装PyTorch。 - 基础:张量和操作(使用dir()和help())。 - 构建简单模型。 - 训练:优化器和损失函数(参考Adam)。 - 结束:生成相关问题。 引用标识:在相关的地方添加[^1]和[^2]。 最终回答: - 使用中文。 - 清晰结构。 </think>### PyTorch入门知识指南 PyTorch个开源的深度学习框架,由Facebook开发,广泛应用于研究和生产中。它以其动态计算图(Dynamic Computation Graph)和易用性著称,特别适合初学者入门深度学习。我将逐步介绍入门基础知识,包括安装、核心概念和关键组件,帮助你快速上手。回答基于提供的引用内容(如dir()和help()函数、Adam优化器等)进行扩展,确保内容的可靠性[^1][^2]。 #### 1. **PyTorch概述与安装** PyTorch的核心是处理张量(Tensors),它是多维数组的抽象,类似于NumPy的数组,但支持GPU加速。入门步是安装PyTorch: - **安装方法**:访问[PyTorch官网](https://pytorch.org/),选择你的操作系统和CUDA版本(GPU支持),然后运行推荐的pip命令。例如: ```bash pip install torch torchvision torchaudio ``` - **验证安装**:在Python中导入PyTorch并检查版本: ```python import torch print(torch.__version__) # 输出PyTorch版本,如'2.0.1' ``` #### 2. **基础操作:张量与工具函数** PyTorch的核心是张量操作。使用`dir()`和`help()`函数可以高效探索工具: - **`dir()` 函数**:列出模块中的所有属性和方法,帮助“打开”PyTorch的工具箱。例如: ```python import torch print(dir(torch)) # 列出torch模块的所有内容,如Tensor、nn、optim等分区 ``` - **`help()` 函数**:提供详细的使用说明,相当于“说明书”。例如: ```python help(torch.Tensor) # 查看张量类的文档,包括创建方法(如zeros()、rand()) ``` 引用中提到,这两个函数是Python学习的法宝,能让你快速上手PyTorch的API[^1]。 - **张量创建与操作**:PyTorch张量支持数学运算、自动微分等。例如: ```python # 创建个2x3张量 x = torch.tensor([[1, 2, 3], [4, 5, 6]]) # 基本运算 y = x + 10 # 张量加法 print(y) ``` 张量操作是构建模型的基础,类似NumPy语法,易于理解。 #### 3. **构建神经网络模型** PyTorch使用`torch.nn`模块定义神经网络。每个模型继承自`nn.Module`类: - **简单模型示例**:定义个线性回归模型。 ```python import torch.nn as nn import torch.nn.functional as F class SimpleModel(nn.Module): def __init__(self): super().__init__() self.linear = nn.Linear(1, 1) # 输入特征1维,输出1维 def forward(self, x): return self.linear(x) # 前向传播 ``` 这里,`nn.Linear`表示个全连接层,输入和输出维度可自定义。 #### 4. **训练模型:优化器与损失函数** 训练涉及损失函数和优化器。PyTorch的`torch.optim`模块提供多种优化算法: - **损失函数**:常见如均方误差(MSE)用于回归: ```python loss_fn = nn.MSELoss() # 定义损失函数 ``` - **优化器**:如Adam优化器,引用中描述了其参数[^2]。Adam结合了动量(Momentum)和自适应学习率,适用于大多数场景。参数包括: - `lr`:学习率(默认0.001)。 - `betas`:梯度平均系数(默认(0.9, 0.999))。 - `eps`:数值稳定性项(默认1e-8)。 - `weight_decay`:权重衰减(L2正则化,防止过拟合)。 示例代码: ```python model = SimpleModel() optimizer = torch.optim.Adam(model.parameters(), lr=0.01, weight_decay=0.01) # 引用Adam参数[^2] # 训练循环 for epoch in range(100): optimizer.zero_grad() # 梯度清零 outputs = model(inputs) # 前向传播 loss = loss_fn(outputs, targets) # 计算损失 loss.backward() # 反向传播,计算梯度 optimizer.step() # 更新参数 ``` 优化器的数学原理涉及梯度下降的迭代公式。例如,Adam的更新规则为: $$ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t $$ 其中$\theta_t$是参数,$\eta$是学习率,$\hat{m}_t$和$\hat{v}_t$是偏置校正后的梯度估计[^2]。 #### 5. **数据加载与预处理** 使用`torch.utils.data`模块加载和处理数据: - **Dataset和DataLoader**:自定义数据集并批量加载。 ```python from torch.utils.data import Dataset, DataLoader class CustomDataset(Dataset): def __init__(self, data): self.data = data def __len__(self): return len(self.data) def __getitem__(self, idx): return self.data[idx] dataset = CustomDataset(your_data) dataloader = DataLoader(dataset, batch_size=32, shuffle=True) # 批量训练 ``` #### 6. **调试与资源** - **调试技巧**:多使用`print()`或`dir()/help()`检查张量形状和模型结构。 - **学习资源**:PyTorch官方教程、社区论坛和书籍如《深度学习入门PyTorch》。 - **注意事项**:初学者从CPU开始,逐步过渡到GPU(使用`device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')`)。 通过以上步骤,你可以构建和训练简单模型。PyTorch的动态图机制让调试更直观,适合快速迭代。记住,实践是学习的关键——尝试运行这些代码片段!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值