深度学习-01 Pytorch
PyTorch是一个开源的机器学习框架,它提供了一个灵活的高级接口,可以帮助开发者构建神经网络模型以及进行深度学习的训练和推理。PyTorch基于Torch库和Lua编程语言开发而来,但在PyTorch中使用Python作为主要编程语言。PyTorch的设计目标是简单易用、灵活性强,并且可以提供高性能的计算。它的核心特点包括:
1.动态图计算:PyTorch使用动态图计算方式,这意味着在编写代码时可以直接操作和修改计算图,而不需要预先定义静态图。
2.自动求导:PyTorch能够自动计算张量的导数,这对于训练神经网络模型非常重要。开发者可以使用autograd模块轻松地定义和计算导数。
3.强大的GPU加速:PyTorch支持使用GPU进行计算,可以充分发挥GPU在深度学习任务中的性能优势。开发者可以通过简单的代码更改,将计算转移到GPU上。
4.大型社区支持:PyTorch拥有一个庞大的用户社区,有许多开发者不断贡献新的功能和工具,以及解决问题和提供支持。
5.深度学习框架的完整功能:PyTorch提供了许多用于构建和训练深度学习模型的工具和功能,如各种层、优化算法和损失函数等。
本地解释器位置: D:\deeplearning\anaconda3\envs\pytorch\python.exe
Tensboard是一个用于可视化和分析深度学习模型训练过程中中间结果的工具。它是TensorBoard的一个扩展,可用于PyTorch和TensorFlow模型。
1.Tensboard为我们提供了一个交互式的界面,可以帮助我们更好地理解我们的模型如何学习和改进。它可以显示训练过程中的损失函数变化、模型准确率、学习率等指标的趋势图。此外,Tensboard还提供了可视化工具,可以显示模型中的权重、梯度和激活值的分布情况,帮助我们分析模型的表现和瓶颈。
2.使用Tensboard非常简单,只需在代码中添加几行代码,就可以将关键的训练指标和中间结果保存到日志文件中。然后,我们可以在Tensboard界面上加载这些日志文件,即可查看模型训练的详细信息和可视化结果。
tensorboard --logdir=logs //打开 tensorboard生成的logs下的文件
Transforms是PyTorch中的一个重要模块,用于数据预处理和数据增强。它提供了多种常用的转换函数,可以对图像、文本、张量等进行各种操作。
在PyTorch中,数据预处理通常是在数据加载之前进行的。通过使用transforms模块,可以对原始数据进行多种操作,如缩放、裁剪、旋转、翻转、标准化等,以便更好地适应模型的训练要求。同时,transforms还可以用于数据增强,通过随机变换数据的方式来扩充训练集,提高模型的泛化能力。
tensor_trans=transforms.ToTensor() #声明一个转换tensor类型的工具
tensor_img=tensor_trans(img) #转换图片类型#一些例子
from PIL import Image
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter
from torchvision.transforms import Resizewriter=SummaryWriter("logs")
img=Image.open("hymenoptera_data/train/bees/39747887_42df2855ee.jpg")
print(img)# ToTensor
trans_totensor=transforms.ToTensor()
img_tensor=trans_totensor(img)
writer.add_image("ToTensor",img_tensor)# Normalize
print(img_tensor[0][0][0])
trans_norm=transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
img_norm=trans_norm(img_tensor)
print(img_norm[0][0][0])
writer.add_image("Normlize",img_norm)# Resize
print(img.size)
trans_resize=transforms.Resize((512,512))
# img PIL->resize->img_resize PIL
img_resize=trans_resize(img)
# img_resize PIL->totensor->img_resize tensor
img_resize=trans_totensor(img_resize)
writer.add_image("Resize",img_resize)
print(img_resize)# Compose - resize - 2
#还有很多方法。。。。。。writer.close()