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

建立网站该怎样做东莞市住房和城乡建设局门户网站

建立网站该怎样做,东莞市住房和城乡建设局门户网站,互联网公司排名前十名名单,吉林网页制作以下是对《深度学习实战》第2集中 CIFAR-10 数据集 使用卷积神经网络进行图像分类实战 代码的详细分析,并增加数据探索环节,同时对数据探索、模型训练和评估的过程进行具体说明。所有代码都附上了运行结果配图,方便对比。 《深度学习实战》第…

以下是对《深度学习实战》第2集中 CIFAR-10 数据集 使用卷积神经网络进行图像分类实战 代码的详细分析,并增加数据探索环节,同时对数据探索、模型训练和评估的过程进行具体说明。所有代码都附上了运行结果配图,方便对比。


《深度学习实战》第2集 补充:数据探索与分析

在深度学习项目中,数据探索(Exploratory Data Analysis, EDA)是至关重要的一步。通过数据探索,我们可以了解数据集的基本特性、分布情况以及潜在问题,从而为后续的模型设计和优化提供指导。

1. 数据探索的目标

  • 了解 CIFAR-10 数据集的类别分布。
  • 可视化样本图像,观察其特征。
  • 分析数据预处理的效果。

2. 数据探索实现

2.1 类别分布分析

CIFAR-10 数据集包含 10 个类别,每个类别的样本数量应均匀分布。我们可以通过以下代码统计类别分布:

import matplotlib.pyplot as plt# 统计类别分布
train_labels = [label for _, label in train_dataset]
class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
label_counts = {class_names[i]: train_labels.count(i) for i in range(10)}# 可视化类别分布
plt.bar(label_counts.keys(), label_counts.values())
plt.title("Class Distribution in CIFAR-10")
plt.xlabel("Class")
plt.ylabel("Number of Samples")
plt.xticks(rotation=45)
plt.show()

代码运行结果输出:

在这里插入图片描述

结果分析

  • 如果类别分布均匀,说明数据集没有类别不平衡问题。
  • 在 CIFAR-10 中,每个类别有 5,000 张训练图像,分布均衡。
2.2 样本可视化

为了直观了解数据集中的图像特征,我们可以随机抽取一些样本并可视化:

import numpy as np# 可视化样本图像
def imshow(img):img = img / 2 + 0.5  # 反归一化npimg = img.numpy()plt.imshow(np.transpose(npimg, (1, 2, 0)))plt.axis('off')plt.show()# 获取一批数据
dataiter = iter(train_loader)
images, labels = next(dataiter)# 显示图像
imshow(torchvision.utils.make_grid(images[:16]))  # 显示前 16 张图像
print("Labels:", [class_names[label] for label in labels[:16]])

代码运行结果输出:

在这里插入图片描述

Labels: ['bird', 'ship', 'automobile', 'ship', 'cat', 'truck', 'airplane', 'bird', 'airplane', 'frog', 'ship', 'bird', 'automobile', 'bird', 'automobile', 'truck']

结果分析

  • 图像大小为 32x32,分辨率较低,但足以捕捉基本特征。
  • 不同类别的图像具有明显的视觉差异(如飞机与汽车、猫与狗等),这有助于模型学习区分不同类别。
2.3 数据预处理效果

数据预处理包括调整大小、归一化等操作。我们可以通过打印预处理后的图像张量来验证其效果:

print("Preprocessed Image Shape:", images.shape)  # 输出形状
print("Preprocessed Image Values:", images[0].min().item(), images[0].max().item())  # 输出归一化范围

代码运行输出结果:

Preprocessed Image Shape: torch.Size([64, 3, 224, 224])
Preprocessed Image Values: -0.929411768913269 1.0

结果分析

  • 预处理后图像被调整为 224x224(ResNet 输入要求),并归一化到 [-1, 1] 范围。
  • 这些操作确保了输入数据的一致性和模型的稳定性。

原代码分析与改进

1. 数据加载与预处理

代码中使用 torchvision.transforms 对数据进行了标准化和尺寸调整。以下是关键步骤的解释:

  • Resize(224):将图像从原始的 32x32 调整为 ResNet 的输入尺寸 224x224。
  • Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)):将像素值归一化到 [-1, 1] 范围,以加速收敛。

改进建议

  • 添加数据增强(Data Augmentation),如随机裁剪、水平翻转等,以提高模型的泛化能力:
    transform = transforms.Compose([transforms.RandomHorizontalFlip(),transforms.RandomCrop(32, padding=4),transforms.Resize(224),transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
    ])
    

改进后代码替换原代码,运行后输出:

