当前位置: 首页 > news >正文

Pytorch实战

1、安装

  • 安装 conda, Python工具大全,方便管理多个 Python 环境,必须选择跟自己环境配套的版本。

    • https://www.anaconda.com

  • 网速慢的,可以参考国内源,也可以去这里看看:

    • torch · PyPI

    • Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

  • PyTorch的安装, 结合自己想要安装的环境,动态选择即可。
    •  PyTorch
    #环境初始化~/miniconda3/bin/conda init#创建虚拟环境conda create --name deeplearning python=3.9#激活环境conda activate deeplearning#安装插件pip install torch==1.12.0 torchvision==0.13.0 numpy==1.21.5 matplotlib==3.5.1 requests==2.25.1 pandas==1.2.4python -m pip install -U pippython -m pip install -U matplotlib#退出环境conda deactivate#列出当前有哪些环境conda env list#删除环境conda env remove deeplearning

2、张量的基本操作

import torch
# tensor([0,1,2,3,4,5,6,7,8,9,10,11])
x1 = torch.arange(12)
# 返回张量的维度信息,torch.Size([12])
x1.shape
# 返回张量的元素个数12
x1.numel()# 2个3行4列的全0矩阵
torch.zeros(2,3,4)
# 2个3行4列的全1矩阵
torch.ones(2,3,4)
# 随机生成一个3行4列的矩阵,元素值服从标准正态分布
torch.randn(3,4)
# 指定初始化一个张量
y1 = torch.tensor([[2,1,4,3],[1,2,3,4],[4,3,2,1]])
# 将y的形状改为4行3列,将元素重新排列
y1.reshape(4,3)x2 = torch.tensor([1,2,4,8])
y2 = torch.tensor([2,2,2,2])
# 对应位置的元素相乘,返回一个新的张量
print(x2 * y2)
# x2对于元素的y2次幂
print(x2 ** y2)
# 对x2的每个元素计算e的幂次方,即e的x2次幂
print(torch.exp(x2))x3 = torch.arange(12, dtype=torch.int).reshape((3,4))
y3 = torch.tensor([[2,1,4,3],[1,2,3,4],[4,3,2,1]])
res2 = torch.cat((x3,y3), dim=0) # dim=0表示按行拼接,结果为6行4列
res3 = torch.cat((x3,y3), dim=1) # dim=1表示按列拼接,结果为3行8列
print(res2)
print(res3)x3 == y3 # 对应位置的元素相等,返回True,否则返回False# 广播
a = torch.arange(3).reshape((3,1)) # 3行1列
b = torch.arange(2).reshape((1,2)) # 1行2列
print(a)
print(b)
print(a+b) # 广播机制,将a和b扩展为3行2列,然后对应位置的元素相加,结果为3行2列# 索引和切片
y3[-1] # 索引和切片,X[-1]表示最后一行,结果为1行4列
y3[1:3] # 索引和切片,X[-1]表示最后一行,X[1:3]表示第2行和第3行,结果为2行4列
y3[1,2] = 9 # 索引和切片,X[1,2]表示第2行第3列的元素,赋值为9,下标从0开始
print(y3)# 节省内存(不推荐)
# 对向量的操作后都会生成一个新的向量,即分配一片新的内存
z1 = torch.zeros_like(y3) # 生成一个和y3相同形状的全0矩阵,结果为3行4列
print('id(z1):', id(z1)) # id(z1)表示z1的内存地址
z1[:] = x3 + y3 # 将x3和y3的对应位置的元素相加,结果再赋值给z1
print('id(z1):', id(z1)) # id(z1)表示z1的内存地址
# z1的地址保持不变,x3+y3没有新分配地址,这样就节省了内存# 转换为其他Python对象
A = x3.numpy() # 将张量x3转换为numpy数组,结果为3行4列
B = torch.tensor(A) # 将numpy数组A转换为张量,结果为3行4列
print(type(A)) # <class 'numpy.ndarray'>
print(type(B)) # <class 'torch.Tensor'>c = torch.tensor([3.5]) # 生成一个张量,元素值为3.5
d = c.item() # 将张量c转换为Python标量,结果为3.5
print(type(c)) # <class 'torch.Tensor'>
print(type(d)) # <class 'float'>
print(float(c))
print(int(c))

3、预处理

# 创建数据集
os.makedirs(os.path.join('.', 'data'), exist_ok=True)
data_file = os.path.join('.', 'data', 'house_tiny.csv')
with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n')  # 列名f.write('NA,Pave,127500\n')  # 每行表示一个数据样本f.write('2,NA,106000\n')f.write('4,NA,178100\n')f.write('NA,NA,140000\n')# 读取数据集
import pandas as pd
data = pd.read_csv(data_file)
print(data)
# 将house_tiny数据的空值进行处理
inputs,outputs = data.iloc[:,0:2],data.iloc[:,2] # `iloc` 用于基于整数位置的索引,即index_location# get_dummies 是 pandas 库中的一个函数,用于将类别型数据转换为独热编码(one-hot encoding)的形式。
# 独热编码是将分类变量转换为机器学习模型可理解格式的技术,将每个分类创建一个列,1代表命中该分类,0代表未命中;
# 如果将分类按1,2,3编码,会让大模型认为每个分类之间存在大小关系。
inputs = pd.get_dummies(inputs, dummy_na=True)
#    NumRooms Alley   Price
# 0       NaN  Pave  127500
# 1       2.0   NaN  106000
# 2       4.0   NaN  178100
# 3       NaN   NaN  140000
# 处理数值型数据的缺失值,将其替换为该列的均值
inputs = inputs.fillna(inputs.iloc[:,0].mean())
print(inputs)# 将pandas的DataFrame转换为PyTorch的Tensor
X = torch.tensor(inputs.to_numpy(dtype=float))
y = torch.tensor(outputs.to_numpy(dtype=float))
print(X)
print(y)

相关文章:

  • 软件架构师的“天、人、术、势“:构建未来系统的哲学框架
  • Linux 下依赖库的问题
  • OV-Watch(一)(IAP_F411学习)
  • 【Part 2安卓原生360°VR播放器开发实战】第一节|通过传感器实现VR的3DOF效果
  • Milvus(1):什么是 Milvus
  • 21. git apply
  • 大模型技术解析与应用 | 大语言模型:从理论到实践(第2版)| 复旦大学 | 533页
  • 深度学习方向急出成果,是先广泛调研还是边做实验边优化?
  • springboot自动装配的原理
  • 修改PointLIO项目
  • RHCSA知识点
  • 2025-4-19 情绪周期视角复盘(mini)
  • Linux命令--将控制台的输入写入文件
  • C语言之高校学生信息快速查询系统的实现
  • RocketMQ实现基于可靠消息的最终一致性
  • electron打包是没有正确生成electron.exe,x ENOENT: no such file or directory, rename:
  • 位运算---总结
  • 微信小程序上传腾讯云
  • Dubbo QoS操作手册
  • 【网工第6版】第4章 无线通信网
  • 沙龙 | 新书分享:中国电商崛起的制度密码
  • 沈辛成评《主动出击》丨科学普及,究竟需要靠谁主动出击
  • 成都一医院孕妇产下七胞胎?涉事医院辟谣:信息不实已举报
  • 鲜花妆上海,花香荟申城!2025上海国际花展开幕,龚正出席并启动花展
  • 美国开始从叙利亚撤出数百人,分析人士担忧“伊斯兰国”威胁再起
  • 中马签署互免签证协定,飞往马来西亚的机票搜索量日环比增长超1倍