pytorch基础教程(目标检测)

article/2025/10/19 16:02:40

文章目录

    • 1 python ;两大法宝函数
    • 2 加载数据
    • 3 TensorBoard 的使用
    • 4 transforms的使用
    • 5 torchvision中的数据集使用
    • 6 dataloader的使用
    • 7 卷积操作
    • 8 卷积层
    • 9 最大池化
    • 10 非线性激活
    • 11 线性层
    • 12 Sequential的使用
    • 13 损失函数
    • 14 优化器
    • 15 现有网络模型的使用及修改
    • 16 网络模型的保存及读取
    • 17 完整的模型训练套路
    • 18 利用gpu训练
    • 19 完整的模型验证套路

1 python ;两大法宝函数

dir(): 打开,看见

helo(): 说明书

使用python控制台运行

import torch
tourch.cuda.is_available()
dir(torch)
dir(torch.cuda)
dir(torch.cuda.is_available)
help(torch.cuda.is_available())

命令行输入:jupyter notebook打开jupyter

2 加载数据

import os.pathfrom torch.utils.data import Dataset
from PIL import Imageclass MyData(Dataset):def __init__(self, root_dir, label_dir):self.root_dir = root_dirself.label_dir = label_dirself.path = os.path.join(self.root_dir, self.label_dir)   //路径拼接//图像路径数组self.img_path = os.listdir(self.path)def __getitem__(self, idx):img_name = self.img_path[idx]img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)img = Image.open(img_item_path)label = self.label_dirreturn img, labeldef __len__(self):return len(self.img_path)root_dir = 'hymenoptera_data/train'
ants_label_dir = 'ants'
bees_label_dir = 'bees'bees_dataset= MyData(root_dir,bees_label_dir)
ants_dataset = MyData(root_dir, ants_label_dir)
train_dataset=ants_dataset+bees_dataset

3 TensorBoard 的使用

from torch.utils.tensorboard import SummaryWriterwriter=SummaryWriter("logs")for i in range(100):writer.add_scalar("y=x", i, i)writer.close()

使用查看图像

tensorboard  --logdir=logs  # --port=6007 更换端口号

显示图像

from torch.utils.tensorboard import SummaryWriter
import  numpy as np
from PIL import  Imagewriter=SummaryWriter("logs")
image_path= "hymenoptera_data/train/bees/85112639_6e860b0469.jpg"
# 打开图像,转换类型
img_PIL=Image.open(image_path)
img_array=np.array(img_PIL)print(type(img_array))
# 图像大小
print(img_array.shape)
# 默认格式是CHW ,转换格式   1 可以显示多少图片
writer.add_image("test",img_array,1,dataformats="HWC")writer.close()

4 transforms的使用

