【深度学习】最强算法之:人工神经网络(ANN)

人工神经网络ANN

  • 1、引言
  • 2、人工神经网络(ANN)
    • 2.1 定义
      • 2.1.1 定义
      • 2.1.2 应用场景
    • 2.2 核心原理
    • 2.3 实现方式
    • 2.4 算法公式
    • 2.5 代码示例
  • 3、总结

1、引言

小屌丝:鱼哥,看新闻没?
小鱼:新闻天天看,啥事大惊小怪的。
小屌丝:就是,YL总统的事情
小鱼:…你关心的可真够远的啊。
小屌丝:这很震惊的啊
小鱼:你啊, 先关心关心你的深度学习领域知识吧。
小屌丝:额… 这…
小鱼:ANN 了解吗?
小屌丝:不了解
小鱼:KNN了解吗?
小屌丝:不了解
小鱼:你看,这都不了解, 还不赶紧学习学习。
小屌丝:哦,好哦。
小屌丝:不对,这总感觉哪里怪怪的。
小鱼:没有,你赶紧学习吧
小屌丝:这… 啥情况
在这里插入图片描述

2、人工神经网络(ANN)

2.1 定义

2.1.1 定义

人工神经网络是由大量的节点(或称为“神经元”)组成的网络结构,这些节点之间通过“突触”相互连接。

每个神经元可以接收输入,对输入进行加权和,然后通过一个非线性激活函数生成输出。

通过这种方式,ANN能够捕捉和表示复杂的输入输出关系。

2.1.2 应用场景

ANN应用广泛,包括但不限于以下几个领域:

  • 图像识别和处理:如人脸识别、物体检测。
  • 语音识别:如智能助手的语音命令解析。
  • 自然语言处理:如机器翻译、情感分析。
  • 预测模型:如股票市场预测、天气预报。
  • 游戏和仿真:如自动驾驶汽车的模拟训练。

2.2 核心原理

ANN的核心原理基于“学习”,即通过调整网络中的突触权重来最小化模型输出和实际输出之间的误差。

这一过程通常通过一个叫做反向传播(Backpropagation)的算法来完成,配合梯度下降(Gradient Descent)或其变体进行权重的优化更新

2.3 实现方式

实现ANN通常需要以下几个步骤:

  • 初始化网络:设计网络结构(输入层、隐藏层、输出层的节点数)并随机初始化权重。
  • 前向传播:输入数据在网络中前向传递,每个节点计算其输出。
  • 计算损失:根据网络输出和实际值计算损失函数。
  • 反向传播:根据损失函数计算每个权重的梯度,并更新权重。
  • 重复2-4步骤:直到满足终止条件(如迭代次数、误差阈值等)。
    在这里插入图片描述

2.4 算法公式

一个基本的ANN模型,其输出 ( y ) (y) (y)可以表示为: [ y = f ( ∑ i = 1 n w i ⋅ x i + b ) ] [y = f(\sum_{i=1}^{n} w_i \cdot x_i + b)] [y=f(i=1nwixi+b)]
其中, ( w i ) (w_i) (wi)是权重, ( x i ) (x_i) (xi)是输入, ( b ) (b) (b)是偏置项, ( f ) (f) (f)是激活函数。

2.5 代码示例

