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

网站手机端首页用什么软件做做的网站百度排名没有图片显示

网站手机端首页用什么软件做,做的网站百度排名没有图片显示,hao123上网从这里开始作文,什么软件做网站好文章目录 前言完整代码代码解析1. 导入必要的库2. 设备配置3. 超参数设置4. 加载MNIST数据集5. 创建数据加载器6. 定义卷积神经网络模型7. 实例化模型并移动到设备8. 定义损失函数和优化器9. 训练模型10. 测试模型11. 保存模型 常用函数解析小改进数据集部分可视化训练过程可视… 文章目录 前言完整代码代码解析1. 导入必要的库2. 设备配置3. 超参数设置4. 加载MNIST数据集5. 创建数据加载器6. 定义卷积神经网络模型7. 实例化模型并移动到设备8. 定义损失函数和优化器9. 训练模型10. 测试模型11. 保存模型 常用函数解析小改进数据集部分可视化训练过程可视化 前言 今天要介绍的这段代码是一个使用PyTorch框架实现的卷积神经网络CNN模型用于对MNIST数据集进行分类的示例。MNIST数据集是手写数字识别领域的一个标准数据集包含0到9的灰度图像。 代码的主要组成部分如下 导入必要的库导入PyTorch、PyTorch神经网络模块、torchvision用于处理图像数据集和transforms用于图像预处理。 设备配置设置模型运行的设备优先使用GPU如果可用否则使用CPU。 超参数设置定义了训练迭代的轮数(num_epochs)、类别数(num_classes)、批次大小(batch_size)和学习率(learning_rate)。 加载MNIST数据集使用torchvision.datasets.MNIST加载MNIST训练集和测试集并应用transforms.ToTensor将图像转换为张量。 创建数据加载器使用torch.utils.data.DataLoader创建训练和测试数据的加载器以便在训练和测试过程中批量加载数据。 定义卷积神经网络模型定义了一个名为ConvNet的类继承自nn.Module。模型包含两个卷积层每层后接批量归一化和ReLU激活函数以及一个全连接层。 实例化模型并移动到设备创建ConvNet模型的实例并将其移动到之前设置的设备上。 定义损失函数和优化器使用nn.CrossEntropyLoss作为损失函数torch.optim.Adam作为优化器。 训练模型进行多个epoch的训练每个epoch中对数据集进行遍历执行前向传播、损失计算、反向传播和参数更新。 测试模型在测试阶段将模型设置为评估模式并禁用梯度计算以提高效率然后计算模型在测试集上的准确率。 保存模型使用torch.save保存训练后的模型参数到文件以便将来可以重新加载和使用模型。 完整代码 import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms# Device configuration device torch.device(cuda:0 if torch.cuda.is_available() else cpu)# Hyper parameters num_epochs 5 num_classes 10 batch_size 100 learning_rate 0.001# MNIST dataset train_dataset torchvision.datasets.MNIST(root../../data/,trainTrue, transformtransforms.ToTensor(),downloadTrue)test_dataset torchvision.datasets.MNIST(root../../data/,trainFalse, transformtransforms.ToTensor())# Data loader train_loader torch.utils.data.DataLoader(datasettrain_dataset,batch_sizebatch_size, shuffleTrue)test_loader torch.utils.data.DataLoader(datasettest_dataset,batch_sizebatch_size, shuffleFalse)# Convolutional neural network (two convolutional layers) class ConvNet(nn.Module):def __init__(self, num_classes10):super(ConvNet, self).__init__()self.layer1 nn.Sequential(nn.Conv2d(1, 16, kernel_size5, stride1, padding2),nn.BatchNorm2d(16),nn.ReLU(),nn.MaxPool2d(kernel_size2, stride2))self.layer2 nn.Sequential(nn.Conv2d(16, 32, kernel_size5, stride1, padding2),nn.BatchNorm2d(32),nn.ReLU(),nn.MaxPool2d(kernel_size2, stride2))self.fc nn.Linear(7*7*32, num_classes)def forward(self, x):out self.layer1(x)out self.layer2(out)out out.reshape(out.size(0), -1)out self.fc(out)return outmodel ConvNet(num_classes).to(device)# Loss and optimizer criterion nn.CrossEntropyLoss() optimizer torch.optim.Adam(model.parameters(), lrlearning_rate)# Train the model total_step len(train_loader) for epoch in range(num_epochs):for 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()if (i1) % 100 0:print (Epoch [{}/{}], Step [{}/{}], Loss: {:.4f} .format(epoch1, num_epochs, i1, total_step, loss.item()))# Test the model model.eval() # eval mode (batchnorm uses moving mean/variance instead of mini-batch mean/variance) 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(Test Accuracy of the model on the 10000 test images: {} %.format(100 * correct / total))# Save the model checkpoint torch.save(model.state_dict(), model.ckpt)代码解析 1. 导入必要的库 import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms导入PyTorch及其神经网络(nn)、计算机视觉(vision)模块和变换(transforms)模块。 2. 设备配置 device torch.device(cuda:0 if torch.cuda.is_available() else cpu)使用torch.device设置模型运行的设备优先使用GPU如果可用。 3. 超参数设置 num_epochs 5 num_classes 10 batch_size 100 learning_rate 0.001定义训练迭代的轮数(num_epochs)输出类别的数量(num_classes)每个批次的样本数(batch_size)以及优化算法的学习率(learning_rate)。 4. 加载MNIST数据集 train_dataset torchvision.datasets.MNIST(root../../data/,trainTrue, transformtransforms.ToTensor(),downloadTrue)test_dataset torchvision.datasets.MNIST(root../../data/,trainFalse, transformtransforms.ToTensor())使用torchvision.datasets.MNIST加载MNIST数据集包括训练集和测试集。transforms.ToTensor将图像数据转换为张量。 5. 创建数据加载器 train_loader torch.utils.data.DataLoader(datasettrain_dataset,batch_sizebatch_size, shuffleTrue)test_loader torch.utils.data.DataLoader(datasettest_dataset,batch_sizebatch_size, shuffleFalse)使用torch.utils.data.DataLoader创建数据加载器用于批量加载数据并在训练时打乱数据顺序。 6. 定义卷积神经网络模型 class ConvNet(nn.Module):def __init__(self, num_classes10):super(ConvNet, self).__init__()# 定义模型层passdef forward(self, x):# 定义前向传播过程pass定义一个名为ConvNet的类继承自nn.Module。在__init__中初始化模型的层在forward中定义前向传播逻辑。 7. 实例化模型并移动到设备 model ConvNet(num_classes).to(device)创建ConvNet模型的实例并使用.to(device)将其移动到之前设置的设备上。 8. 定义损失函数和优化器 criterion nn.CrossEntropyLoss() optimizer torch.optim.Adam(model.parameters(), lrlearning_rate)定义nn.CrossEntropyLoss作为损失函数使用torch.optim.Adam作为优化器。 9. 训练模型 for epoch in range(num_epochs):for i, (images, labels) in enumerate(train_loader):# 训练过程pass遍历所有epoch和batch执行训练过程包括数据预处理、前向传播、损失计算、反向传播和参数更新。 10. 测试模型 model.eval() # eval mode with torch.no_grad():# 测试过程pass将模型设置为评估模式禁用梯度计算并执行测试过程计算模型的准确率。 11. 保存模型 torch.save(model.state_dict(), model.ckpt)使用torch.save保存模型的状态字典到文件以便之后可以重新加载和使用模型。 常用函数解析 torch.device(device_str) 格式torch.device(device_str)参数device_str —— 指定设备类型和编号如’cuda:0’或’cpu’。意义确定模型和张量运行的设备。用法示例device torch.device(cuda:0 if torch.cuda.is_available() else cpu) model.to(device)torchvision.datasets.MNIST(...) 格式torchvision.datasets.MNIST(root, train, transform, download)参数指定数据集路径、是否为训练集、预处理变换、是否下载数据集。意义加载MNIST数据集。用法示例train_dataset torchvision.datasets.MNIST(root../../data/, trainTrue, transformtransforms.ToTensor(), downloadTrue)torch.utils.data.DataLoader(...) 格式torch.utils.data.DataLoader(dataset, batch_size, shuffle)参数数据集对象、批次大小、是否打乱数据。意义创建数据加载器。用法示例train_loader torch.utils.data.DataLoader(datasettrain_dataset, batch_sizebatch_size, shuffleTrue)nn.Module 格式作为基类不直接实例化。意义所有神经网络模块的基类。用法示例class ConvNet(nn.Module):def __init__(self, num_classes10):super(ConvNet, self).__init__()# ...nn.Sequential 格式nn.Sequential(*modules)参数一个模块序列。意义按顺序应用多个模块。用法示例self.layer1 nn.Sequential(nn.Conv2d(1, 16, kernel_size5, stride1, padding2),nn.BatchNorm2d(16),nn.ReLU(),nn.MaxPool2d(kernel_size2, stride2) )nn.Conv2d(...) 格式nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding)参数输入通道数、输出通道数、卷积核大小、步长、填充。意义创建二维卷积层。用法示例nn.Conv2d(1, 16, kernel_size5, stride1, padding2)nn.BatchNorm2d(...) 格式nn.BatchNorm2d(num_features)参数特征数量。意义创建二维批量归一化层。用法示例nn.BatchNorm2d(16)nn.ReLU() 格式nn.ReLU()意义创建ReLU激活层。用法示例nn.ReLU()nn.MaxPool2d(...) 格式nn.MaxPool2d(kernel_size, stride)参数池化核大小、步长。意义创建最大池化层。用法示例nn.MaxPool2d(kernel_size2, stride2)nn.Linear(...) 格式nn.Linear(in_features, out_features)参数输入特征数、输出特征数。意义创建全连接层。用法示例self.fc nn.Linear(7*7*32, num_classes)nn.CrossEntropyLoss() 格式nn.CrossEntropyLoss()意义创建交叉熵损失层。用法示例criterion nn.CrossEntropyLoss()torch.optim.Adam(...) 格式torch.optim.Adam(params, lr)参数模型参数、学习率。意义创建Adam优化器。用法示例optimizer torch.optim.Adam(model.parameters(), lrlearning_rate).to(device) 格式.to(device)参数设备对象。意义将模型或张量移动到指定设备。用法示例images images.to(device) labels labels.to(device).reshape(-1, num_features) 格式reshape(new_shape)参数新形状。意义重塑张量形状。用法示例out out.reshape(out.size(0), -1)torch.max(outputs.data, 1) 格式torch.max(input, dim)参数输入张量、计算最大值的维度。意义获取张量在指定维度上的最大值和索引。用法示例_, predicted torch.max(outputs.data, 1)torch.no_grad() 格式torch.no_grad()意义上下文管理器用于推理或测试阶段禁用梯度计算。用法示例with torch.no_grad():# 测试模型的代码.sum().item() 格式.sum(dim).item()参数求和的维度。意义计算张量在指定维度的和并转换为Python数值。用法示例correct (predicted labels).sum().item()model.eval() 格式model.eval()意义将模型设置为评估模式。用法示例model.eval()torch.save(...) 格式torch.save(obj, f)参数要保存的对象、文件路径。意义保存对象到文件。用法示例torch.save(model.state_dict(), model.ckpt)小改进 在运行代码的时候发现可视化十分简陋于是进行了第一波可视化小改进读取部分数据集。 数据集部分可视化 def show_images(images):plt.figure(figsize(10,10))for i, img in enumerate(images):plt.subplot(5, 5, i1)plt.xticks([])plt.yticks([])plt.grid(False)plt.imshow(img.squeeze().numpy(), cmapgray)plt.show()# Visualize a few images dataiter iter(train_loader) images, _ next(dataiter) show_images(images[:25]) # Visualize 25 images 另外请注意由于MNIST数据集中的图像是灰度图它们的形状是(batch_size, channels, height, width)即(100, 1, 28, 28)。在使用show_images函数之前我们需要将图像重塑为(batch_size, height, width)即(100, 28, 28)。以下是show_images函数的修正 def show_images(images):plt.figure(figsize(10,10))for i, img in enumerate(images):plt.subplot(5, 5, i1)plt.xticks([])plt.yticks([])plt.grid(False)plt.imshow(img.squeeze().numpy(), cmapgray) # 使用 squeeze() 来去除单维度plt.show()确保在使用show_images函数时传递正确形状的图像。如果图像是从DataLoader中获取的你可能需要使用unsqueeze(0)来添加一个批次维度然后再调用squeeze()来去除单维度。例如 images images.unsqueeze(0) # 添加一个批次维度 show_images(images[:25]) # 可视化前25张图像这样就可以正确地显示图像了。 然后呢继续执行代码我们发现训练过程的可视化也是少得可怜于是我们再加多一点可视化内容。 训练过程可视化 要对训练过程进行更多的可视化咱们可以记录每个epoch的损失值并使用Matplotlib绘制损失随epoch变化的图表。以下是如何修改代码来实现这一点 import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt# ...之前的代码保持不变包括设备配置、数据加载、模型定义等# 训练模型 def train(model, device, train_loader, optimizer, epoch, num_epochs):model.train() # Set the model to training modetotal_step len(train_loader)losses []for i, (images, labels) in enumerate(train_loader):images, labels images.to(device), labels.to(device)# Forward passoutputs model(images)loss criterion(outputs, labels)# Backward and optimizeoptimizer.zero_grad()loss.backward()optimizer.step()# Collect loss for plottinglosses.append(loss.item())if (i1) % 100 0:print (Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}.format(epoch1, num_epochs, i1, total_step, loss.item()))return losses# 绘制损失曲线的函数 def plot_losses(epochs, losses):plt.figure(figsize(10, 5))for i, loss_per_epoch in enumerate(losses):plt.plot(loss_per_epoch, labelfEpoch {i1})plt.title(Loss over epochs)plt.xlabel(Steps)plt.ylabel(Loss)plt.legend()plt.show()# 训练过程 losses_over_epochs [] for epoch in range(num_epochs):losses train(model, device, train_loader, optimizer, epoch, num_epochs)losses_over_epochs.append(losses)print(fEpoch {epoch1}/{num_epochs} - Average Loss: {sum(losses)/len(losses):.4f})# 绘制所有epoch的损失曲线 plot_losses(num_epochs, losses_over_epochs)# ...测试模型和保存模型的代码保持不变在这个修改后的代码中我们添加了两个新的函数 train这个函数用于训练模型并记录每个step的损失。它返回一个包含所有step损失的列表。plot_losses这个函数接受epoch列表和损失列表作为参数并绘制出损失随训练step变化的曲线。 在主训练循环中我们对每个epoch调用train函数并收集所有epoch的损失然后使用plot_losses函数绘制损失曲线。 请注意这里绘制的是每个step的损失而不是每个epoch的损失均值。如果想要绘制每个epoch的平均损失可以修改train函数来计算每个epoch的平均损失并只记录这个值。 咱直接把最终代码贴上 import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt# Device configuration device torch.device(cuda:0 if torch.cuda.is_available() else cpu)# Hyper parameters num_epochs 10 num_classes 10 batch_size 100 learning_rate 0.001# MNIST dataset train_dataset torchvision.datasets.MNIST(root../../data/,trainTrue, transformtransforms.ToTensor(),downloadTrue)test_dataset torchvision.datasets.MNIST(root../../data/,trainFalse, transformtransforms.ToTensor())# Data loader train_loader torch.utils.data.DataLoader(datasettrain_dataset,batch_sizebatch_size, shuffleTrue)test_loader torch.utils.data.DataLoader(datasettest_dataset,batch_sizebatch_size, shuffleFalse)# Convolutional neural network (two convolutional layers) class ConvNet(nn.Module):def __init__(self, num_classes10):super(ConvNet, self).__init__()self.layer1 nn.Sequential(nn.Conv2d(1, 16, kernel_size5, stride1, padding2),nn.BatchNorm2d(16),nn.ReLU(),nn.MaxPool2d(kernel_size2, stride2))self.layer2 nn.Sequential(nn.Conv2d(16, 32, kernel_size5, stride1, padding2),nn.BatchNorm2d(32),nn.ReLU(),nn.MaxPool2d(kernel_size2, stride2))self.fc nn.Linear(7*7*32, num_classes)def forward(self, x):out self.layer1(x)out self.layer2(out)out out.view(out.size(0), -1) # Flatten the outputout self.fc(out)return outmodel ConvNet(num_classes).to(device)# Loss and optimizer criterion nn.CrossEntropyLoss() optimizer optim.Adam(model.parameters(), lrlearning_rate)# Function to visualize images def show_images(images):plt.figure(figsize(10,10))for i, img in enumerate(images):plt.subplot(5, 5, i1)plt.xticks([])plt.yticks([])plt.grid(False)plt.imshow(img.squeeze().numpy(), cmapgray)plt.show()# Function to train the model def train(model, device, train_loader, optimizer, epoch, num_epochs):model.train() # Set the model to training modetotal_step len(train_loader)losses []for i, (images, labels) in enumerate(train_loader):images, labels images.to(device), labels.to(device)optimizer.zero_grad()outputs model(images)loss criterion(outputs, labels)loss.backward()optimizer.step()losses.append(loss.item())if (i1) % 100 0:print (Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}.format(epoch1, num_epochs, i1, total_step, loss.item()))return losses# Function to test the model def test(model, device, test_loader):model.eval() # Set the model to evaluation modecorrect 0total 0with torch.no_grad():for 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()return 100 * correct / total# Function to plot training progress def plot_progress(epochs, train_losses, test_accuracies):plt.figure(figsize(12, 5))plt.subplot(1, 2, 1)for i in range(epochs):plt.plot(train_losses[i], labelfEpoch {i1})plt.title(Training Loss)plt.xlabel(Batch)plt.ylabel(Loss)plt.legend()plt.subplot(1, 2, 2)plt.plot(test_accuracies, labelAccuracy)plt.title(Test Accuracy)plt.xlabel(Epoch)plt.ylabel(Accuracy (%))plt.legend()plt.show()# Visualize a few images dataiter iter(train_loader) images, _ next(dataiter) show_images(images[:25]) # Visualize 25 images# Initialize lists to monitor loss and accuracy train_losses [] test_accuracies []# Train the model for epoch in range(num_epochs):print(fEpoch {epoch1}/{num_epochs})train_loss train(model, device, train_loader, optimizer, epoch, num_epochs)train_losses.append(train_loss)test_accuracy test(model, device, test_loader)test_accuracies.append(test_accuracy)print(fEpoch {epoch1}/{num_epochs} - Average Loss: {sum(train_loss)/len(train_loss):.4f}, Accuracy: {test_accuracy:.2f}%)# Plot training progress plot_progress(num_epochs, train_losses, test_accuracies)# Save the model checkpoint torch.save(model.state_dict(), model.ckpt)经过修改后的训练过程如下图所示 还有很多很多小改进的方向就留给各位自己尝试啦。
http://www.hkea.cn/news/14300808/

