华为昇思MindSpore 25天学习打卡-0711

在深入学习和实现深度学习算法时,理解其背后的原理和机制至关重要。通过使用纯Python实现一个简单的神经网络,我们可以更好地理解这些基本概念,而无需依赖诸如PyTorch或TensorFlow等高级深度学习框架。以下是我在编写和研究以上代码时的一些学习心得:

1. 神经网络的基本构成

神经网络由多个层组成,每层包含若干节点(神经元)。在这个简单的示例中,我们实现了一个两层神经网络,包括一个隐藏层和一个输出层。每个神经元通过权重连接到下一层的神经元,这些权重在训练过程中会不断调整以优化模型的性能。

2. 激活函数

激活函数在神经网络中起着至关重要的作用。它引入了非线性,使得神经网络可以学习和表示更复杂的函数。我们在代码中使用了sigmoid激活函数,它将输入值映射到0到1之间,并且其导数易于计算,适合作为训练过程中的激活函数。

def sigmoid(x):return 1 / (1 + math.exp(-x))def sigmoid_derivative(x):return x * (1 - x)

3. 前向传播和反向传播

前向传播是指数据从输入层经过隐藏层传递到输出层的过程。在这个过程中,输入数据通过每层的权重进行加权求和,并通过激活函数得到输出。反向传播则是通过计算输出与期望结果之间的误差,并将误差反向传播,通过梯度下降法调整权重,以最小化误差。

def forward_propagate(inputs, weights_input_hidden, weights_hidden_output):return hidden_layer_output, final_layer_outputdef back_propagate(inputs, hidden_layer_output, final_layer_output, expected_output, weights_input_hidden, weights_hidden_output, learning_rate):

4. 损失函数

损失函数用于衡量模型预测值与实际值之间的差距。在这个实现中,我们使用均方误差(MSE)作为损失函数。每个epoch结束后,我们计算并输出当前的损失值,以监控训练过程中的模型性能。

loss = sum((expected_output[i][j] - forward_propagate(inputs[i], weights_input_hidden, weights_hidden_output)[1][j]) ** 2 for i in range(len(inputs)) for j in range(len(expected_output[0])))

 5. 超参数选择

超参数(如学习率、隐藏层节点数和训练次数等)的选择对于模型的训练效果有着显著影响。学习率决定了每次权重更新的步长,过高的学习率可能导致训练不稳定,而过低的学习率则可能导致训练时间过长。通过不断调整这些超参数,我们可以找到使模型达到最佳性能的参数组合。

6. 训练和预测

在训练过程中,通过不断地前向传播和反向传播来调整模型的权重。训练完成后,我们可以使用训练好的模型进行预测。通过输入不同的数据,我们可以得到模型的预测输出,并评估其性能。

for input_data in inputs:_, prediction = forward_propagate(input_data, trained_weights_input_hidden, trained_weights_hidden_output)print(f'Input: {input_data}, Prediction: {prediction}')

总结

通过这次实现简单神经网络的实践,我更加深入地理解了神经网络的工作原理和训练过程。尽管现代深度学习框架大大简化了神经网络的实现和训练过程,但理解这些基本原理对于深入掌握和应用深度学习技术仍然至关重要。这个练习不仅帮助我巩固了理论知识,还提高了我解决实际问题的能力。未来,我会继续探索更复杂的网络结构和优化算法,不断提升自己的深度学习技能。

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

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

相关文章

excel系列(二) - 利用 easypoi 快速实现 excel 文件导入导出

一、介绍 在上篇文章中,我们介绍了 apache poi 工具实现 excel 文件的导入导出。 本篇我们继续深入介绍另一款优秀的 excel 工具库:easypoi。 二、easypoi 以前的以前,有个大佬程序员,跳到一家公司之后就和业务人员聊上了&…

springboot项目,指定某些接口不被拦截方法

1、监听器(Interceptor)拦截处理 在 Spring Boot应用中,如果你希望某些请求地址不被监听器(Interceptor)拦截处理,可以通过配置拦截器的路径来实现。拦截器通常用于在请求前后进行处理,比如权限…

Parallels Desktop 19 for Mac(PD19虚拟机)详细图文安装教程分享

Parallels Desktop 19是一款功能丰富、性能强大且易于使用的虚拟机软件,它可以让您在Mac上同时运行多个操作系统,为您提供更大的灵活性和兼容性。 Parallels Desktop 19 for Mac(PD19虚拟机)下载安装包 Parallels Desktop 19 for Mac(PD19虚拟机)详细图…

kubernetes v1.29.6集群部署

文章目录 1、配置hostname2、安装k8s的Runtime2.1、安装Docker2.2 安装cri-dockerd 3、安装k8s3.1、安装k8s组件3.2、初始化k8s3.2.1、拉取k8s相关镜像3.2.2、集群初始化 3.3、安装网络组件calico3.3.1、在线安装calico3.3.2、离线安装calico 3.4、节点加入 4、部署应用4.1、命…

linux端口,进程管理,主机状态监控

