系列文章目录
文章目录
- 系列文章目录
- 一、模型的保存与加载
-
- [Tensor 的相关配置](#Tensor 的相关配置)
- [pytorch 与 numpy 相互转化](#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 进行模型训练。
伪代码:
python
if torch.cuda.is_available():
device = torch.device('cuda') # GPU
y = torch.ones_like(x,device=device)
x = x.to(device) # 等价于 .to("cuda")
z = x+y
print(x)
print(z.to("cpu",torch.double)) # to 还可以更改数据类型
Tensor 的相关配置
torch.is_tensor()
# 是 pytorch 中的Tensor类型,返回 truetorch.is_storage()
# storage 类型返回 truetorch.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()
python
import numpy
import torch
import numpy as np
a = 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 格式的数据。
二、实例:读取一张图片
python
import numpy
import torch
import cv2
img = 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 图片旋转对比
最后的鸣谢,暑假将至,我在我弟(以工作)这边度过了一段独属于我的成长时光。成年人也会添麻烦,我给他带来了不少麻烦,在这里,如果我的文章对大家有帮助,请大家帮我进一下我弟弟创业的小铺,买不买都无所谓,感谢大家阅读鄙人的文章和进入小店祝大家生活愉快。