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

Pytorch 的编程技巧

系列文章目录


文章目录

  • 系列文章目录
  • 一、模型的保存与加载
    • Tensor 的相关配置
    • pytorch 与 numpy 相互转化
  • 二、实例:读取一张图片


一、模型的保存与加载

  • torch.saves(state, dir) 保存/序列化(保存图当前的状态)
  • torch.load(dir) 加载模型
    并行化,一般是 CPU 进行数据处理才会用到
  • torch.get_num_threads(): 获得用于并行化的 CPU 操作的OpenMP 线程数。
  • torch.set_num_threads(int) : 设定用于 CPU 并行操作的OpenMP线程数。

OpenMP:跨平台共享内存并行编程的API,旨在通过简单的注释将代码并行化,充分使用多核处理器,无需管理线程。

##Tensor on GPU
  数据计算可以使用 GPU 和 CPU,我们可以使用 to 来进行两者之间的切换。一般我而言,我们经常使用 CPU 进行数据处理,使用 GPU 进行模型训练。
伪代码:

if torch.cuda.is_available():device = torch.device('cuda')  # GPUy = torch.ones_like(x,device=device)x = x.to(device) # 等价于 .to("cuda")z = x+yprint(x)print(z.to("cpu",torch.double)) # to 还可以更改数据类型

Tensor 的相关配置

  • torch.is_tensor() # 是 pytorch 中的Tensor类型,返回 true
  • torch.is_storage() # storage 类型返回 true
  • torch.set_flush_denormal(model) # 防止一些不正常的元素出现
  • torch.set_default_dtype(d) # 对torch.tensor()设置默认的类型
  • torch.printoptions(precision = None, threshold = None,edgeitems = None, linewidth = None,profile = None) # 打印参数的设置

pytorch 与 numpy 相互转化

  • torch.from_numpy(ndarry)
  • a.numpy()
import numpy
import torch
import numpy as npa = numpy.zeros([2,2])
print("a 的内容:",a)
b = torch.from_numpy(a)
print("b 的内容:",b)

  这串代码使用numpy创建了一个张量,然后使用 torch.from_numpy(a) 转化成 torch 中的tensor张量。实际上,numpy 的操作与 torch 很相似,torch 很多功能都是向着 numpy 靠。我们可以使用OpenCV来读取一张图片,然后将它转化成一个张量,进行处理。读取的数据就是 numpy 格式的数据。

二、实例:读取一张图片

import numpy
import torch
import cv2img = cv2.imread("0197.jpg")
# 创建可调整大小的窗口
cv2.namedWindow("Resizable Window", cv2.WINDOW_NORMAL)  # 控制打印的大小
cv2.imshow("Resizable Window", img)      # 控制打印窗口大小img_data = torch.from_numpy(img)
print(img)
print(img_data)# 进行图片的反转
out = torch.flip(img_data,dims=[0])
out = out.numpy()                   # 一定要转化成numpy 才可以绘图
cv2.namedWindow("Resizable Window1", cv2.WINDOW_NORMAL)  # 控制打印的大小
cv2.imshow("Resizable Window1", out)      # 控制打印窗口大小
cv2.waitKey(0)

  这里需要我们添加一个模块:

pip install opencv-python

通过cv2读入数据,此时的数据类型是 numpy 类型,可以通过这两句代码展示出来,一般窗口很大,这两串代码可以控制窗口大小,双引号是自由命名,后面的 out 是图片数据。

cv2.namedWindow("Resizable Window1", cv2.WINDOW_NORMAL) # 控制打印的大小
cv2.imshow("Resizable Window1", out) # 控制打印窗口大小

图片 1 展示了numpy 格式的数据类型,至于转化后的 tensor就省略了。tensor数据并不能直接绘图,所以要使用 .numpy() 转化成numpy数据才能绘图。在此之前,我们使用torch.flip(数据,纬度数组) 进行数据反转处理,输出的结果如 图 2 所示。

图 1 numpy 格式
图 2 图片旋转对比

最后的鸣谢,暑假将至,我在我弟(以工作)这边度过了一段独属于我的成长时光。成年人也会添麻烦,我给他带来了不少麻烦,在这里,如果我的文章对大家有帮助,请大家帮我进一下我弟弟创业的小铺,买不买都无所谓,感谢大家阅读鄙人的文章和进入小店祝大家生活愉快。

相关文章:

  • PyTorch:让深度学习像搭积木一样简单有趣!
  • 通过Docker和内网穿透技术在Linux上搭建远程Logseq笔记系统
  • GlusterFS 分布式文件系统深度解析
  • Linux操作系统故障排查案例实战
  • 大数据服务器和普通服务器之间的区别
  • MySQL 三表 JOIN 执行机制深度解析
  • Linux-进程间的通信
  • 2025年智慧城市与管理工程国际会议(ICSCME 2025)
  • RAG文档解析难点3:Excel多层表头的智能解析与查询方法
  • gitHub hexo 个人博客升级版
  • 数据淘金时代:公开爬取如何避开法律雷区?
  • 【多线程初阶】详解线程池(下)
  • 【技术追踪】纵向 MRI 生成和弥漫性胶质瘤生长预测的治疗感知扩散概率模型(TMI-2025)
  • LCA最近公共祖先问题详解
  • 有多少小于当前数字的数字
  • SpringBoot 前后台交互 -- CRUD
  • Anaconda 迁移搭建完成的 conda 环境到另一台设备
  • 《Ansys SIPI仿真技术笔记》 E-desk IBIS模型导入
  • Hive面试题汇总
  • 树莓派超全系列教程文档--(64)rpicam-apps可用选项介绍之相机控制选项
  • 网络工程师可以从事什么工作/霸屏seo服务
  • 做公司网站应准备什么材料/专业提升关键词排名工具
  • wordpress随机图片/萧山seo
  • 超低价的郑州网站建设/百度空间登录入口
  • 现在中型公司做网站用的是什么框架/自动交换友情链接
  • 深圳分销网站建设/网站优化外包费用