from PIL import Image
from torch.utils.tensorboard import SummaryWriterfrom torchvision import transformsimg_path="hymenoptera_data/train/ants/175998972.jpg"
img=Image.open(img_path)writer=SummaryWriter("logs")print(img)
# 1. 如何使用transforms
# 创建对象,加载图片
tensor_trans= transforms.ToTensor()
tensor_img=tensor_trans(img)# tensorboard 加载
writer.add_image("Tensor_img",tensor_img)print(tensor_img)
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transformswriter = SummaryWriter('logs')
img = Image.open("hymenoptera_data/train/ants/kurokusa.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, 5, 0.5], [9, 0.5, 0.5])
img_norm = trans_norm(img_tensor)
print((img_tensor[0][0][0]))
writer.add_image("Normalize", img_norm, 2)# Resize
print(img.size)
transforms_resize = transforms.Resize((512, 512))
resize_img = transforms_resize(img)
resize_img = trans_totensor(resize_img)
writer.add_image("Resize", resize_img, 0)
print(resize_img)# Compose
trans_resize2 = transforms.Resize(512)
transforms_compose = transforms.Compose([trans_resize2, trans_totensor])
resize_img2 = transforms_compose(img)
writer.add_image("Resize", resize_img2, 1)# RandomCrop
trans_random = transforms.RandomCrop(500, 1000)
trans_compose2 = transforms.Compose([trans_random, trans_totensor])
for i in range(10):img_crop = trans_compose2(img)writer.add_image("RandomCrop", img_crop, i)writer.close()

5 torchvision中的数据集使用

import torchvision
from tensorboardX import SummaryWriter# 数据集转化成ToTensor
dataset_transform=torchvision.transforms.Compose([torchvision.transforms.ToTensor()
])# S = torchvision.datasets.SBDataset("./dataset", "train", "boundaries", True)# 添加transform=dataset_transform
train_set = torchvision.datasets.CIFAR10(root="./dataset",train=True,transform=dataset_transform,download=True)
test_set = torchvision.datasets.CIFAR10(root="./dataset",train=False,transform=dataset_transform,download=True)# print(test_set[0])
# print(test_set.classes)
#
# img, target=test_set[0]
# print(img)
# print(target)
# print(test_set.classes[target])
# img.show()
# print(test_set[0])writer=SummaryWriter("p10")
# 图片加载
for i in range(10):img,target=test_set[i]writer.add_image("test_set",img,i)writer.close()

6 dataloader的使用

import torchvision
from tensorboardX import SummaryWriter
from torch.utils.data import DataLoadertest_data=torchvision.datasets.CIFAR10("dataset",False,torchvision.transforms.ToTensor())test_loader=DataLoader(dataset=test_data,batch_size=4,shuffle=False,num_workers=0,drop_last=True)# 测试数据集的图片
img,target=test_data[0]
print(img.shape)
print(target)writer=SummaryWriter("dataloader")
for epoch in range(2):step=0for data in test_loader:imgs, target=datawriter.add_images("Epoch:{}".format(epoch),imgs,step)step=step+1writer.close()

7 卷积操作

import torch
import torch.nn.functional as Finput =torch.tensor([[1,2,0,3,1],[0,1,2,3,2],[1,2,1,0,0],[5,2,3,1,1],[2,1,0,1,1]])kernel=torch.tensor([[1,2,1],[0,1,0],[2,1,0]])# 卷积就是使用3X3 矩阵剩 5X5 矩阵  3X3 不断在5X5的上面移动最后得出3x3的矩阵
# 1x1 2x2 1x0 0x0 1x1 2x0 2x5 1x2 3x1 = 21  3X3左移再剩input =torch.reshape(input,(1,1,5,5))  # batchsize  channel  
kernel=torch.reshape(kernel,(1,1,3,3))print(input.shape)
print(kernel.shape)output=F.conv2d(input,kernel,stride=1,padding=1)
# stride 步长     padding=1 上下左右都填充的一行 
print(output)

8 卷积层

dilation 就是空洞卷积 ,隔一个元素再乘

dataset = torchvision.datasets.CIFAR10("../data", train=False, transform=torchvision.transforms.ToTensor(),download=True)
dataloader = DataLoader(dataset, batch_size=64)class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.conv1 = Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1, padding=0)
# 多少个卷积核就有多少个输入通道def forward(self, x):x = self.conv1(x)return xtudui = Tudui()writer = SummaryWriter("../logs")step = 0
for data in dataloader:imgs, targets = dataoutput = tudui(imgs)print(imgs.shape)print(output.shape)# torch.Size([64, 3, 32, 32])writer.add_images("input", imgs, step)# 6 通道的卷积核不能展示图片 需要用rehsape 转换# torch.Size([64, 6, 30, 30])  -> [xxx, 3, 30, 30]output = torch.reshape(output, (-1, 3, 30, 30))  #-1代替sizewriter.add_images("output", output, step)step = step + 1

9 最大池化

最大池化操作, 3X3 的池化核就是在3x3里选择最大的元素

目的是保留输入特征,数据量减少

dataset = torchvision.datasets.CIFAR10("../data", train=False, download=True,transform=torchvision.transforms.ToTensor())dataloader = DataLoader(dataset, batch_size=64)class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.maxpool1 = MaxPool2d(kernel_size=3, ceil_mode=False)  // 不足池化数,是否保留池化def forward(self, input):output = self.maxpool1(input)return outputtudui = Tudui()writer = SummaryWriter("../logs_maxpool")
step = 0for data in dataloader:imgs, targets = datawriter.add_images("input", imgs, step)output = tudui(imgs)writer.add_images("output", output, step)step = step + 1writer.close()

10 非线性激活

input = torch.tensor([[1, -11],[-3, 99]])input = torch.reshape(input, (-1, 1, 2, 2))
print(input)
print(input.shape)relu = ReLU()
print(relu(input))dataset = torchvision.datasets.CIFAR10("dataset", False, torchvision.transforms.ToTensor(), download=True)
dataloader = DataLoader(dataset, batch_size=64)class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.relu1 = ReLU()self.sigmoid1=Sigmoid()def forward(self, input):output = self.sigmoid1(input)return outputtudui = Tudui()writer = SummaryWriter("logs_relu")
step = 0for data in dataloader:imgs, targets = datawriter.add_images("input", imgs, global_step=step)output = tudui(imgs)writer.add_images("output", output, step)step += 1writer.close()