相关文章:

  • 郑州网站优化托管项目类型和阶段内容介绍
  • 国外大型门户网站国内外优秀网站设计
  • 网站建设要多钱潍坊专升本考试地点
  • 宾馆在什么网站做推广效果好91游戏中心
  • 诊断网站seo现状建设个人购物网站
  • 大良品牌网站建设wordpress论坛功能
  • 188建站系统源码做的很漂亮的网站
  • 电商网站运营团队建设方案wordpress内部优化
  • 58同城哈尔滨网站建设cute主题 wordpress
  • 前端旅游网站行程怎么做近期热点话题
  • 网站开发个人博客唐山建设集团招聘信息网站
  • 金华网站建设价格WordPress tag 目录
  • 网站建设公司发展规划网站开发设计文档
  • 网站建设的价值是什么海报生成器在线制作
  • 网站集约化建设的优点平面设计的创意手法有哪些
  • 做分析图用的地图网站什么网站 是cms系统下载地址
  • 企业网站建设长沙中国网络排名前十名
  • 有没有专门做牛仔的网站公司核准名称网站
  • 宁波网站建设大概要多少钱营销策略的概念和内容
  • 男女之间做下面哪个网站免费wordpress修改目录
  • 如何建立公司网站建设简述seo的应用范围
  • 如何制作收费网页seo目标关键词优化
  • 工业和信息化部网站备案系统湖南众诚建设 官方网站
  • 当当网站建设目标wordpress图片文字排版
  • 单位网站建设情况调查情况网站建设 教材 推荐
  • 互动网站建设的主页霸气又聚财的公司名字大全
  • 营销型网站建设目标wordpress 左右风格主题
  • wordpress 文章换行潮州网站seo推广
  • wordpress电影站开发wordpress导航菜单最右边
  • 恩施州建设局网站tp5企业网站开发实例