Epoch 1, Loss: 0.6051
Epoch 2, Loss: 0.3872
Epoch 3, Loss: 0.3126
Epoch 4, Loss: 0.2649
Epoch 5, Loss: 0.2316
Test Accuracy: 0.9022
可以看到损失系数不同,但精确率最终结果差不多。

2. 模型训练

代码中使用了预训练的 ResNet-18 模型,并修改了最后一层以适应 CIFAR-10 的 10 个类别。以下是训练过程的关键点:

2.1 模型结构
  • ResNet-18 是一个轻量级的 CNN 架构,包含 18 层卷积网络。
  • 修改全连接层(model.fc)以输出 10 个类别的概率。
2.2 训练过程
  • 使用 Adam 优化器,学习率为 0.001。
  • 损失函数为交叉熵损失(nn.CrossEntropyLoss),适用于多分类任务。
  • 每个 epoch 后打印平均损失,便于监控训练进度。

改进建议

  • 增加学习率调度器(Learning Rate Scheduler),例如余弦退火或 StepLR,以动态调整学习率。
  • 保存最佳模型权重,避免过拟合。

3. 模型评估

代码中通过测试集计算了模型的准确率。以下是评估过程的关键点:

3.1 测试过程
  • 将模型切换为评估模式(model.eval()),关闭 Dropout 和 BatchNorm 的随机性。
  • 使用 torch.no_grad() 禁用梯度计算,减少内存消耗。
3.2 结果分析

假设测试准确率为 75%,说明模型在 CIFAR-10 上表现良好,但仍有一定的提升空间。

改进建议

  • 计算混淆矩阵(Confusion Matrix),分析模型在不同类别上的表现:
    from sklearn.metrics import confusion_matrix
    import seaborn as snsall_preds, all_labels = [], []
    with torch.no_grad():for images, labels in test_loader:images, labels = images.to(device), labels.to(device)outputs = model(images)_, preds = torch.max(outputs, 1)all_preds.extend(preds.cpu().numpy())all_labels.extend(labels.cpu().numpy())cm = confusion_matrix(all_labels, all_preds)
    sns.heatmap(cm, annot=True, fmt="d", xticklabels=class_names, yticklabels=class_names)
    plt.title("Confusion Matrix")
    plt.xlabel("Predicted")
    plt.ylabel("True")
    plt.show()
    

代码运行输出结果:
在这里插入图片描述

  • 分析上图混淆矩阵可以发现模型在某些类别(如“猫”与“狗”)上容易混淆,Cat 和 Dog 的矩阵交汇数值相对偏高,从而指导进一步优化。

总结

通过增加数据探索环节,我们深入了解了 CIFAR-10 数据集的特性,并验证了数据预处理的有效性。在模型训练和评估过程中,我们分析了代码的实现细节,并提出了改进建议,包括数据增强、学习率调度器和混淆矩阵分析。这些改进可以帮助模型更好地适应数据集,并提升性能。

希望这些内容能为你提供更全面的理解!如果你有任何问题或想法,欢迎在评论区留言讨论。

http://www.yayakq.cn/news/405726/

相关文章:

  • 南京专业做网站公司地址创建微信公众号平台
  • 企业网站蓝色模板下载网站 建设 维护 公司
  • 北京建网站定制价格wordpress 循环
  • 有了域名怎样做网站中国美院网站建设公司
  • 重庆自助企业建站模板大石桥做网站
  • 网站建设常用软件wordpress的语言
  • 国外h5网站模板下载首页网站关键词优化教程
  • 北京企业网站建设公司无锡网络推广专员
  • 外贸主动营销网站建设量品定制官网
  • 广州网站推广电话wordpress 体育
  • 做个进出口英文网站多少钱长沙网络公司最新消息
  • 佛山营销手机网站建设windows优化大师电脑版
  • 网站修改图片怎么做家用电器行业外贸建站
  • 网站备案服务类型代理东莞网站制作公司
  • VIP视频网站有得做吗营销型网站建设设计
  • 网站编辑的职业特点有哪些外贸网站好做吗
  • 上海网站制作服务上海十大公司排名
  • 淘客网站难做吗wordpress主题修改教程
  • 公司网站格式深圳专业专业网站建设公司
  • 案例学网页设计和网站建设县 住房和城乡建设局网站
  • 网站设计排行榜宝塔一键部署wordpress
  • 做室内设计人喜欢的网站苏州网站建设相关技术
  • 网站建设找云尚网络黔江网站建设
  • 创建好网站如何把浏览器上海工商网查询企业章程
  • 网站设计集团sae 网站备案
  • 成都网站建设前50强大兴网站建设
  • 网站建设栏目层级为什么网站用静态页面
  • 百度搜搜网站自动显示图片网站开发 报价单 表格
  • 建筑涂料网站设计网站后台管理维护 不懂编程
  • 上海怎么制作网站广西住房建设部网站