11 线性层

dataset = torchvision.datasets.CIFAR10("../data", train=False, transform=torchvision.transforms.ToTensor(),download=True)dataloader = DataLoader(dataset, batch_size=64)class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.linear1 = Linear(196608, 10)def forward(self, input):output = self.linear1(input)return outputtudui = Tudui()for data in dataloader:imgs, targets = dataprint(imgs.shape)output = torch.flatten(imgs)print(output.shape)output = tudui(output)print(output.shape)

12 Sequential的使用

在这里插入图片描述

class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.model1=Sequential(Conv2d(3,32,5,padding=2),MaxPool2d(2),Conv2d(32,32,5,padding=2),MaxPool2d(2),Conv2d(32,64,5,padding=2),MaxPool2d(2),Flatten(),Linear(1024,64),Linear(64,10))def forward(self,x):x=self.model1(x)return xtudui = Tudui()
print(tudui)
input=torch.ones((64,3,32,32))
output=tudui(input)
print(output)writer=SummaryWriter("log_seq")
# 网络结构图可视化
writer.add_graph(tudui,input)
writer.close()

13 损失函数

L1Loss 是 (1-1 + 2-2 + 5-3 )/ 3=0.667

MSE= (0+0+2^2)=1.333

CrossEntropyLoss

在这里插入图片描述

inputs = torch.tensor([1, 2, 3], dtype=torch.float32)
targets = torch.tensor([1, 2, 5], dtype=torch.float32)inputs = torch.reshape(inputs, (1, 1, 1, 3))
targets = torch.reshape(targets, (1, 1, 1, 3))
#差的和
loss = L1Loss(reduction='sum')
result = loss(inputs, targets)
#方差的和/个数
loss_mse = nn.MSELoss()
result_mse = loss_mse(inputs, targets)print(result)
print(result_mse)x = torch.tensor([0.1, 0.2, 0.3])
y = torch.tensor([1])
x = torch.reshape(x, (1, 3))
loss_cross = nn.CrossEntropyLoss()
result_cross = loss_cross(x, y)
print(result_cross)