# -*- coding:utf-8 -*-
# @Time   : 2024-04-05
# @Author : Carl_DJ# 导入必要的库
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import to_categorical# 生成模拟数据
# 二分类问题
x_train = np.random.random((1000, 20))  # 训练数据:1000个样本,每个样本20个特征
y_train = np.random.randint(2, size=(1000, 1))  # 训练标签:1000个样本的标签(0或1)
y_train = to_categorical(y_train)  # 将标签转换为分类编码# 定义模型
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=20))  # 第一层密集连接层,有64个神经元,激活函数为ReLU
model.add(Dense(64, activation='relu'))  # 第二层密集连接层,有64个神经元,激活函数为ReLU
model.add(Dense(2, activation='softmax'))  # 输出层,有2个神经元对应两个类别,使用softmax激活函数# 编译模型
model.compile(optimizer='adam',  # 优化器使用Adamloss='categorical_crossentropy',  # 损失函数使用分类交叉熵metrics=['accuracy'])  # 评估模型性能的指标使用准确率# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=32)  # 训练模型,迭代10次,每批次32个样本# 模型总结
model.summary()

解析

  • 导入库:首先,我们导入了必要的库,包括numpy用于数据操作,keras中的Sequential模型构建ANN,以及Dense用于构建密集连接层。

  • 生成模拟数据:为了简化,这里我们生成了一些随机数据作为训练数据和标签。实际应用中,这些数据将来自于真实的数据集。

  • 定义模型:使用Sequential模型顺序堆叠各层。模型的第一层需要指定input_dim,即输入数据的维度。接下来添加了两个密集连接层,每层都使用ReLU激活函数。最后,输出层的神经元数量应与分类任务的类别数量相匹配,在本例中为2,使用softmax函数进行激活以进行分类。

  • 编译模型:在编译模型时,我们指定优化器(adam)、损失函数(categorical_crossentropy)和评价指标(accuracy)。

  • 训练模型:使用fit方法训练模型,指定训练数据、标签、训练的轮次(epochs)和每批次的样本数(batch_size)。

  • 模型结果统计最后,summary方法提供了模型的架构概览,包括每层的名称、类型、输出形状和参数数量。
    在这里插入图片描述

3、总结

人工神经网络作为深度学习的基石,其灵活性和强大的表达能力使其成为解决复杂非线性问题的有力工具。

通过不断优化和改进,ANN在各个领域的应用将更加广泛,性能也将更加出色。

不过,也需要注意的是,ANN模型的训练需要大量的数据和计算资源,并且模型的解释性相对较差,这些都是目前深度学习领域面临的挑战。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 企业认证金牌面试官
  • 多个名企认证&特邀讲师等
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)评测一等奖获得者

关注小鱼,学习【机器学习】&【深度学习】领域的知识。

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

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

相关文章

Python数据分析-心脏病(随机森林预测分析)

本次案例分析用心脏病数据集来做随机森林模型预测 导入基本的数据分析包 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score…

【Python】【报错解决】【无法安装socket库】No matching distribution found for socket

一、问题描述 如下图,笔者在做一个安全相关的项目时,遇到如下报错: No matching distribution found for socket 在尝试安装socket(套接字)库时报错,报错代码: pip install socket二、原因及解…

【Lexus.4】Executive Sedan——Dismantling Follow-up

文章目录 碰撞测试前后防撞钢梁偏置碰撞A/B/C柱,边梁抗拉、屈服强度 底盘发动机轮上马力零部件供应商 来自2021《懂车大爆炸》——是一档为汽车爱好者、购车者和对汽车结构感兴趣的人提供的专业、生动的教学视频。它通过全拆散的方式,让观众更直观地了解…

路由引入实验(思科)

华为设备参考:路由引入实验(华为) 技术简介 路由引入技术在网络通信中起着重要的作用,能够实现不同路由协议之间的路由传递,并在路由引入时部署路由控制,实现路径或策略的控制 实验目的 不同的路由协议之…

抽样方法你真的懂么?

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:抽样方法的魅力与挑战 二、有放回抽样与无放回抽样的比较 1. 有放回抽…

精通C++ STL(二):string类的模拟实现

目录 string类各函数接口总览 默认成员函数 构造函数 拷贝构造函数 赋值运算符重载函数 析构函数 迭代器相关函数 begin和end 容量和大小相关函数 size和capacity reserve和resize empty 修改字符串相关函数 push_back append operator insert erase clear swap c_str 访…

跨平台之用VisualStudio开发APK嵌入OpenCV(一)

序 本篇是杂谈以及准备工作(此处应无掌声) 暂时不管iOS(因为开发hello world都要年费) 软件: Visual Studio 2019(含Android SDK和NDK编译器等) OpenCV 这是一个女仆级的系列文章&#xf…

探索数据结构:单链表的实践和应用

🔑🔑博客主页:阿客不是客 🍓🍓系列专栏:渐入佳境之数据结构与算法 欢迎来到泊舟小课堂 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 ​ 一、前言 前面我们学习了数据结构中的顺序表&…

扭蛋机小程序开发,数字化发展对行业带来的优势

随着科技的不断进步和大众对娱乐消费需求的提高,线上扭蛋机得到了快速发展,市场规模不断扩大。线上扭蛋机是基于淘宝的小程序,它以电商的模式让消费者进行虚拟扭蛋,获得各类商品,扭蛋机小程序中的商品包括玩具、IP周边…

