第三章:人工智能深度学习教程-基础神经网络(第二节-ANN 和 BNN 的区别)
在本文中,我们将了解单层感知器及其使用 TensorFlow 库在Python中的实现。神经网络的工作方式与我们的生物神经元的工作方式相同。

生物神经元的结构
生物神经元具有三个基本功能
-
接收外部信号。
-
处理信号并增强是否需要发送信息。
-
将信号传递给目标细胞,目标细胞可以是另一个神经元或腺体。
同样,神经网络也能发挥作用。

机器学习中的神经网络
什么是单层感知器?
它是最古老且最早引入的神经网络之一。它是由弗兰克·罗森布拉特 (Frank Rosenblatt)于1958 年提出的。感知器也称为人工神经网络。感知器主要用于计算AND、OR、NOR等具有二进制输入和二进制输出的逻辑门。
感知器的主要功能是:-
-
从输入层获取输入
-
对它们进行加权并总结。
-
将总和传递给非线性函数以产生输出。

单层神经网络
这里的激活函数可以是sigmoid、tanh、relu等任何函数。根据需求,我们将选择最合适的非线性激活函数以产生更好的结果。现在让我们实现一个单层感知器。
单层感知器的实现
现在让我们使用 TensorFlow 库使用“MNIST”数据集实现一个单层感知器。
Step1:导入必要的库
-
Numpy – Numpy 数组非常快,可以在很短的时间内执行大量计算。
-
Matplotlib – 该库用于绘制可视化效果。
-
TensorFlow – 这是一个用于机器学习和人工智能的开源库,提供一系列函数以通过单行代码实现复杂的功能。
Python3
import numpy as np
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt# 开启内联绘图
%matplotlib inline
步骤 2:现在使用导入版本的张量流中的“Keras”加载数据集。
Python3
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
这段代码导入了一些常用的Python库,包括NumPy(用于数值计算)、TensorFlow(用于深度学习)、Keras(用于构建神经网络模型)以及Matplotlib(用于绘图和数据可视化)。通过
%matplotlib inline,我们可以在Jupyter Notebook或IPython环境中直接在输出单元格中显示图形,而不需要单独的窗口。这些库的使用使得在进行深度学习和数据可视化任务时更加方便。
步骤 3:现在显示数据集中单个图像的形状和图像。图像大小包含28*28的矩阵,训练集长度为60,000,测试集长度为10,000。
Python3
# 获取训练集的长度
len(x_train)# 获取测试集的长度
len(x_test)# 获取第一个训练图像的形状
x_train[0].shape# 显示第一个训练图像
plt.matshow(x_train[0])
这段代码执行以下操作:
len(x_train)返回训练集中样本的数量。len(x_test)返回测试集中样本的数量。x_train[0].shape获取第一个训练图像的形状,通常是一个28x28像素的二维数组。plt.matshow(x_train[0])用Matplotlib库显示第一个训练图像,可以通过该图像来查看手写数字的外观。这些操作有助于了解MNIST数据集的规模和内容,并可以用于数据预处理和可视化。
输出:

来自训练数据集的样本图像
步骤 4:现在标准化数据集,以便快速准确地进行计算。
Python3
# 对数据集进行标准化
x_train = x_train / 255
x_test = x_test / 255# 扁平化数据集以便进行模型构建
x_train_flatten = x_train.reshape(len(x_train), 28*28)
x_test_flatten = x_test.reshape(len(x_test), 28*28)
这段代码执行以下操作:
对训练集
x_train和测试集x_test进行标准化,将像素值从0到255的范围缩放到0到1的范围,这是一种常见的数据预处理步骤。扁平化数据集,将每个图像从一个二维数组(28x28像素)转换为一个一维数组(784个像素),以便于后续的模型构建。这是因为深度学习模型通常需要输入的是一维数据。
这些操作是为了准备数据以用于深度学习模型的训练,以便更好地处理图像数据。
第5步:构建具有单层感知的神经网络。在这里我们可以观察到,该模型是一个单层感知器,仅包含一个输入层和一个输出层,不存在隐藏层。
Python3
model = keras.Sequential([keras.layers.Dense(10, input_shape=(784,), activation='sigmoid')
])model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy']
)model.fit(x_train_flatten, y_train, epochs=5)
这段代码执行以下操作:
创建一个Keras顺序模型,该模型包含一个具有10个神经元的全连接层(
keras.layers.Dense),输入形状为(784,),激活函数为'sigmoid'。这是一个简单的神经网络模型。编译模型,指定优化器为'adam',损失函数为'sparse_categorical_crossentropy'(适用于多类别分类问题),并选择评估指标为'accuracy'(准确度)。
使用训练数据
x_train_flatten和相应的标签y_train对模型进行训练,训练周期数为5(epochs=5)。这些操作构建了一个简单的神经网络模型,并使用训练数据对其进行了训练,以便用于多类别分类任务,例如手写数字识别。
输出:

