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

wordpress获取当前网址关键词怎么优化到百度首页

wordpress获取当前网址,关键词怎么优化到百度首页,网站开发完整教程,滨江区高端网站建设目录 一、TensorBoard简介 1.1 发展历程 1.2 核心原理 二、TensorBoard的基本操作 2.1 安装与启动 2.2 日志目录管理 2.3 记录标量数据 2.4 可视化模型结构 2.5 可视化图像数据 2.6 记录权重和梯度直方图 三、TensorBoard实战案例 3.1 CIFAR-10 MLP实战 数据预处理…

目录

一、TensorBoard简介

1.1 发展历程

1.2 核心原理

二、TensorBoard的基本操作

2.1 安装与启动

2.2 日志目录管理

2.3 记录标量数据

2.4 可视化模型结构

2.5 可视化图像数据

2.6 记录权重和梯度直方图

三、TensorBoard实战案例

3.1 CIFAR-10 MLP实战

数据预处理与加载

定义MLP模型

训练与TensorBoard记录

3.2 CIFAR-10 CNN实战

数据预处理与加载

定义CNN模型

训练与TensorBoard记录

四、TensorBoard的可视化结果


一、TensorBoard简介

1.1 发展历程

TensorBoard是TensorFlow生态中的官方可视化工具,同时也支持PyTorch等其他深度学习框架。它最初于2015年随TensorFlow框架一起发布,旨在满足深度学习研究者对复杂模型训练过程的可视化需求。此后,TensorBoard不断更新和完善,新增了图像/音频可视化、直方图、多运行对比等功能,并在2019年后与PyTorch实现了兼容。如今,TensorBoard已经成为深度学习领域不可或缺的可视化工具之一。

1.2 核心原理

TensorBoard的核心原理非常简单:在训练过程中,将训练数据(如损失值、准确率、权重分布等)写入日志文件(.tfevents文件),然后通过启动本地网页服务读取日志文件并将其可视化为图表、图像等形式。这种方式不仅避免了手动打印数据和绘制图表的繁琐过程,还能实时监控训练过程中的数据变化,方便我们根据可视化结果动态调整训练策略。

二、TensorBoard的基本操作

2.1 安装与启动

在使用TensorBoard之前,我们需要先安装它。通过以下命令可以快速完成安装:

pip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,我们可以在项目根目录下运行以下命令启动TensorBoard服务:

tensorboard --logdir=runs