线段(线性dp)

题目链接:[TJOI2007] 线段 - 洛谷 思路: f[i][0]表示走完第i行且停在第i行的左端点最少用的步数 f[i][1]同理,停在右端点的最少步数。 那么转移就很简单了,走完当前行且停到左端点,那么一定是从右端点过来的&#x…

算法课程笔记——高斯消元

算法课程笔记——高斯消元 先乘后除&#xff0c;精度 #include<bist/stdc.h>usingnamespacestd; #definemaxn 2800intn,m,x,ans; bitset<N>a[N]; voidgauss(){ intcnt0; for(inti1;i<n;i){ intmaxxcnt1; for(intji1;j<n;j){ …

2024年上半年软件系统架构师考试【回忆版】

文章目录 考试时间考试地点综合知识案例分析1、微服务架构的优点和缺点2、质量属性的6个要素3、分布式锁 Redis的缺点4、MongoDB 存储矢量图的优势 论文回忆版论文一、论单元测试的设计与应用论文二、论大数据模型的设计与应用论文三、论模型驱动的架构设计及应用论文四、论云自…

Android端 可使用Yolov5训练 路标识别

相信大家对于路标识别&#xff0c;红绿灯识别&#xff0c;图形识别opencv中也是一件烦人的事情&#xff0c;其参数是及其受到现实环境因素的影响的&#xff0c;那么今天我就给大家推荐一种方式&#xff0c;缺点是周期长&#xff0c;但其优点是如果训练效果好久对于环境的各种变…

django在线考试系统-计算机毕业设计源码78268

摘 要 本论文主要论述了如何使用python语言、Django框架开发一个在线考试系统&#xff0c;本系统将严格按照软件开发流程&#xff0c;进行各个阶段的工作&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述该系统的当前背景以及系统开发的目的&#xf…

阿里云产品DTU评测报告(三)

这阿里云产品DTU评测报告&#xff08;三&#xff09; 连接物联网平台创建项目 连接物联网平台 在开始连接物联网平台之前&#xff0c;首先需要下载开发工具Visual Studio Code 开发工具&#xff0c;开发工具可以到https://code.visualstudio.com/ 去查找下载&#xff0c;下载完…

安泰电子:功率放大器的选择方法有哪些

选择适合的功率放大器是实现电子系统中的关键步骤之一。以下是一些选择功率放大器的常用方法和考虑因素&#xff1a; 功率需求&#xff1a;首先确定你的系统需要多大的功率输出。功率输出需求通常由被驱动设备的功率要求决定。计算出所需功率后&#xff0c;选择一个具有适当功率…

GaussDB数据库的备份与恢复

1.逻辑备份-gs_dump gs_dump是一款用于导出数据库相关信息的工具&#xff0c;支持导出完整一致的数据库对象&#xff08;数据库、模式、表、视图等&#xff09;数据&#xff0c;同时不影响用户对数据库的正常访问。 备份sql语句 gs_dump是openGauss用于导出数据库相关信息的工…

Redis使用Set实现点赞功能

文章目录 set 数据类型介绍不排序实现排序实现 set 数据类型介绍 Redis中的set类型是一组无序的字符串值。 set通过其独特的数据结构和丰富的命令提供了在存储和处理集合元素方面的一些非常有用的功能。下面列出了主要的set类型命令&#xff1a; SADD key member1 [member2]&a…

不可错过的数据存储指南:JVS物联网平台存储策略详解

在物联网时代&#xff0c;数据的采集、存储和分析成为了关键环节。随着设备点位不断生成大量数据&#xff0c;如何高效地管理和保存这些数据&#xff0c;同时考虑存储成本和后续的数据分析价值&#xff0c;成为了亟待解决的问题。JVS物联网平台提供了灵活多样的存储策略&#x…

【BI 可视化插件】怎么做? 手把手教你实现

背景 对于现在的用户来说&#xff0c;插件已经成为一个熟悉的概念。无论是在使用软件、 IDE 还是浏览器时&#xff0c;插件都是为了在原有产品基础上提供更多更便利的操作。在 BI 领域&#xff0c;图表的丰富性和对接各种场景的自定义是最吸引人的特点。虽然市面上现有的 BI 软…