在训练过程中,通常会产生一系列的训练日志,包括损失和准确度等信息。这些信息会在训练的每个周期(epoch)后显示。由于这些信息的输出取决于您的运行环境,我无法提供确切的训练输出。您可以将代码放入一个Jupyter Notebook或Python脚本中运行以查看详细的训练输出。
通常,您可以期望在每个周期的训练输出中看到损失值和准确度的变化,以便跟踪模型的训练进展。当训练完成后,您可以使用模型进行预测,并评估其性能,例如在测试数据上计算准确度。这些步骤通常会在训练后的代码中进行。如果您有特定的输出或问题,可以提供更多详细信息,以便我能够提供更具体的帮助。
步骤6:输出模型在测试数据上的准确率。
Python3
model.evaluate(x_test_flatten, y_test)
这段代码执行了模型的评估操作,使用测试数据
x_test_flatten和相应的测试标签y_test来计算模型在测试数据上的性能指标。这些性能指标通常包括损失值和准确度等,用于衡量模型在测试数据上的表现。评估的结果将根据模型的性能和测试数据而异,通常以一个包含指标值的列表返回。
输出:
[损失值, 准确度]
损失值表示模型在测试数据上的损失值,通常是一个非负数,表示模型对测试数据的拟合程度。准确度表示模型在测试数据上的准确度,通常以百分比形式表示,表示模型在测试数据中正确分类的比例。具体的数值将根据模型的训练和测试数据集而有所不同。您可以运行这段代码以查看实际的输出结果,以便了解模型在测试数据上的性能。
相关文章:
第三章:人工智能深度学习教程-基础神经网络(第二节-ANN 和 BNN 的区别)
在本文中,我们将了解单层感知器及其使用 TensorFlow 库在Python中的实现。神经网络的工作方式与我们的生物神经元的工作方式相同。 生物神经元的结构 生物神经元具有三个基本功能 接收外部信号。 处理信号并增强是否需要发送信息。 将信号传递给目标细胞&#x…...
回归模型原理总结及代码实现
前言 本文将介绍回归模型算法,并总结了一些常用的除线性回归模型之外的模型,其中包括一些单模型及集成学习器。 保序回归、多项式回归、多输出回归、多输出K近邻回归、决策树回归、多输出决策树回归、AdaBoost回归、梯度提升决策树回归、人工神经网络、…...
游戏开发中的“御用中介“
点击上方亿元程序员关注和★星标 引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。 游戏开发中的"御用…...
flink1.15报错 processElement_split
flink sql 完整报错 Caused by: java.lang.NullPointerExceptionat StreamExecCalc$1148.processElement_split178(Unknown Source) ~[?:?]at StreamExecCalc$1148.processElement(Unknown Source) ~[?:?]at org.apache.flink.streaming.runtime.tasks.CopyingChainingOutp…...
电脑投屏到TCL电视鼠标延迟
问题描述 提示:这里描述项目中遇到的问题: 笔记本电脑使用HDMI投屏到TCL电视,页面显示正常但是鼠标延迟反应太慢了 解决方案: 提示:这里填写该问题的具体解决方案: TCL电视设置中选择图像 → 图像类型改…...
220v插座led指示灯维修
由于220v是交流电,有反向电压的情况,而led反向通电的时候电阻无穷大,所以分压也无穷大,220v一导通就击穿,即使加了很大的电阻也没用,串联电阻只能作用于二极管正向的时候。 目前有两种方案: 方…...
软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】
软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】 课本里章节里所有蓝色字体的思维导图...
javascript自定义事件的观察者模式写法和用法以及继承
<html><head><meta http-equiv"Context-Type:text/html;charsetutf-8"/><title>自定义事件之观察者模式</title><script type"text/javascript" src"common.js"></script></head><body>&…...
蓝桥杯官网练习题(正则问题)
题目描述 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式。 小明想求出这个正则表达式能接受的最长字符串的长度。 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是 6。 输入描述 一个由 x()| 组成的正则表…...
iOS使用NSURLSession实现后台上传
NSURLSession后台上传的基本逻辑是:首先创建一个后台模式的NSURLSessionConfiguration,然后通过这个configuration创建一个NSURLSession,接着是创建相关的NSURLSessionTask,最后就是处理相关的代理事件。 1、创建NSURLSession -…...
linux之信号
Linux之信号 什么是信号信号的产生方式signalsignactionkill信号集信号屏蔽 什么是信号 信号机制是一种使用信号来进行进程之间传递消息的方法,信号的全称为软中断信号,简称软中断。 信号的本质是软件层次上对中断的一种模拟(软中断ÿ…...
golang工程中间件——redis常用结构及应用(string, hash, list)
Redis 命令中心 【golang工程中间件——redisxxxxx】这些篇文章专门以应用为主,原理性的后续博主复习到的时候再详细阐述 string结构以及应用 字符数组,redis字符串是二进制安全字符串,可以存储图片等二进制数据,同时也可以存…...
Java中数据结构(基本数据类型+引用数据类型)介绍+整理+例子+对比
一、Java数据类型分类 在Java中,数据类型可以分为两大类:内置数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。 **内置数据类型(Primitive Data Types)**是…...
SpringSecurity原理
Spring Security是Spring框架中的一个安全性框架,用于保护Web应用程序。以下是Spring Security的工作原理: 1.认证 认证是指验证用户身份。Spring Security使用过滤器链来拦截用户的请求。在对请求进行处理之前,它需要对用户进行认证。Spri…...
云表平台突破传统,企业级低代码让软件开发速度提升
随着数字化进程的加速推进,软件开发效率和成本的要求也在日益提高。在这个背景下,低代码技术的出现为企业软件开发提供了新的解决方案。低代码开发平台以其简单易用、高效灵活的特点,已经成为各行各业企业进行应用开发的首选工具。 企业中低代…...
三数之和(双指针)
15. 三数之和 - 力扣(LeetCode) 题目描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三…...
Linux-bluetooth蓝牙
蓝牙配对和蓝牙连接 蓝牙配对是指在两个蓝牙设备之间建立一种安全的关系,以确保只有已经通过授权的设备才能进行通信。在蓝牙配对过程中,设备之间将共享一个加密密钥,用于保护数据传输的安全性。通常需要在设备上输入一个PIN码或者进行手动确…...
mediasoup webrtc音视频会议搭建
环境ubuntu22.10 nvm --version 0.33.11 node -v v16.20.2 npm -v 8.19.4 node-gyp -v v10.0.1 python3 --version Python 3.10.7 python with pip: sudo apt install python3-pip gcc&g version 12.2.0 (Ubuntu 12.2.0-3ubuntu1) Make 4.2.1 npm install mediasoup3 sudo …...
【操作系统】操作系统的大端模式和小端模式
什么是大端模式、小端模式? 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中; 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地…...
Oracle(13)Maintaining Data Integrity
目录 一、基础知识 1、Data Integrity 数据库的完整性 2、Types of Constraints 约束类型 3、Constraint States 约束状态 4、Guidelines for Constraints 约束准则 二、基础操作 1、Enabling Constraints 启用约束 2、命令方式创建约束 3、修改表创建的约束 4、删除约…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