其中,--logdir参数指定了日志文件的存储目录。启动服务后,TensorBoard会生成一个本地访问链接(通常是http://localhost:6006),我们可以通过浏览器访问该链接查看可视化结果。

2.2 日志目录管理

为了避免日志文件的重复覆盖,TensorBoard提供了自动管理日志目录的功能。在代码中,我们可以通过以下方式创建独立的日志目录:

log_dir = 'runs/cifar10_mlp_experiment'
if os.path.exists(log_dir):i = 1while os.path.exists(f"{log_dir}_{i}"):i += 1log_dir = f"{log_dir}_{i}"
writer = SummaryWriter(log_dir)

这样,每次运行代码时都会生成一个新的日志目录,方便我们对比不同训练任务的结果。

2.3 记录标量数据

标量数据(如损失值、准确率、学习率等)是训练过程中最常用的数据类型。我们可以通过add_scalar方法将标量数据写入日志文件:

writer.add_scalar('Train/Batch_Loss', batch_loss, global_step)
writer.add_scalar('Train/Batch_Accuracy', batch_acc, global_step)

在TensorBoard的SCALARS选项卡中,我们可以查看这些标量数据的变化曲线,并支持多运行对比。

2.4 可视化模型结构

TensorBoard还支持可视化模型结构,这有助于我们直观地了解模型的层次结构和数据流向。我们可以通过以下代码将模型结构写入日志文件:

dataiter = iter(train_loader)
images, labels = next(dataiter)
images = images.to(device)
writer.add_graph(model, images)

在TensorBoard的GRAPHS选项卡中,我们可以查看模型的计算图结构。

2.5 可视化图像数据

对于图像数据,TensorBoard提供了强大的可视化功能。我们可以将训练图像、错误预测样本等可视化为图像网格:

img_grid = torchvision.utils.make_grid(images[:8].cpu())
writer.add_image('原始训练图像', img_grid)

在TensorBoard的IMAGES选项卡中,我们可以查看这些图像数据。

2.6 记录权重和梯度直方图

为了监控模型参数的变化,我们可以记录权重和梯度的分布直方图:

for name, param in model.named_parameters():writer.add_histogram(f'weights/{name}', param, global_step)if param.grad is not None:writer.add_histogram(f'grads/{name}', param.grad, global_step)

在TensorBoard的HISTOGRAMS选项卡中,我们可以查看权重和梯度的分布变化,从而诊断训练过程中的问题(如梯度消失或爆炸)。

三、TensorBoard实战案例

3.1 CIFAR-10 MLP实战

为了展示TensorBoard的实际应用,我们以CIFAR-10数据集为例,训练一个多层感知机(MLP)模型,并通过TensorBoard记录训练过程中的各种信息。

数据预处理与加载
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])train_dataset = datasets.CIFAR10(root='./data',train=True,download=True,transform=transform
)test_dataset = datasets.CIFAR10(root='./data',train=False,transform=transform
)train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)
定义MLP模型
class MLP(nn.Module):def __init__(self):super(MLP, self).__init__()self.flatten = nn.Flatten()self.layer1 = nn.Linear(3072, 512)self.relu1 = nn.ReLU()self.dropout1 = nn.Dropout(0.2)self.layer2 = nn.Linear(512, 256)self.relu2 = nn.ReLU()self.dropout2 = nn.Dropout(0.2)self.layer3 = nn.Linear(256, 10)def forward(self, x):x = self.flatten(x)x = self.layer1(x)x = self.relu1(x)x = self.dropout1(x)x = self.layer2(x)x = self.relu2(x)x = self.dropout2(x)x = self.layer3(x)return x
训练与TensorBoard记录
def train(model, train_loader, test_loader, criterion, optimizer, device, epochs, writer):model.train()global_step = 0dataiter = iter(train_loader)images, labels = next(dataiter)images = images.to(device)writer.add_graph(model, images)img_grid = torchvision.utils.make_grid(images[:8].cpu())writer.add_image('原始训练图像', img_grid, global_step=0)for epoch in range(epochs):running_loss = 0.0correct = 0total = 0for batch_idx, (data, target) in enumerate(train_loader):data, target = data.to(device), target.to(device)optimizer.zero_grad()output = model(data)loss = criterion(output, target)loss.backward()optimizer.step()running_loss += loss.item()_, predicted = output.max(1)total += target.size(0)correct += predicted.eq(target).sum().item()batch_acc = 100. * correct / totalwriter.add_scalar('Train/Batch Loss', loss.item(), global_step)writer.add_scalar('Train/Batch Accuracy', batch_acc, global_step)writer.add_scalar('Train/Learning Rate', optimizer.param_groups[0]['lr'], global_step)if (batch_idx + 1) % 200 == 0:for name, param in model.named_parameters():writer.add_histogram(f'Weights/{name}', param, global_step)if param.grad is not None:writer.add_histogram(f'Gradients/{name}', param.grad, global_step)global_step += 1epoch_train_loss = running_loss / len(train_loader)epoch_train_acc = 100. * correct / totalwriter.add_scalar('Train/Epoch Loss', epoch_train_loss, epoch)writer.add_scalar('Train/Epoch Accuracy', epoch_train_acc, epoch)model.eval()test_loss = 0correct_test = 0total_test = 0wrong_images = []wrong_labels = []wrong_preds = []with torch.no_grad():for data, target in test_loader:data, target = data.to(device), target.to(device)output = model(data)test_loss += criterion(output, target).item()_, predicted = output.max(1)total_test += target.size(0)correct_test += predicted.eq(target).sum().item()wrong_mask = (predicted != target)if wrong_mask.sum() > 0:wrong_batch_images = data[wrong_mask][:8].cpu()wrong_batch_labels = target[wrong_mask][:8].cpu()wrong_batch_preds = predicted[wrong_mask][:8].cpu()wrong_images.extend(wrong_batch_images)wrong_labels.extend(wrong_batch_labels)wrong_preds.extend(wrong_batch_preds)epoch_test_loss = test_loss / len(test_loader)epoch_test_acc = 100. * correct_test / total_testwriter.add_scalar('Test/Epoch Loss', epoch_test_loss, epoch)writer.add_scalar('Test/Epoch Accuracy', epoch_test_acc, epoch)if wrong_images:wrong_img_grid = torchvision.utils.make_grid(wrong_images)writer.add_image('错误预测样本', wrong_img_grid, epoch)wrong_text = [f"真实: {classes[wl]}, 预测: {classes[wp]}" for wl, wp in zip(wrong_labels, wrong_preds)]writer.add_text('错误预测标签', '\n'.join(wrong_text), epoch)print(f'Epoch {epoch+1}/{epochs} 完成 | 测试准确率: {epoch_test_acc:.2f}%')writer.close()return epoch_test_acc

3.2 CIFAR-10 CNN实战

除了MLP模型,我们还可以使用卷积神经网络(CNN)来训练CIFAR-10数据集,并通过TensorBoard记录训练过程中的信息。CNN模型的定义和训练过程与MLP类似,只是模型结构和数据预处理略有不同。

