北京交通大学《深度学习》专业课,实验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曲线:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/871958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

08-8.3.1 冒泡排序

👋 Hi, I’m Beast Cheng 👀 I’m interested in photography, hiking, landscape… 🌱 I’m currently learning python, javascript, kotlin… 📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

keepalive:

keepalive: 调度器的高可用 vip地址在主备之间的切换,主在工作时,vip地址只在主上,主停止工作,vip漂移到备服务器。 在主备的优先级不变的情况下,主恢复工作,vip会飘回到主服务器。 1、配优…

企业网络运维-给华为交换机配置sftp,浏览交换机文件并下载上传

文章目录 需求实验开户stelnet权限已完成stelnet账号下的sftp配置使用xshell-sftp访问 需求 浏览交换机文件并下载上传 实验 开户stelnet权限 参考https://blog.csdn.net/xzzteach/article/details/140419150 已完成stelnet账号下的sftp配置 服务类型all包括stelnet和sf…

过滤器(Filter)和拦截器(Interceptor)的区别

过滤器(Filter)和拦截器(Interceptor)都是用于在请求处理过程中执行额外逻辑的机制,但它们在实现和使用上有一些重要的区别: 过滤器(Filter) 定义和用途: 过滤器主要用于…

强化学习编程实战-5 基于时间差分的方法

第4章中,当模型未知时,由于状态转移概率P未知,动态规划中值函数的评估方法不再适用,用蒙特卡洛的方法聘雇值函数。 在蒙特卡洛方法评估值函数时,需要采样一整条轨迹,即需要从初始状态s0到终止状态的整个序列…

[C++ 入门基础 - 函数重载]

在C编程中,函数重载(Function Overloading)是一种强大的特性,它允许我们定义多个同名函数,但这些函数具有不同的参数列表。通过函数重载,我们可以根据不同的参数类型或数量来实现类似但功能不同的函数&…

探索“搭旅万物皆可搭”小程序——构建旅行搭伴平台的创新实践

摘要 随着旅游市场的不断发展和个性化需求的日益增长,旅行搭伴平台逐渐成为连接志同道合旅者的桥梁。本文旨在介绍“搭旅万物皆可搭”小程序的设计理念、核心功能及其背后的技术实现,探讨如何通过算法优化、安全保障、社交互动等手段,打造一…

GUI界面开发之tkinter(一)

Tkinter是一个内置的Python库,用于创建图形用户界面(GUI)。它提供了一组工具和小部件,用于创建窗口、对话框、按钮、菜单和其他GUI元素。 在本篇文章中,主要介绍了窗口等知识点。 大家好!我是码银&#x1…

《昇思25天学习打卡营第22天|onereal》

文本解码原理--以MindNLP为例 回顾:自回归语言模型 根据前文预测下一个单词 一个文本序列的概率分布可以分解为每个词基于其上文的条件概率的乘积 𝑊_0:初始上下文单词序列𝑇: 时间步当生成EOS标签时,停止生成。 MindNLP/huggi…

人工智能时代的伦理挑战与隐私保护

随着人工智能技术的迅猛发展,我们不得不正视其带来的伦理挑战和隐私保护问题。人工智能的应用已经深入到社会的方方面面,从医疗健康到金融服务,从教育到娱乐,无所不在。然而,与其广泛应用相伴随的是数据隐私泄露、算法…

MySQL 时区问题:设置了 my.ini 并重启了服务,依旧是 0 时区

1、问题再现 在撰写 飞书 API 2-5 时,需要新建一些数据表,以便实施从数据库到多维表的数据同步。我建了2个测试数据表,连表查询之后,将时间戳转为时间格式返回,结果发现少了 8 小时。 具体逻辑抽象为以下&#xff0c…

【Vue3组件】封装全局路由切换loading效果

把大象装进冰箱需要几步 1.写一个全局loading的样式组件&#xff0c;我这里使用了LottieAnimation 实现更优雅的切换动画&#xff0c;详情可以参考主页上一篇文章 <template><div v-if"isLoading" class"loading-overlay"><LottieAnimatio…

S7-1200PLC 2轴直线插补(详细方案对比)

1、V90速度轴应用 速度轴V90PN总线伺服梯形加减速速度控制(标准报文1应用)_v90伺服加减速时间怎么调整-CSDN博客文章浏览阅读288次。SMART PLC斜坡函数SMART PLC斜坡函数功能块(梯形图代码)_RXXW_Dor的博客-CSDN博客斜坡函数Ramp的具体应用可以参看下面的文章链接:PID优化系…

【Linux/Vim】Vim使用教程及速查手册

目录 一.Vim介绍 1.Vim是什么 2.Vim的安装 (1)Vim默认安装的系统 (2)Vim的安装方法 (3)检查Vim是否安装成功 3.Vim,Vi,gvim的区别 4./.vimrc配置文件介绍及使用方法 (1).vimrc 的介绍 (2).vimrc 的使用方法 二.Vim使用方法 1.Vim的模式 (1)Vim一般命令模式常用操作…

【技术】JS的ES6有哪些知识点

1.let-const块级作用域的补充 const names["abc","cba","nba"];for(let i0;i<names.length;i){ //* 这个数组的元素有三个&#xff0c;所以会形成3个块级作用域console.log(names[i]); }以上for遍历内部的实现是以下这样的&#xff1a; 因…

数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码)

一、前言 该项目非常适合MySQL入门学习的小伙伴&#xff0c;博主提供了源码、数据和一些查询语句&#xff0c;供大家学习和参考&#xff0c;代码和表设计有什么不恰当还请各位大佬多多指点。 所需环境 MySQL可视化工具&#xff1a;navicat&#xff1b; 数据库&#xff1a;MySq…

数据结构之线性表的实现

顺序存储实现&#xff08;数组&#xff09; 顺序存储的线性表通常使用数组来实现。在数组中&#xff0c;元素在内存中是连续存放的&#xff0c;通过数组下标可以访问任意位置的元素。 链式存储实现&#xff08;链表&#xff09; 链式存储的线性表使用链表来实现。链表中的元…

C++ --> 类和对象(三)

欢迎来到我的Blog&#xff0c;点击关注哦&#x1f495; 前言 前面已经对类和对象有一定的了解&#xff0c;接下来再次深入的了解一下。 一、深入理解构造函数 构造函数体赋值&#xff1a; 虽然上述构造函数调用之后&#xff0c;对象中已经有了一个初始值&#xff0c;但是不能…

[笔记] SEW的振动分析工具DUV40A

1.便携式振动分析仪 DUV40A 文档编号&#xff1a;26871998/EN SEW是一家国际化的大型的机械设备供应商。产品线涵盖电机&#xff0c;减速机&#xff0c;变频器等全系列动力设备。DUV40A是他自己设计的一款振动分析工具。 我们先看一下它的软硬件参数&#xff1a; 内置两路传…

防火墙综合实验之NAT和智能选路

目录 前言&#xff1a; 一、实验题目 二、实验操作 需求一 需求二 需求三 需求四、需求五 需求六 需求七 ​编辑 需求八 需求九 需求十 需求十一 三、需求测试 前言&#xff1a; 本篇文章是延续上一篇文章&#xff0c;简单来说就是防火墙实验的完善和延续&#…