linux端口,进程管理,主机状态监控 一、端口 1、什么是端口?2、端口的划分2、查看端口占用 二、进程 1、什么是进程2、查看进程信息2、关闭进程 三、主机状态监控 1、查看资源占用2、磁盘信息监控3、查看网络情况 四、命令总结 一、端口 1、什么是端口…

电力调度台如何助力电力指挥中心更智慧

在现代电力系统的复杂运行环境中,电力调度台正逐渐成为电力指挥中心实现智慧化管理的关键力量。 电力调度台具备强大的信息集成与处理能力。它能够将来自不同监测系统、传感器和数据源的海量数据汇聚一处,包括电力设备的实时运行状态、电力负荷的动态变化…

springmvc-09

如果想在拦截的方法里面得到从前台传入的参数,怎么得到 在Spring MVC中,可以通过在拦截器中使用HttpServletRequest对象来获取前台传入的参数。通过HttpServletRequest对象,你可以使用getParameter方法获取前台传入的参数值。 以下是一个示例&#xff1…

C++客户端Qt开发——常用控件(输入类控件)

4.输入类控件 ①Line Edit 单行输入框 属性 说明 text 输入框中的文本 input 输入内容格式约束 maxLength 最大长度 frame 是否添加边框 echoMode 显示方式 QLineEdit::Normal:这是默认值,文本框会显示输入的文本。 QLineEdit::Password&…

C++客户端Qt开发——常用控件(多元素控件)

5.多元素控件 Qt中提供的多元素控件有: QListWidget QListView QTablewidget QTableview QTreewidget QTreeview xxWidget和xView之间的区别 以QTableWidget和QTableView为例. QTableView是基于MVC设计的控件.QTableView自身不持有数据.使用QTableView的时候需要…

Django任务管理

1、用django-admin命令创建一个Django项目 django-admin startproject task_manager 2、进入到项目下用命令创建一个应用 cd task_manager python manage.py startapp tasks 3、进入models.py定义数学模型 第2步得到的只是应用的必要空文件,要开始增加各文件实际…

STM32(五):STM32指南者-按键控制灯开关实验

说明:源代码和教程可从野火处下载,本博客为了记录学习过程STM32(四):STM32指南者-跑马灯实验的基础上 一、采用轮询方式1、bsp_key.h2、bsp_key.c3、main.c 二、采用中断方式1、bsp_exti.h2、bsp_exti.c3、stm32f10x_i…

AI写作不懂提示词 大象Prompt 保姆级系列教程三

一、提示词的核心价值究竟是啥? 最近跟不少业内朋友探讨这事儿,我觉得:提示词的核心价值在于对方法论的封装以及由此带来的知识传播速度加快。 通俗讲,假如你熟悉的行业里有个厉害的“老师傅”,他在核心业务上有好多心…

社交媒体与内容营销:广告如何巧妙融入不干扰用户体验

一、社交媒体:朋友圈的小广告,你忍得住吗? 社交媒介,人们耳熟能详,且常常参与其中的领域。比如微信、微博、抖音等,它们已成为我们获取信息和商家推销产品的重要渠道。当您浏览朋友圈时,是否曾…

jvm 07 GC算法,内存池

01 垃圾判断算法 1.1引用计数算法 最简单的垃圾判断算法。在对象中添加一个属性用于标记对象被引用的次数,每多一个其他对象引用,计数1, 当引用失效时,计数-1,如果计数0,表示没有其他对象引用,…

架构设计-NX的二次开发API架构设计介绍

1.与整体的关系 2.API设计目标 能够允许用户访问NX的所有UI工具组件,二次开发用户能够编写外观和运行行为类似NX的应用程序。能够允许用户直接访问NX数据模型即使底层数据结构和功能实现发生很大变化,API接口保持稳定,不会影响上层用户。 3…

ARM架构(一)—— ARMV8V9基础概念

目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…

设计师必备:将复杂逻辑做成可视化图表,别说你不会,看过来。

将复杂逻辑做成可视化图可以帮助人们更直观地理解和分析复杂的关系和流程。以下是一般步骤: 1.确定目的: 首先需要明确制作可视化图的目的是什么,是为了展示数据的关系、流程的步骤、还是其他目的。不同的目的会对可视化图的设计和展示方式…

Ubuntu系统和硬件问题

来自🥬🐶程序员 Truraly | 田园 的博客,最新文章首发于:田园幻想乡 | 原文链接 | github (欢迎关注) 文章目录 虚拟机 linux 没网中文显示和中文输入法键盘失灵zip 解压中文乱码主系统和虚拟机之间复制粘贴…

如何在Linux系统上查找以太网卡驱动名称及其版本

说明 目录: 通过dmesg命令查看驱动名称及版本 通过ethtool命令查看驱动名称及版本 通过lshw命令查看驱动名称及版本 要使网卡硬件能够正常的运行,需要在Linux操作系统上提供合适的驱动程序,例如:用于intel网卡的ixgbe驱动。网卡…

FastAPI 学习之路(四十九)WebSockets(五)修复接口测试中的问题

其实代码没有问题,但是我们忽略了一个问题,就是在正常的开发中,肯定是遇到过这样的情况,我们频繁的有客户端链接,断开连接,需要统一的管理这些链接,那么应该如何管理呢。其实可以声明一个类去管…