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

网站开发流程中网站制作包括网站建设单位是什么意思

网站开发流程中网站制作包括,网站建设单位是什么意思,网站开发 系统需求文档,兰州seo优化传统pytorch工作流是首先定义模型框架#xff0c;然后写训练和验证#xff0c;测试循环代码。训练#xff0c;验证#xff0c;测试代码写起来比较繁琐。这里介绍使用pytorch lightning 部署模型#xff0c;加速模型训练和验证#xff0c;记录。 准备工作 1 安装pytorch…传统pytorch工作流是首先定义模型框架然后写训练和验证测试循环代码。训练验证测试代码写起来比较繁琐。这里介绍使用pytorch lightning 部署模型加速模型训练和验证记录。 准备工作 1 安装pytorch lightning 检查版本 $ conda create -n lightning python3.9 -y $ conda activate lightning import lightning as L import torchprint(Lightning version:, L.__version__) print(Torch version:, torch.__version__) print(CUDA is available:, torch.cuda.is_available()) 2 加载基本库函数 import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import lightning as L from torch.utils.data import DataLoader from torchvision import datasets, transforms from lightning.pytorch.callbacks import ModelCheckpoint from lightning.pytorch.loggers.tensorboard import TensorBoardLogger from lightning.pytorch.callbacks.early_stopping import EarlyStopping 3 设置随机种子可复现性 L.seed_everything(1121218) 4 数据集下载和增强变换 这里以CIFAR10数据集为例子该数据集包含 10 个类的 6 万张 32x32 彩色图像每个类 6000 张图像。 from torchvision import datasets, transforms# Load CIFAR-10 dataset train_dataset datasets.CIFAR10(root./data, trainTrue, downloadTrue, transformtransform_train ) val_dataset datasets.CIFAR10(root./data, trainFalse, downloadTrue, transformtransform_test ) # Data augmentation and normalization for training transform_train transforms.Compose([transforms.RandomCrop(32, padding4),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),], ) transform_test transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))] ) 上面的增强变换包括以下四种基本变换  裁剪需要指定图像大小在本例中为 32x32。水平翻转。转换为张量数据类型这是 PyTorch 所必需的。对图像的每个颜色通道进行归一化处理。 传统pytorch模型训练流 定义一个CNN模型 class CIFAR10CNN(nn.Module):def __init__(self):super(CIFAR10CNN, self).__init__()self.conv1 nn.Conv2d(3, 32, 3, padding1)self.conv2 nn.Conv2d(32, 64, 3, padding1)self.conv3 nn.Conv2d(64, 64, 3, padding1)self.pool nn.MaxPool2d(2, 2)self.fc1 nn.Linear(64 * 4 * 4, 512)self.fc2 nn.Linear(512, 10)def forward(self, x):x self.pool(torch.relu(self.conv1(x)))x self.pool(torch.relu(self.conv2(x)))x self.pool(torch.relu(self.conv3(x)))x x.view(-1, 64 * 4 * 4)x torch.relu(self.fc1(x))x self.fc2(x)return x 编写训练、验证循环代码 需要初始化模型损失函数和优化器管理模型和数据在机器上的运行CPU 与 GPU训练步骤前向传播、损失计算、反向传播和优化验证步骤计算准确性和损失tensorboard日志记录训练损失准确率其他相关指标记录等模型保存 # Initialize the model, loss function, and optimizer model CIFAR10CNN().to(device) criterion nn.CrossEntropyLoss() optimizer optim.Adam(model.parameters(), lrlearning_rate) scheduler optim.lr_scheduler.ReduceLROnPlateau(optimizer, modemin, factor0.1, patience5)# TensorBoard setup writer SummaryWriter(runs/cifar10_cnn_experiment)# Training loop total_step len(train_loader) for epoch in range(num_epochs):model.train()train_loss 0.0for i, (images, labels) in enumerate(train_loader):images images.to(device)labels labels.to(device)# Forward passoutputs model(images)loss criterion(outputs, labels)# Backward and optimizeoptimizer.zero_grad()loss.backward()optimizer.step()train_loss loss.item()if (i1) % 100 0:print(fEpoch [{epoch1}/{num_epochs}], Step [{i1}/{total_step}], Loss: {loss.item():.4f})# Calculate average training loss for the epochavg_train_loss train_loss / len(train_loader)writer.add_scalar(training loss, avg_train_loss, epoch)# Validationmodel.eval()with torch.no_grad():correct 0total 0val_loss 0.0for images, labels in test_loader:images images.to(device)labels labels.to(device)outputs model(images)loss criterion(outputs, labels)val_loss loss.item()_, predicted torch.max(outputs.data, 1)total labels.size(0)correct (predicted labels).sum().item()accuracy 100 * correct / totalavg_val_loss val_loss / len(test_loader)print(fValidation Accuracy: {accuracy:.2f}%)writer.add_scalar(validation loss, avg_val_loss, epoch)writer.add_scalar(validation accuracy, accuracy, epoch)# Learning rate schedulingscheduler.step(avg_val_loss)# Final test model.eval() with torch.no_grad():correct 0total 0for images, labels in test_loader:images images.to(device)labels labels.to(device)outputs model(images)_, predicted torch.max(outputs.data, 1)total labels.size(0)correct (predicted labels).sum().item()print(fTest Accuracy: {100 * correct / total:.2f}%)writer.close()# Save the model torch.save(model.state_dict(), cifar10_cnn.pth)  在上面的代码示例有一些需要特别注意繁琐的细节 训练和验证模式之间可以手动切换。 有梯度计算的手动规范。 使用较差的 SummaryWriter 类进行日志记录。 有一个学习率调度程序。 Pytorch lightning 工作流 1 使用LightningModule 类定义模型结构 class CIFAR10CNN(L.LightningModule):def __init__(self):super().__init__()self.conv1 nn.Conv2d(3, 32, 3, padding1)self.conv2 nn.Conv2d(32, 64, 3, padding1)self.conv3 nn.Conv2d(64, 64, 3, padding1)self.pool nn.MaxPool2d(2, 2)self.fc1 nn.Linear(64 * 4 * 4, 512)self.fc2 nn.Linear(512, 10)def forward(self, x):x self.pool(F.relu(self.conv1(x)))x self.pool(F.relu(self.conv2(x)))x self.pool(F.relu(self.conv3(x)))x x.view(-1, 64 * 4 * 4)x F.relu(self.fc1(x))x self.fc2(x)return x 唯一的区别是我们是从LightningModule类继承而不是从继承nn.Module。是类LightningModule的扩展nn.Module。它将 PyTorch 工作流的训练、验证、测试、预测和优化步骤组合到一个没有循环的单一界面中。 当你开始使用时LightningModule它被组织成六个部分 初始化__init__和setup()方法训练循环training_step()方法验证循环validation_step()方法测试循环test_step()方法预测循环prediction_step()方法优化器和 LR 调度程序configure_optimizers() 我们已经看到了初始化部分。让我们继续进行训练步骤。 2 编写训练过程代码 在模型类中复写training_step()方法 # Add the method inside the class def training_step(self, batch, batch_idx):x, y batchy_hat self(x)loss F.cross_entropy(y_hat, y)self.log(train_loss, loss)return loss 此方法将整个训练循环压缩为几行代码。首先从数据batch中读取模型输入和模型输出。然后我们运行前向传递self(x)并计算损失。然后我们只需使用内置的 Lightning 记录器函数记录训练损失即可self.log()。 还可以在此方法中记录其他指标例如训练准确性 def training_step(self, batch, batch_idx):x, y batchy_hat self(x)loss F.cross_entropy(y_hat, y)acc (y_hat.argmax(1) y).float().mean()self.log(train_loss, loss)self.log(train_acc, acc)return loss log()方法可以自动计算每个epoch的模型的各个指标比如准确性F1-score等等。该方法里面有一些参数是可以额外设置的比如记录每个batch和epoch下的模型指标模型训练和验证时创建进度条还有将模型的各个指标输出到本地文件中。 # Log the loss at each training step and epoch, create a progress bar self.log(train_loss, loss, on_stepTrue, on_epochTrue, prog_barTrue, loggerTrue) 3 编写验证和测试步骤代码 def validation_step(self, batch, batch_idx):x, y batchy_hat self(x)loss F.cross_entropy(y_hat, y)acc (y_hat.argmax(1) y).float().mean()self.log(val_loss, loss)self.log(val_acc, acc) def test_step(self, batch, batch_idx):x, y batchy_hat self(x)loss F.cross_entropy(y_hat, y)acc (y_hat.argmax(1) y).float().mean()self.log(test_loss, loss)self.log(test_acc, acc) 唯一的区别是不需要返回计算出的指标。Lightning模块会自动将正确的数据加载器分配给验证和测试步骤并在后台创建循环。 尽管validation_step()和test_step()看起来相同但它们有一个关键的区别 validation_step()在训练期间直接参与模型验证。test_step()在测试期间需要调用训练器对象的.test()方法才能执行此操作。 4 配置优化器和优化器scheduler程序 为了定义优化器和学习率调度器需要重写configure_optimizers()类的方法。 def configure_optimizers(self):optimizer torch.optim.Adam(self.parameters(), lr1e-3)scheduler torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, modemin, factor0.1, patience5)return {optimizer: optimizer,lr_scheduler: {scheduler: scheduler,monitor: val_loss,},} 上面创建了一个Adam优化器传入超参数和学习率。还定义了一个ReduceLROnPlateau调度函数用于在验证损失稳定时降低学习率。返回对象字典是最灵活的选项因为它允许定义需要额外参数的scheduler。 https://lightning.ai/docs/pytorch/stable/common/lightning_module.html#configure-optimizers 5 定义callbacks和记录器 模型类和附带的训练验证优化器学习率调度器和指标计算都已经完成模型可以实现前向和反向传播模型更新验证记录模型的各个指标。此时还需要定义一系列的callbacks和记录器类型。这里定义一个checkpoint callback和记录器。 checkpoint_callback ModelCheckpoint(dirpathcheckpoints,monitorval_loss,filenamecifar10-{epoch:02d}-{val_loss:.2f}-{val_acc:.2f},save_top_k3,modemin, ) ModelCheckpoint是一个强大的回调用于在监控给定指标的同时定期保存模型。每个模型检查点都记录到dirpath中。 定义一个tensorboardlogger() 记录方法 logger TensorBoardLogger(save_dirlightning_logs, namecifar10_cnn) 定义一个early_stopping callback early_stopping EarlyStopping(monitorval_loss, patience5, modemin, verboseFalse) 6 创建一个trainer类 在将模型LightningModule类和callback, 记录器全部定义完以后就可以定义一个Trainer 类来实现模型的数据读取自动训练验证模型自动保存比较简洁。可以定义最大epoch数使用gpu训练和gpu个数记录器callback训练精度训练数据比例默认100%验证数据比例默认100%多少个epoch 模型做一次验证多少个epoch后记录一次模型指标记录和模型地址单gpu训练还是分布式训练。 # Initialize the Trainer trainer L.Trainer(max_epochs50,callbacks[checkpoint_callback, early_stopping],loggerlogger,acceleratorgpu if torch.cuda.is_available() else cpu,devicesauto, ) GPU available: True (cuda), used: True TPU available: False, using: 0 TPU cores HPU available: False, using: 0 HPUs 7 训练和测试模型 # Train and test the modeltrainer.fit(model, train_loader, test_loader)trainer.test(model, test_loader) 8 pytorch lightning 训练模型的基本流程总结 创建应用转换的训练、验证和测试数据加载器。将代码组织到一个LightningModule类中定义初始化。定义训练、验证和可选测试步骤。定义优化器和学习率调度器。定义回调和记录器。创建一个训练类trainer初始化模型类。拟合并测试模型。
http://www.tj-hxxt.cn/news/137475.html