dataset=torchvision.datasets.CIFAR10("dataset",False,torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(dataset,batch_size=1)class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.model1=Sequential(Conv2d(3,32,5,padding=2),MaxPool2d(2),Conv2d(32,32,5,padding=2),MaxPool2d(2),Conv2d(32,64,5,padding=2),MaxPool2d(2),Flatten(),Linear(1024,64),Linear(64,10))def forward(self,x):x=self.model1(x)return xloss=nn.CrossEntropyLoss()
tudui = Tudui()
for data in dataloader:imgs,targets=dataoutput=tudui(imgs)print(output)print(targets)result_loss=loss(output,targets)result_loss.backward()print(result_loss)

14 优化器

dataset=torchvision.datasets.CIFAR10("dataset",False,torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(dataset,batch_size=1)class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.model1=Sequential(Conv2d(3,32,5,padding=2),MaxPool2d(2),Conv2d(32,32,5,padding=2),MaxPool2d(2),Conv2d(32,64,5,padding=2),MaxPool2d(2),Flatten(),Linear(1024,64),Linear(64,10))def forward(self,x):x=self.model1(x)return xloss=nn.CrossEntropyLoss()
tudui=Tudui()
optim=torch.optim.SGD(tudui.parameters(),lr=0.01)for epoch in range(20):running_loss=0.0for data in dataloader:imgs,targets=dataoutputs=tudui(imgs)result_loss=loss(outputs,targets)optim.zero_grad()result_loss.backward()optim.step()# print(result)running_loss=running_loss+result_lossprint(running_loss)

15 现有网络模型的使用及修改

vgg16_false = torchvision.models.vgg16(pretrained=False)
vgg16_true = torchvision.models.vgg16(pretrained=True)print(vgg16_true)train_data = torchvision.datasets.CIFAR10('../data', train=True, transform=torchvision.transforms.ToTensor(),download=True)
# 增加线性层
vgg16_true.classifier.add_module('add_linear', nn.Linear(1000, 10))
print(vgg16_true)print(vgg16_false)
vgg16_false.classifier[6] = nn.Linear(4096, 10)
print(vgg16_false)

16 网络模型的保存及读取

保存

vgg16 = torchvision.models.vgg16(pretrained=False)
# 保存方式1,模型结构+模型参数
torch.save(vgg16, "vgg16_method1.pth")# 保存方式2,模型参数(官方推荐)
torch.save(vgg16.state_dict(), "vgg16_method2.pth")# 陷阱
class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.conv1 = nn.Conv2d(3, 64, kernel_size=3)def forward(self, x):x = self.conv1(x)return xtudui = Tudui()
torch.save(tudui, "tudui_method1.pth")

读取

#model1
model=torch.load("vgg16_method1.pth")
# print(model)# model2
# model=torch.load("vgg16_method2.pth")
# print(model)
vgg16=torchvision.models.vgg16(pretrained=False).load_state_dict(torch.load("vgg16_method2.pth"))
# print(vgg16)# 陷阱 还是需要写出class Tudui 类,但是不需要创建了,用来确保确实是这个类
class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.conv1=nn.Conv2d(3,64,kernel_size=3)def forward(self):x=self.conv1(x)return xmodel_tudui=torch.load("tudui_method1.pth")
# print(model_tudui)# 方法2只能load出字典,vgg16方法用不了
model_tudui2=torch.load("tudui_method2.pth")
print(model_tudui2)

17 完整的模型训练套路

import torch.nn
import torchvision
from tensorboardX import SummaryWriter
from torch import nn
from torch.utils.data import DataLoader
# from  model import *
import  timedevice=torch.device("cuda")
train_data= torchvision.datasets.CIFAR10(root="dataset",train=True,transform= torchvision.transforms.ToTensor(), download=True)
test_data=torchvision.datasets.CIFAR10(root="dataset",train=False,transform=torchvision.transforms.ToTensor(),download=True)train_data_size=len(train_data)
test_data_size=len(test_data)
print("训练数据集的长度为:{}".format(train_data_size))
print("测试数据集的长度为:{}".format(test_data_size))#加载数据集
train_dataloader=DataLoader(train_data,batch_size=64)
test_dataloader=DataLoader(test_data,batch_size=64)class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.model=nn.Sequential(nn.Conv2d(3,32,5,1,2),nn.MaxPool2d(2),nn.Conv2d(32,32,5,1,2),nn.MaxPool2d(2),nn.Conv2d(32,64,5,1,2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(1024,64),nn.Linear(64,10))def forward(self,x):x=self.model(x)return x# 创建网络模型
tudui=Tudui()# # 这种判断方法全部都要加
# if torch.cuda.is_available():
#     tudui = tudui.cuda()
tudui=tudui.to(device)
# 损失函数
loss_fn=nn.CrossEntropyLoss()
loss_fn = loss_fn.to(device)# 优化器
# learing_rate=0.01
learing_rate=1e-2
optimizer=torch.optim.SGD(tudui.parameters(),lr=learing_rate)# 设置训练网络的一些参数
# 训练的次数
total_train_step=0
# 测试的次数
total_test_step=0
# 训练的轮数
epoch=10# 添加tensorboard
writer=SummaryWriter("logs_train")start_time=time.time()
for i in  range(epoch):print("第{}轮训练开始".format(i+1))# 训练步骤开始tudui.train()for data in train_dataloader:imgs,targets=dataimgs = imgs.to(device)targets=targets.to(device)outputs=tudui(imgs)loss=loss_fn(outputs,targets)# 优化器优化模型optimizer.zero_grad()loss.backward()optimizer.step()total_train_step=total_train_step+1if total_train_step % 100==0:end_time=time.time()print(end_time-start_time)print("训练次数:{},loss: {}".format(total_train_step,loss.item()))writer.add_scalar("train_loss",loss.item(),total_train_step)# 测试开始tudui.eval()total_test_loss=0#整体正确个数total_accuracy=0with torch.no_grad():for data in test_dataloader:imgs,targets=dataimgs = imgs.to(device)targets = targets.to(device)outputs=tudui(imgs)loss=loss_fn(outputs,targets)total_test_loss=total_test_loss+lossaccuracy=(outputs.argmax(1)==targets).sum()total_accuracy=total_accuracy+accuracyprint("整体测试集上的loss:{}".format(total_test_loss))print("整体测试集的正确率:{}".format(total_accuracy/test_data_size))writer.add_scalar("test_loss",total_test_loss,total_test_step)writer.add_scalar("test_accuracy",total_accuracy/test_data_size,total_test_step)total_test_step=total_test_step+1torch.save(tudui,"tudui_{}.pth".format(i))print("模型已保存")writer.close()

18 利用gpu训练

# 创建网络模型
tudui=Tudui()
# 这种判断方法全部都要加
if torch.cuda.is_available():tudui = tudui.cuda()# 损失函数
loss_fn=nn.CrossEntropyLoss()
loss_fn = loss_fn.cuda()# 训练步骤开始tudui.train()for data in train_dataloader:imgs,targets=dataimgs = imgs.cuda()targets=targets.cuda()

利用gpu方式二:

device=torch.device("cuda")# 创建网络模型
tudui=Tudui()tudui=tudui.to(device)
loss_fn = loss_fn.to(device)

19 完整的模型验证套路

img_path="img_1.png"
img=Image.open(img_path)
print(img)
img = img.convert('RGB')transform=torchvision.transforms.Compose([torchvision.transforms.Resize((32,32)),torchvision.transforms.ToTensor()])
img=transform(img)
print(img.shape)class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.model=nn.Sequential(nn.Conv2d(3,32,5,1,2),nn.MaxPool2d(2),nn.Conv2d(32,32,5,1,2),nn.MaxPool2d(2),nn.Conv2d(32,64,5,1,2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(1024,64),nn.Linear(64,10))def forward(self,x):x=self.model(x)return x# model = torch.load("tudui_2.pth",map_location=torch.device('cpu'))
model = torch.load("tudui_1.pth")
print(model)
image=torch.reshape(img,(1,3,32,32))
model.eval()
with torch.no_grad():output=model(image)
print(output)print(output.argmax(1))

参考视频:PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】


http://chatgpt.dhexx.cn/article/7AlJr7e4.shtml

相关文章

总结 | 深度学习之Pytorch入门教程

目录 一、整体学习的建议 1.1 如何成为Pytorch大神? 1.2 如何读Github代码? 1.3 代码能力太弱怎么办? 二、Pytorch与TensorFlow概述 2.1 什么是Pytorch? 2.1.1 Pytorch两个核心模块 2.1.2 Pytorch可视化:Visdom 2.1.3 Pyt…

面向Windows的Pytorch完整安装教程

目录 1. 概述 2. 安装 2.1 安装cuda 2.2 安装cudnn 2.3 安装Pytoch 2.4 验证 1. 概述 PyTorch是一个开源的Python机器学习库,其前身是著名的机器学习库Torch。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyT…

pytorch新手自学教程(一)

Pytorch详细新手自学教程(一) 前言Tensor(张量)Variable (变量) 前言 本教程参考书籍《深度学习入门之pytorch》 -----关于pytorch的优点这里不再说明,毕竟现在的主流仍然是TensorFlow。 1、环境配置可到pytorch官网搜索下载包的pip或conda指…

GPU版本安装Pytorch教程最新方法

目录 步骤 第一步:安装 Anaconda 和 Pycharm 软件 第二步:下载安装CUDA11.3 (1)首先查看自己电脑GPU版本 方式一:搜索框输入nvidia,打开nvidia控制面板 方式二:winR打开cmd,输…

pytorch官方教程中文版(一)PyTorch介绍

pytorch编程环境是1.9.1cu10.2 建议有能力的直接看官方网站英文版! 下面所示是本次教程的主要目录: pytorch官方教程中文版: PyTorch介绍学习PyTorch图像和视频声音文本强化学习在生产环境中部署PyTorch模型使用FX重构代码前端API扩展PyT…

【PyTorch入门教程】1. 基础知识

欢迎关注 【LearnOpenCV: PyTorch入门教程】 PyTorch入门:Ch1 基础知识 PyTorch入门:[Ch2 使用预训练模型进行图像分类] PyTorch入门:[Ch3 使用迁移学习进行图像分类] PyTorch入门:[Ch4 使用ONNX和Caffe2进行模型推理] PyTorch入门…

PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】笔记

PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】笔记 教程与代码地址P1 PyTorch环境的配置及安装(Configuration and Installation of PyTorch)【PyTorch教程】P2 Python编辑器的选择、安装及配置(PyCharm、Jup…

【超详细】Pytorch 入门教程(一)

Pytorch基本语法 1 认识Pytorch2 Pytorch的基本元素操作3 Pytorch的基本运算操作4 关于Torch Tensor和Numpy array之间的相互转换5 总结1 认识Pytorch 什么是Pytorch? Pytorch是一个基于Numpy的科学计算包, 向它的使用者提供了两大功能. 作为Numpy的替代者, 向用户提供使用GPU…

PyTorch安装教程(带图文)

文章目录 1.准备工作2.安装pytorch3.检验4.总结 前言 上一篇文章讲解了如何安装Anaconda,现在来安装pytorch,安装好工具就可以好好学习了。 1.准备工作 由于我安装anaconda时选择了最新版的,它默认安装了最新版python 3.8.5版本,我看网上大多数博主推荐…

Pytorch安装教程(最全最详细版)

目录 概述安装一、CUDA 安装(一)CUDA 概述(二)安装 二、Anaconda 安装三、Pytorch安装(一)GPU版本安装方法一方法二 (二)CPU版本安装 概述 PyTorch是一个开源的深度学习框架&#x…

pytorch安装教程新手入门

PyTorch环境搭建 引言 PyTorch是一个开源的Python机器学习库,其前身是2002年诞生于纽约大学的Torch。它是美国Facebook公司使用python语言开发的一个深度学习的框架,2017年1月,Facebook人工智能研究院(FAIR)在GitHub…

pytorch安装教程

大家好,今天我根据我在安装Pytorch过程中遇到的问题,来分享一下我安装Pythorch的经验。 安装pytorch大概可以分成下列四个步骤 先来了解一下什么是 Anacond。 Anacond就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本…

pytorch基础入门教程/一小时学会pytorch

Pytorch一小时入门教程 前言 机器学习的门槛并没有想象中那么高,我会陆续把我在学习过程中看过的一些文章和写过的代码以博客的形式分享给大家,和大家一起交流,这个是本系列的第一篇,pytoch入门教程,翻译自pytoch官方…

2023最新pytorch安装教程,简单易懂,面向初学者(Anaconda+GPU)

一、前言 目前是2023.1.27,鉴于本人安装过程中踩得坑,安装之前我先给即将安装pytorch的各位提个醒,有以下几点需要注意 1.判断自己电脑是否有GPU 注意这点很重要,本教程面向有NVIDA显卡的电脑,如果你的电脑没有GPU或者使用AMD显…

pytorch超级详细的安装教程

pytorch超级详细的安装教程 第一次安装的时候安装了差不多有一整天,还安装失败了。这次安装的速度很快。 首先是Anaconda的下载,我用的是上学期学python的时候老师之前给的安装包,很快就安装好了,或者去官网去下载Anaconda也挺快…

超详细的的PyTorch安装教程,成功率高,适合初学者,亲测可用。

啰嗦几句:网上的教程很多,安装的方法多种多样,操作复杂,成功率还不高。小编在淘宝专门帮助不会安装的小伙伴远程配置环境,这方法都是测试过了,适用大部分人的,完全按照文章来操作,基…

pytorch官方教程(详细版)

由于在写DQN代码时发现对细节不够了解,因此又详细学习了一下pytorch相关内容,以下内容来自官网教程,此前的pytorch笔记: pytorch训练分类器 pytorch基础入门 pytorch实现CartPole-v1任务的DQN代码 (一)Da…

Pytorch速成教程(一)整体流程

目录 0 简介 1 张量的概念和生成 2 自动微分 2.1 Tensor类 2.2 梯度 3 神经网络 3.1 定义网络 3.2 查看模型参数 3.3 测试网络 3.4 损失函数更新权重 4 训练分类器 4.1 数据处理生成Dataload 4.2 定义卷积网络 4.3 定义损失函数 4.4 遍历DataLoader进行训练 4.5 …

PyTorch详细教程

一、参考资料 PyTorch中文文档 PyTorch官方文档 PyTorch官方源码:GitHub - pytorch/pytorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration PyTorch 中文教程 & 文档 二、分布式训练 pytorch set_epoch()方法 在分布式模…

PyTorch深度学习快速入门教程(绝对通俗易懂!!!)

文章目录 一、PyTorch环境的配置及安装二、Pycharm、jupyter的安装1. Pycharm2.jupyter 三、Python学习中的两大法宝函数(help、dir)四、加载数据(Dataset)五、TensorBorad的使用六、Transformer1.compose2.toTensor3.Normalize4.…