网站的新闻栏与产品栏如何做九亭做网站
- 作者: 五速梦信息网
- 时间: 2026年04月20日 08:11
当前位置: 首页 > news >正文
网站的新闻栏与产品栏如何做,九亭做网站,南山模板网站建设公司,权重高的发帖平台有哪些会搭建深度学习环境和依赖包安装
使用Anaconda创建环境、在pytorch官网安装pytorch、安装依赖包
会使用常见操作#xff0c;例如matmul#xff0c;sigmoid#xff0c;softmax#xff0c;relu#xff0c;linear
matmul操作见文章torch.matmul()的用法 sigmoid#xff0…会搭建深度学习环境和依赖包安装
使用Anaconda创建环境、在pytorch官网安装pytorch、安装依赖包
会使用常见操作例如matmulsigmoidsoftmaxrelulinear
matmul操作见文章torch.matmul()的用法 sigmoidsoftmaxrelu都是常用的激活函数linear是线性层
from torch import nnclass Network(nn.Module):def init(self):super().init()self.model nn.Sequential(nn.Sigmoid(),nn.Softmax(),nn.ReLU(),nn.Linear(1024, 64))datasetdataloader损失函数优化器的使用
datasetdataloader
官方文档是这么写的 当我们自定义一个dataset的时候需要继承Dataset重写getitem()方法也可以重写len()方法下面是一个例子我们的数据集存放成这种形式每一个image图片都对应一个相同名称的label文件如0013035.jpg和0013035.txt就分别是一个图片和它的label
import torchvision.transforms
from PIL import Image
from torch.utils.data import Dataset, DataLoaderclass MyData(Dataset):def init(self, root_dir, image_dir, label_dir):self.root_dir root_dirself.image_dir image_dirself.label_dir label_dirself.image_path os.path.join(self.root_dir, self.image_dir)self.label_path os.path.join(self.root_dir, self.label_dir)self.imgs os.listdir(self.image_path)self.labels os.listdir(self.label_path)def getitem(self, item):img_name self.imgs[item]img_item_path os.path.join(self.image_path, img_name)label_item_path os.path.join(self.label_path, self.convert_to_txt_path(img_name))img Image.open(img_item_path)with open(label_item_path, r) as f:label f.read().strip()return img, labeldef convert_to_txt_path(self, image_path):# 使用正则表达式匹配文件名中的点和扩展名并替换为.txtlabel_path re.sub(r.[^.]?\(, .txt, image_path)return label_pathdef __len__(self):return len(self.imgs)root_dir dataset/train
ants_image_dir ants_image
bees_image_dir bees_image
ants_label_dir ants_label
bees_label_dir bees_label
ants_dataset MyData(root_dir, ants_image_dir, ants_label_dir)
bees_dataset MyData(root_dir, bees_image_dir, bees_label_dir)train_dataset ants_dataset bees_datasetimg, target train_dataset[0]
transform torchvision.transforms.ToTensor()
print(transform(img).shape)
print(target)我们使用dataloader来读取这个数据集我们需要对jpg格式的dataset进行处理将其转换为相同大小的tensor再读取
import torchvision.transforms
from PIL import Image
from torch.utils.data import Dataset, DataLoaderclass MyData(Dataset):def __init__(self, root_dir, image_dir, label_dir):self.root_dir root_dirself.image_dir image_dirself.label_dir label_dirself.image_path os.path.join(self.root_dir, self.image_dir)self.label_path os.path.join(self.root_dir, self.label_dir)self.imgs os.listdir(self.image_path)self.labels os.listdir(self.label_path)def __getitem__(self, item):img_name self.imgs[item]img_item_path os.path.join(self.image_path, img_name)label_item_path os.path.join(self.label_path, self.convert_to_txt_path(img_name))img Image.open(img_item_path)transcompose torchvision.transforms.Compose([torchvision.transforms.Resize((300, 300)), torchvision.transforms.ToTensor()])img transcompose(img)with open(label_item_path, r) as f:label f.read().strip()return img, labeldef convert_to_txt_path(self, image_path):# 使用正则表达式匹配文件名中的点和扩展名并替换为.txtlabel_path re.sub(r\.[^.]?\), .txt, image_path)return label_pathdef len(self):return len(self.imgs)root_dir dataset/train
ants_image_dir ants_image
bees_image_dir bees_image
ants_label_dir ants_label
bees_label_dir bees_label
ants_dataset MyData(root_dir, ants_image_dir, ants_label_dir)
bees_dataset MyData(root_dir, bees_image_dir, bees_label_dir)train_dataset ants_dataset bees_datasetimg, target train_dataset[0]
print(img.shape)
print(target)train_dataloader DataLoader(train_dataset, batch_size64, drop_lastTrue)
for data in train_dataloader:try:imgs, target dataexcept Exception as e:print(f跳过异常文件: {e})使用公开数据集的示例如下
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter# 准备的测试数据集
test_data torchvision.datasets.CIFAR10(./dataset, trainFalse, transformtorchvision.transforms.ToTensor())test_loader DataLoader(test_data, batch_size64, shuffleTrue, num_workers0, drop_lastTrue)# 测试数据集中第一张图片及target
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, targets data# print(imgs.shape)# print(targets)writer.add_images(Epoch: {}.format(epoch), imgs, step)step step 1writer.close()损失函数
Loss的用法实际上就两行代码的事情以下是示例
import torch
from torch.nn import L1Loss, MSELoss
from torch import nninputs torch.tensor([1, 2, 3], dtypetorch.float)
targets torch.tensor([1, 2, 5], dtypetorch.float)inputs torch.reshape(inputs, (1, 1, 1, 3))
targets torch.reshape(targets, (1, 1, 1, 3))loss L1Loss(reductionsum)
result loss(inputs, targets)loss_mse 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)优化器
优化器的使用也很简单但要注意在每一步训练之前都需要用optim.zero_grad()将梯度置零避免梯度累加造成问题用loss.backward()得到梯度以后用optim.step()更新参数
import torch
import torchvision.datasets
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriterdataset torchvision.datasets.CIFAR10(./dataset, trainFalse, transformtorchvision.transforms.ToTensor(),downloadTrue)
dataloader DataLoader(dataset, batch_size1)class Network(nn.Module):def init(self):super().init()self.model1 Sequential(Conv2d(3, 32,5, padding2),MaxPool2d(2),Conv2d(32, 32,5, padding2),MaxPool2d(2),Conv2d(32, 64,5,padding2),MaxPool2d(2),Flatten(),Linear(1024, 64),Linear(64,10))def forward(self, x):x self.model1(x)return xloss nn.CrossEntropyLoss()
network Network()
optim torch.optim.SGD(network.parameters(), lr0.01)for epoch in range(20):running_loss 0.0for data in dataloader:imgs, targets dataoutputs network(imgs)result_loss loss(outputs, targets)optim.zero_grad()result_loss.backward()optim.step()running_loss running_loss result_lossprint(running_loss)gpu手写和预测一个模型
gpu写模型
这里采用to(device)的方式使用gpu对模型、损失函数和读数据部分使用to(device)调用gpu其他和cpu并无区别
import torch
import torchvision.datasets
from torch import nn
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
import time
from model import *# 定义训练的设备
device torch.device(cuda:0 if torch.cuda.is_available() else cpu)
准备数据集
train_data torchvision.datasets.CIFAR10(./dataset, trainTrue, transformtorchvision.transforms.ToTensor(),downloadTrue) test_data torchvision.datasets.CIFAR10(./dataset, trainFalse, transformtorchvision.transforms.ToTensor(),downloadTrue)# length train_data_size len(train_data) test_data_size len(test_data) print(训练数据集的长度为: {}.format(train_data_size)) print(f测试数据集的长度为: {test_data_size})# 利用 DataLoader 来加载数据集 train_dataloader DataLoader(train_data, batch_size64) test_dataloader DataLoader(test_data, batch_size64)# 创建网络模型
搭建神经网络
class Network(nn.Module):def init(self):super().init()self.model nn.Sequential(nn.Conv2d(3, 32, 5, padding2),nn.MaxPool2d(2),nn.Conv2d(32, 32, 5, padding2),nn.MaxPool2d(2),nn.Conv2d(32, 64, 5, 1, 2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(64*4*4, 64),nn.Linear(64, 10))def forward(self, x):x self.model(x)return xnetwork Network() network.to(device)# 损失函数 loss_fn nn.CrossEntropyLoss() loss_fn.to(device)# 优化器
learning_rate 0.01
learning_rate 1e-2 optimizer torch.optim.SGD(network.parameters(), lrlearning_rate)# 设置训练网络的一些参数
记录训练的次数
total_train_step 0
记录测试的次数
total_test_step 0
训练的轮数
epoch 30# 添加tensorboard writer SummaryWriter(logs_train) start_time time.time() for i in range(epoch):print(———–第 {} 轮训练开始———-.format(i1))# 训练步骤开始network.train()for data in train_dataloader:imgs, targets dataimgs imgs.to(device)targets targets.to(device)outputs network(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)# 测试步骤开始network.eval()total_test_loss 0total_accuracy 0with torch.no_grad():for data in test_dataloader:imgs, targets dataimgs imgs.to(device)targets targets.to(device)outputs network(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_teststep 1torch.save(network, network{}.pth.format(i))print(模型已保存)writer.close()gpu预测模型 把读取到的模型和数据用to(device)设置成gpu运行 import torch import torchvision.transforms from PIL import Image from torch import nn# 定义训练的设备 device torch.device(cuda:0 if torch.cuda.is_available() else cpu) img_path dog.png image Image.open(img_path) print(image)transform torchvision.transforms.Compose([torchvision.transforms.Resize((32, 32)),torchvision.transforms.ToTensor()]) image transform(image) print(image.shape)# 搭建神经网络 class Network(nn.Module):def init(self):super().init()self.model nn.Sequential(nn.Conv2d(3, 32, 5, padding2),nn.MaxPool2d(2),nn.Conv2d(32, 32, 5, padding2),nn.MaxPool2d(2),nn.Conv2d(32, 64, 5, 1, 2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(64*4*4, 64),nn.Linear(64, 10))def forward(self, x):x self.model(x)return xmodel torch.load(network_29.pth).to(device) print(model) image torch.reshape(image, (1, 3, 32, 32)) image image.to(device) model.eval() with torch.no_grad():output model(image) print(output)print(output.argmax(1))
- 上一篇: 网站的项目建设周期政协系统网站建设
- 下一篇: 网站的信任度东莞网站优化推广方案
相关文章
-
网站的项目建设周期政协系统网站建设
网站的项目建设周期政协系统网站建设
- 技术栈
- 2026年04月20日
-
网站的文本链接怎么做网络平台推广方法
网站的文本链接怎么做网络平台推广方法
- 技术栈
- 2026年04月20日
-
网站的微信推广怎么做WordPress降低加载时间
网站的微信推广怎么做WordPress降低加载时间
- 技术栈
- 2026年04月20日
-
网站的信任度东莞网站优化推广方案
网站的信任度东莞网站优化推广方案
- 技术栈
- 2026年04月20日
-
网站的形式有哪些泉州网站排名
网站的形式有哪些泉州网站排名
- 技术栈
- 2026年04月20日
-
网站的需求分析怎么写网站备案拍照好麻烦
网站的需求分析怎么写网站备案拍照好麻烦
- 技术栈
- 2026年04月20日






