• 北京交通大学《深度学习》专业课,实验2-前馈神经网络


    1. 源代码

    见资源“北京交通大学《深度学习》专业课,实验2-前馈神经网络

    2. 实验内容

    (1)手动实现前馈神经网络解决上述回归、二分类、多分类任务
            分析实验结果并绘制训练集和测试集的loss曲线
    (2)利用torch.nn实现前馈神经网络解决上述回归、二分类、多分类任务
            分析实验结果并绘制训练集和测试集的loss曲线
    (3)在多分类实验的基础上使用至少三种不同的激活函数
            对比使用不同激活函数的实验结果
    (4)对多分类任务中的模型评估隐藏层层数和隐藏单元个数对实验结果的影响
            使用不同的隐藏层层数和隐藏单元个数,进行对比实验并分析实验结果
    (5)在多分类任务实验中分别手动实现和用torch.nn实现dropout
             探究不同丢弃率对实验结果的影响(可用loss曲线进行展示)
    (6)在多分类任务实验中分别手动实现和用torch.nn实现L2正则化
            探究惩罚项的权重对实验结果的影响(可用loss曲线进行展示)
    (7)对回归、二分类、多分类任务分别选择上述实验中效果最好的模型,采用10折交叉验证评估实验结果
            要求除了最终结果外还需以表格的形式展示每折的实验结果

    3. 基础知识

    4. 学习question&answer

    问题一:手动实现前馈神经网络解决回归任务

    模仿教程中的手动实现 ReLu 激活函数时,
    报错:
    原因:待转换类型的 PyTorch Tensor 变量带有梯度,直接将其转换为 numpy 数据将破坏计算图,因此 numpy 拒绝进行数据转换。
    解决办法: 改变实现方式:
    返回 max{0, input} 实现 ReLu 函数。

     问题二:手动实现前馈神经网络解决多分类任务

    报错:在 loss.backward () 的时候出现 RuntimeError : Found dtype Long but expected Float
    解决过程:
            • 检查 loss 类型( flaot32 准确)
            • →查找资料
            • loss 函数的输入类型不一致

             l = loss(y_hat, y).sum() à l = loss(y_hat, y.float()).sum() 

    问题三

    问题四:深度学习过程中梯度消失

            操作过程:

             结果:

    问题五:多分类任务中的模型评估隐藏层层数和隐藏单元个数对实验结果的影响

            答:

            理论:层数越深 → 模型拟合函数的能力增强,效果会更好

            实际:简单数据集,隐藏层的层数和隐藏单元个个数不能过多。→ 更深的层数可能会带来过拟合的问题,同时也会增加训练难度,使模型难以收敛。

            因此在使用神经网络时,最好可以参照已有的性能良好的模型。

     问题六:深度学习和机器学习的区别

            模型复杂度:深度学习模型通常比机器学习模型更为复杂,包含多个层次的神经网络结构,这些网络可以从数据中学习更加抽象和高级的特征表示。

            数据量要求:深度学习模型通常需要更多的数据来训练,因为它们的参数量非常大,需要足够的样本来避免过拟合。

            特征工程:深度学习模型通常不需要进行显式的特征工程,因为它们可以自动从原始数据中学习特征表示。相比之下,机器学习模型需要手动选择和构造特征。

            计算要求:深度学习模型通常需要更强大的计算资源和更长的训练时间,因为它们的模型复杂度和参数量更高。

            应用范围:深度学习通常用于处理视觉、语音、自然语言处理等具有复杂结构和模式的数据,而机器学习则更加广泛,可应用于各种任务,如回归、分类、聚类等。

            总结:深度学习是机器学习的一个分支,它利用了深层次的神经网络和自动化特征提取等技术,以更高效和准确的方式处理数据和任务。

    前馈解决回归、二分类、多分类

    前馈神经网络解决回归问题的loss曲线:

    前馈神经网络解决二分类问题的loss曲线:

    前馈神经网络解决多分类问题的loss曲线:

  • 相关阅读:
    Spring Cloud 网关的配置示例
    【MySQL系列】Java的JDBC编程
    #LLM入门|Prompt#1.1 第一部分_面向开发者的LLM入门教程_简介
    蓝牙资讯|苹果新款AirPods Pro支持Vision Pro无损音频和IP54防水防尘
    linux安装常见的中间件和数据库
    TrOCR – 基于 Transformer 的 OCR 入门指南
    【C++面向对象】8. 继承
    题目 1213: 幸运儿
    冒泡排序知识点
    语音控制:基于ESP8266的DIY助手
  • 原文地址:https://blog.csdn.net/weixin_61681867/article/details/140421445