相关文章:

  • 江西天亿建设有限公司网站百度权重是什么
  • 网站制作复杂吗wordpress点评插件
  • 定制专业网站wordpress seo theme
  • 做网站内容软件建设电子商务网站的方案
  • 网站内如何做论坛设计师网络叫法
  • 点评类网站建设编辑网站绑定 主机名
  • 化妆品网站html模板西安网站建设成功建设
  • 长春企业网站如何建设国内优秀网页设计案例
  • icp备案查询官方网站宁波网站建设设计报告
  • 个人网站seo店面设计效果图
  • 郑州 服装 网站建设wordpress加入博客
  • 大学生兼职网站开发毕设论文桂林工作网招聘
  • 自己建设网站怎么被百度收入折叠彩页设计
  • 手机网站解决方案外包做网站需要多少钱
  • 运动健身类网站开发成都网站制作公司dedecms
  • 公司有必要建设网站吗seo实战培训课程
  • 制作微信网站模板下载企业管理系统排名
  • 西宁市公司网站建设让wordpress 具有菜单功能
  • 网站建设 教程南京太阳宫网站建设
  • 网站内容的重要性网站如何做诺顿认证
  • 品牌网站建设最佳大蝌蚪接单网官网
  • 贵州省城乡住房和建设厅网站首页邢台谷歌seo
  • 网站建设费按几年摊销html做企业门户网站
  • 网站如何制作建设wordpress 上传图片接口
  • 3g免费网站我不想找之前做网站的续费
  • 最好的淘宝客网站hhvm wordpress 空白
  • 免费企业网站程序上传南京百度推广开户
  • 上海闵行区网站建设如何做好专业类网站
  • 孝昌县建设局网站做受视频播放网站
  • 新手建网站视频教程广州公司注册查询