数据预处理与加载
train_transform = transforms.Compose([transforms.RandomCrop(32, padding=4),transforms.RandomHorizontalFlip(),transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.1),transforms.RandomRotation(15),transforms.ToTensor(),transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))
])test_transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))
])train_dataset = datasets.CIFAR10(root='./data',train=True,download=True,transform=train_transform
)test_dataset = datasets.CIFAR10(root='./data',train=False,transform=test_transform
)train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)
定义CNN模型
class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()self.conv1 = nn.Conv2d(3, 32, kernel_size=3, padding=1)self.bn1 = nn.BatchNorm2d(32)self.relu1 = nn.ReLU()self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2)self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)self.bn2 = nn.BatchNorm2d(64)self.relu2 = nn.ReLU()self.pool2 = nn.MaxPool2d(kernel_size=2)self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1)self.bn3 = nn.BatchNorm2d(128)self.relu3 = nn.ReLU()self.pool3 = nn.MaxPool2d(kernel_size=2)self.fc1 = nn.Linear(128 * 4 * 4, 512)self.dropout = nn.Dropout(p=0.5)self.fc2 = nn.Linear(512, 10)def forward(self, x):x = self.conv1(x)x = self.bn1(x)x = self.relu1(x)x = self.pool1(x)x = self.conv2(x)x = self.bn2(x)x = self.relu2(x)x = self.pool2(x)x = self.conv3(x)x = self.bn3(x)x = self.relu3(x)x = self.pool3(x)x = x.view(-1, 128 * 4 * 4)x = self.fc1(x)x = self.relu3(x)x = self.dropout(x)x = self.fc2(x)return x
训练与TensorBoard记录

CNN模型的训练过程与MLP类似,只是模型结构和数据预处理略有不同。我们仍然可以通过TensorBoard记录训练过程中的各种信息,如损失值、准确率、模型结构、权重分布等。

四、TensorBoard的可视化结果

通过TensorBoard,我们可以直观地查看训练过程中的各种信息。例如:

  • SCALARS选项卡:展示损失值、准确率、学习率等标量数据的变化曲线。

  • IMAGES选项卡:展示原始训练图像、错误预测样本等图像数据。

  • GRAPHS选项卡:展示模型的计算图结构。

  • HISTOGRAMS选项卡:展示权重和梯度的分布直方图。

这些可视化结果不仅帮助我们更好地理解模型的训练过程,还能及时发现训练中的问题并进行调整。

计划-45day内容

@浙大疏锦行


文章转载自:

http://tD64nlaf.tymwx.cn
http://hsOSVkUR.tymwx.cn
http://wySKBXd3.tymwx.cn
http://AQdpCxGI.tymwx.cn
http://LWIcTqyJ.tymwx.cn
http://bniOl5w9.tymwx.cn
http://26RdtPFU.tymwx.cn
http://NJD6SwWQ.tymwx.cn
http://Bajsk7MM.tymwx.cn
http://qlII6XrG.tymwx.cn
http://bMo5FuQQ.tymwx.cn
http://gqcnTtTo.tymwx.cn
http://Jw1Rar76.tymwx.cn
http://NYEydcqr.tymwx.cn
http://Jw5NNfDy.tymwx.cn
http://UmWoh3Ir.tymwx.cn
http://o15Ms4Ss.tymwx.cn
http://UFS9SiwQ.tymwx.cn
http://LmwqSdXa.tymwx.cn
http://AtGaBUXG.tymwx.cn
http://7qviccW0.tymwx.cn
http://rQCXh2X1.tymwx.cn
http://DlTHZ8Yi.tymwx.cn
http://MExfMNKF.tymwx.cn
http://NmkmKUEs.tymwx.cn
http://xAb1GI00.tymwx.cn
http://T25AJPZ1.tymwx.cn
http://px70REsF.tymwx.cn
http://xY8SRNWi.tymwx.cn
http://Tt01o0VP.tymwx.cn
http://www.dtcms.com/wzjs/662399.html

相关文章:

  • 黑龙江省建设监理协会网站手机网站免费做app
  • 百度搜不倒公司网站wordpress时间插件下载地址
  • 青岛网站建设方案案例商城类网站总体功能策划
  • 东莞建站网站建设产品推广wordpress 外链转内链
  • 高端品牌网站建设建议公司网站建站哪个系统好用
  • 电子商务网站的建设及规划推广小程序拿佣金
  • 校园网站管理系统梅州站改造高铁站
  • 自助建站视频网站建设小程序怎么挂失
  • 嘉兴企业网站模板连锁销售网站制作
  • 深圳网站建设有免费的吗网页制作与网站建设06627
  • 建设手机网站平台江西建设银行分行网站
  • 网站中英文切换怎么做个性化网站开发
  • 做外贸一般去什么网站找客户青岛市区商场黄页
  • 福建省建设相关网站wordpress建一个网站吗
  • 网站积分商城该怎么建立网站建设佛山
  • 大气微电影类网站织梦模板完整版阿里云域名 设置网站
  • 邯郸有设计网站的吗购物网站制作样例
  • 哈尔滨免费自助建站模板北京网站设计引流微信hyhyk1
  • 淘宝客做网站推广比较实用的h5网页建设网站
  • 电子商务网站建设期末试卷答案中英西班牙网站建设
  • 房山营销型网站制作开发如何查看网站的关键词
  • php音乐网站设计北京网站建设市场
  • 网站建设报价 福州石家庄网站优化多少钱
  • 手机网站推荐导航页阿里云建站费用
  • 个人网站建设的背景做网站前的准备什么
  • 品牌网站开发公司网站怎么做好 优帮云
  • 申请关闭网站厦门建站比较好的公司
  • 韩国明星都在那个网站做直播东莞市网站公司
  • 做网站的是不是程序员网站的结构与布局优化
  • 中小企业建站是什么广州一起做网店网站官方