深度学习框架探秘|Keras 应用案例解析以及 Keras vs TensorFlow vs PyTorch

引言

上一篇文章《深度学习框架探秘|Keras:深度学习的魔法钥匙》 我们初步学习了 Keras,包括它是什么、具备哪些优势(简洁易用的 API、强大的兼容性、广泛的应用领域),以及基本使用方法。本文,我将会带大家了解 Keras 在图像处理与自然语言处理领域的应用案例。以及 KerasTensorFlowPyTorch 的对比。话不多说,下面我们先从 Keras 的应用案例开始。

一、Keras 应用案例解析

图片来源于网络

(一)图像分类

在自动驾驶的浪潮中,交通标志识别作为关键技术,其重要性不言而喻。它就像是车辆的 “眼睛”,帮助车辆快速准确地理解道路规则,为安全行驶提供有力保障。接下来,让我们以交通标志识别为例,深入了解 Keras 在图像分类任务中的应用。

1、数据准备

巧妇难为无米之炊,构建模型的第一步是准备高质量的数据。在交通标志识别中,常用的数据集是德国交通标志识别基准(GTSRB) ,它就像是一个装满各种交通标志图片的大宝库,包含了 43 种不同类别的交通标志,图片尺寸在 15x15 到 250x250 像素之间 。但这些原始图片就像未经雕琢的璞玉,需要进行一系列预处理才能使用。

首先,要对图像进行缩放,使它们具有相同的尺寸,就像给所有图片穿上统一尺寸的 “衣服”,方便后续处理。这里我们将图像统一调整为 48x48 像素。代码实现如下:

from skimage import transformimport cv2def preprocess_img(img):img = transform.resize(img, (48, 48))return imgimg = cv2.imread('traffic_sign.jpg')img = preprocess_img(img)

其次,由于数据集中的图像拍摄时间和环境不同,导致图像的亮度和对比度存在差异。为了让模型能够更好地学习交通标志的特征,需要对图像进行直方图归一化处理,使不同光照条件下的图像具有相似的分布。这一步就像是给图像做了一次 “美颜”,让它们的亮度更加均匀。示例代码如下:

from skimage import color, exposuredef preprocess_img(img):hsv = color.rgb2hsv(img)hsv[:, :, 2] = exposure.equalize_hist(hsv[:, :, 2])img = color.hsv2rgb(hsv)img = transform.resize(img, (48, 48))return imgimg = cv2.imread('traffic_sign.jpg')img = preprocess_img(img)

完成图像预处理后,还需要将数据划分为训练集、验证集和测试集。一般来说,训练集用于训练模型,让模型学习交通标志的特征;验证集用于调整模型的超参数,防止模型过拟合;测试集用于评估模型的性能。通常按照 70%、15%、15% 的比例进行划分。以 Scikit - learn 库中的train_test_split函数为例,代码如下:

from sklearn.model_selection import train_test_splitimport numpy as np# 假设imgs是预处理后的图像数组,labels是对应的标签数组x_train, x_test, y_train, y_test = train_test_split(imgs, labels, test_size=0.3)x_train, x_val, y_train, y_val = train_test_split(x_train, y_train, test_size=0.5)

2、模型构建

有了准备好的数据,接下来就可以使用 Keras 构建卷积神经网络(CNN)模型了。CNN 就像是一个专门用来提取图像特征的 “超级探测器”,非常适合处理图像分类任务。

下面是一个简单的 CNN 模型结构示例:

from keras.models import Sequentialfrom keras.layers import Conv2D, MaxPool2D, Dropout, Flatten, Densemodel = Sequential()model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(48, 48, 3)))model.add(MaxPool2D(pool_size=(2, 2)))model.add(Conv2D(64, (3, 3), activation='relu'))model.add(MaxPool2D(pool_size=(2, 2)))model.add(Dropout(0.25))model.add(Flatten())model.add(Dense(128, activation='relu'))model.add(Dropout(0.5))model.add(Dense(43, activation='softmax'))

在这个模型中,首先是两个卷积层 Conv2D,它们通过卷积核在图像上滑动,提取图像的局部特征,就像用放大镜仔细观察图像的各个部分。激活函数 relu 为模型引入了非线性,使模型能够学习到更复杂的特征。接着是两个池化层 MaxPool2D ,它们的作用是对特征图进行下采样,减少数据量,同时保留重要的特征,就像对图像进行了一次 “压缩”,去掉了一些不重要的细节。Dropout 层则是为了防止模型过拟合,它在训练过程中随机 “丢弃” 一些神经元,让模型学习到更鲁棒的特征。最后,通过 Flatten将多维的特征图展平为一维向量,再通过全连接层 Dense 进行分类预测,输出 43 个类别的概率分布,对应 43 种交通标志。

3、模型训练

构建好模型后,就可以对模型进行训练了。在训练之前,需要先编译模型、指定优化器、损失函数和评估指标。

model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])

这里 使用 adam 优化器 ,它能够自适应地调整学习率,使模型更快地收敛。对于多分类问题, 使用 categorical_crossentropy 作为损失函数 ,它可以衡量模型预测值与真实标签之间的差异。 评估指标选择accuracy ,即准确率,用于评估模型在训练和验证过程中的性能。

接下来开始训练模型

model.fit(x_train, y_train,batch_size=32,epochs=10,validation_data=(x_val, y_val))

在训练过程中,有几个参数需要我们注意:

  • batch_size 表示每次训练时使用的样本数量,这里设置为 32,模型会每次从训练集中取出 32 个样本进行训练。
  • epochs 表示训练的轮数,这里设置为 10,即模型会对整个训练集进行 10 次训练。
  • validation_data用于指定验证数据,模型会在每一轮训练结束后,在验证集上评估模型的性能,查看模型是否过拟合。

4、模型部署

经过训练和优化,模型在测试集上达到了满意的性能后,就可以将其部署到实际应用中了。比如将模型集成到自动驾驶系统中,让车辆在行驶过程中实时识别交通标志。在部署时,需要将模型保存为合适的格式,以便在不同的环境中使用。 Keras 提供了 save 方法,可以将模型保存为 HDF5 格式的文件

model.save('traffic_sign_model.h5')

在实际应用中,可以使用相应的库加载模型,并对新的图像进行预测。例如,在 Python 中可以使用以下代码加载模型并进行预测:

from keras.models import load_modelimport cv2import numpy as np
//加载模型
model = load_model('traffic_sign_model.h5')img = cv2.imread('new_traffic_sign.jpg')img = preprocess_img(img)img = np.expand_dims(img, axis=0)prediction = model.predict(img)predicted_class = np.argmax(prediction)

通过以上步骤,我们就完成了从数据准备、模型构建、训练到最终部署的全过程,成功实现了基于 Keras 的交通标志识别系统。在这个过程中,每个环节都至关重要,需要我们精心处理和优化,才能让模型达到最佳的性能。

(二)自然语言处理

在社交媒体和电商平台飞速发展的今天,用户生成的文本数据呈爆炸式增长。如何快速准确地了解用户对产品或服务的态度,成为了企业关注的焦点。情感分析作为自然语言处理中的一项重要任务,能够帮助我们从海量的文本数据中提取出用户的情感倾向,判断文本是积极、消极还是中性的。接下来,我们就 以情感分析为例,看看 Keras 在自然语言处理中的强大应用。

1、文本预处理

自然语言处理的第一步是对文本进行预处理,这一步就像是给原始文本做一次 “大扫除”,去除其中的噪声和无关信息,将其转换为模型能够处理的形式。

假设我们有一个电影评论数据集,其中包含了大量的用户评论和对应的情感标签(正面或负面)。首先,需要 读取数据。可以使用 Python 的 pandas 库来读取 CSV 格式的数据集,代码如下:

import pandas as pddata = pd.read_csv('movie_reviews.csv')reviews = data['review'].tolist()labels = data['sentiment'].tolist()

读取数据后,需要对文本进行清洗,去除 HTML 标签、特殊字符和标点符号。这里可以使用正则表达式来实现,示例代码如下:

import redef clean_text(text):text = re.sub(r'<.\*?>', '', text)  # 去除HTML标签text = re.sub(r'[^\w\s]', '', text)  # 去除标点符号return textcleaned_reviews = [clean_text(review) for review in reviews]

清洗完文本后,接下来是分词,将文本拆分成单个的单词。在 Python 中,可以使用 nltk 库或 spaCy 库进行分词。以nltk库为例,代码如下:

from nltk.tokenize import word_tokenizetokenized_reviews = [word_tokenize(review) for review in cleaned_reviews]

分词后,还需要将单词转换为数字序列,以便模型能够处理。这就需要用到词嵌入(Word Embedding)技术,将每个单词映射到一个低维的向量空间中。在 Keras 中,可以使用 Tokenizer 类来实现这一过程,同时还可以对序列进行填充,使所有序列具有相同的长度。示例代码如下:

from keras.preprocessing.text import Tokenizerfrom keras.preprocessing.sequence import pad_sequencestokenizer = Tokenizer(num_words=10000)tokenizer.fit_on_texts(tokenized_reviews)sequences = tokenizer.texts_to_sequences(tokenized_reviews)maxlen = 100padded_sequences = pad_sequences(sequences, maxlen=maxlen)

这里 num_words 表示只考虑出现频率最高的 10000 个单词,maxlen 表示将所有序列填充或截断为长度 100。

2、模型搭建

完成文本预处理后,就可以使用 Keras 搭建情感分析模型了。在自然语言处理中,循环神经网络(RNN)及其变体,如长短时记忆网络(LSTM) 门控循环单元(GRU),由于能够处理序列数据中的长期依赖关系,非常适合情感分析任务。

下面是一个使用 LSTM 搭建的情感分析模型示例:

from keras.models import Sequentialfrom keras.layers import Embedding, LSTM, Densemodel = Sequential()model.add(Embedding(input_dim=10000, output_dim=128, input_length=maxlen))model.add(LSTM(units=64))model.add(Dense(units=1, activation='sigmoid'))

在这个模型中,主要有三层:

  • 首先是一个 嵌入层 Embedding ,它将单词的数字序列转换为低维的向量表示,就像给每个单词赋予了一个独特的 “数字指纹”。
    • input_dim表示词汇表的大小,即前面设置的 10000;
    • output_dim表示嵌入向量的维度,这里设置为 128;
    • input_length表示输入序列的长度,即前面设置的maxlen
  • 接着是一个 LSTM 层 ,它能够捕捉文本中的长期依赖关系,学习到文本的语义信息。
  • 最后是一个 全连接层 Dense ,使用 sigmoid 激活函数,输出一个 0 到 1 之间的概率值,表示文本为正面情感的概率。如果概率大于 0.5,则判断为正面情感;否则为负面情感。

3、训练与评估

搭建好模型后,同样需要先编译模型,指定优化器、损失函数和评估指标。对于二分类的情感分析任务,通常使用 binary_crossentropy 作为损失函数,adam 作为优化器,评估指标可以选择准确率 accuracy

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])

然后开始训练模型

model.fit(padded_sequences, labels,batch_size=32,epochs=10,validation_split=0.2)

在训练过程中,

  • batch_size设置为 32,即每次从训练集中取出 32 个样本进行训练;
  • epochs设置为 10,即对整个训练集进行 10 次训练;
  • validation_split设置为 0.2,表示将 20% 的训练数据作为验证集,用于评估模型在训练过程中的性能,防止模型过拟合。

训练完成后,使用测试集对模型进行评估,查看模型的性能表现:

test_sequences = tokenizer.texts_to_sequences(test_tokenized_reviews)test_padded_sequences = pad_sequences(test_sequences, maxlen=maxlen)test_labels = test_data['sentiment'].tolist()loss, accuracy = model.evaluate(test_padded_sequences, test_labels)print(f'Test loss: {loss}, Test accuracy: {accuracy}')

通过以上步骤,我们就完成了基于 Keras 的情感分析任务,从原始的文本数据中成功提取出了用户的情感倾向。在实际应用中,还可以进一步优化模型,如调整超参数、使用预训练的词向量等,以提高模型的性能。

二、Keras 与其他框架的对比

在深度学习的广阔天地里, Keras 并非独自闪耀,还有许多其他优秀的框架,如 TensorFlowPyTorch 等,它们各自散发着独特的光芒,在不同的场景中发挥着重要作用。接下来,让我们一同深入对比 Keras 与这些主流框架,探寻它们的优势与适用场景,以便在实际项目中做出明智的选择。

在这里插入图片描述

(一)Keras 与 TensorFlow

Keras 与 TensorFlow 有着千丝万缕的联系,如今 Keras 已成为 TensorFlow 的官方高层 API,即 tf.keras 。但它们在很多方面仍存在差异。

易用性来看,Keras 堪称 “新手友好型” 框架的典范。其 API 设计简洁直观,高度抽象,开发者只需关注模型的搭建和训练逻辑,无需过多操心底层细节,就像驾驶一辆配备了自动驾驶辅助系统的汽车,操作简单便捷。以构建一个简单的神经网络为例,使用 Keras 可能只需短短十几行代码,就能轻松完成模型的搭建与编译。TensorFlow 原生 API 则相对复杂,更像是驾驶一辆手动挡汽车,需要开发者对计算图、张量操作等底层概念有深入理解,在构建模型时需要编写更多的代码来处理各种细节,学习曲线较陡。

灵活性方面,TensorFlow 更胜一筹。它允许开发者对模型进行深度定制,精细控制每一个计算步骤,就像一位经验丰富的工匠,可以根据自己的创意和需求,对原材料进行随心所欲的加工。Keras 由于其高度封装的特性,在灵活性上相对受限,不过对于大多数常见的深度学习任务,Keras 的灵活性也能满足需求。

应用场景来看, Keras 适用于快速原型开发、初学者学习以及对模型灵活性要求不高的中小型项目。比如在一些小型创业公司的产品开发初期,需要快速验证模型的可行性,Keras 就能大显身手。TensorFlow 则更适合大规模机器学习、生产环境部署以及对模型性能和灵活性要求极高的复杂项目。例如,谷歌的一些大型深度学习项目,如语音识别、图像搜索等,都大量使用了 TensorFlow。

(二)Keras 与 PyTorch

Keras 和 PyTorch 也各有千秋。下面主要从设计理念、计算图构建、社区支持和生态系统以及应用场景来分别对比 Keras 和 PyTorch:

设计理念上,Keras 追求简单易用,致力于让深度学习变得触手可及,就像一把万能钥匙,能轻松打开深度学习的大门。PyTorch 则强调灵活性和动态性,采用动态计算图,赋予开发者更大的自由度,如同一位自由舞者,可以根据音乐的节奏和自己的灵感,自由地变换舞姿。

计算图构建方面,Keras 主要依赖后端(如 TensorFlow)实现计算图,通常为静态计算图,在模型构建阶段就固定下来,就像提前设计好的建筑蓝图,施工过程中很难更改。PyTorch 采用动态计算图,计算图在运行时构建,可根据数据和模型的变化灵活调整,就像搭建积木,随时可以根据自己的想法重新组合。这使得 PyTorch 在模型调试和实验阶段具有明显优势,开发者可以实时查看和修改计算图,快速验证新的想法。

社区支持和生态系统来看,两者都拥有活跃的社区和丰富的资源。但 PyTorch 在学术界更受欢迎,许多前沿的深度学习研究都基于 PyTorch 展开,就像一个学术交流的热门聚集地,吸引着众多科研人员。而 Keras 由于其易用性,在工业界和初学者群体中拥有广泛的用户基础,就像一款普及度极高的大众产品,深受大家喜爱。

应用场景上,Keras 适合初学者快速入门深度学习,以及进行快速的模型实验和迭代。比如在高校的深度学习课程教学中,Keras 可以帮助学生快速理解和掌握深度学习的基本概念和方法。而 PyTorch 则更适合深入的研究工作和对模型灵活性要求较高的高级应用,如开发新的深度学习算法、构建复杂的生成对抗网络等。

三、总结与展望

Keras 以其简洁易用的 API、强大的兼容性和广泛的应用领域,在深度学习的舞台上占据了重要的一席之地。它就像一位贴心的伙伴,陪伴着无数开发者从深度学习的新手逐渐成长为能够独当一面的高手。无论是在图像识别领域助力我们精准识别交通标志,保障出行安全;还是在自然语言处理领域帮助我们洞察用户的情感倾向,提升服务质量,Keras 都展现出了非凡的实力。

如果你也对深度学习充满好奇,渴望在这个充满无限可能的领域一展身手,不妨从 Keras 开始你的探索之旅。相信在 Keras 的陪伴下,你能够轻松地将自己的创意和想法转化为实际的深度学习模型,实现从理论到实践的跨越。

未来,随着深度学习技术的不断发展和创新,Keras 也必将不断进化和完善。我们有理由期待,Keras 会在更多的领域中发挥重要作用,为解决各种复杂的实际问题提供更加高效、便捷的解决方案。它将继续降低深度学习的门槛,让更多的人能够受益于这一前沿技术,推动人工智能技术在各个领域的广泛应用和深入发展。


延伸阅读

深度学习框架探秘|TensorFlow:AI 世界的万能钥匙

深度学习框架探秘|PyTorch:AI 开发的灵动画笔

深度学习框架探秘|TensorFlow vs PyTorch:AI 框架的巅峰对决

深度学习框架探秘|Keras:深度学习的魔法钥匙

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

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

相关文章

在Win11电脑上安装mysql并成功登录

首先,参照菜鸟教程的mysql安装教程https://www.runoob.com/mysql/mysql-install.html,进行的步骤如下: 1.进入mysql官网https://dev.mysql.com/downloads/mysql/,如下图所示,选择需要的版本并下载。 2.点击 Download 按钮进入下载页面,点击下图中的 No thanks, just sta…

如何正确安装Stable Diffusion Web UI以及对应的xFormers

本文是我总结的步骤&#xff0c;验证了几次保证是对的。因为正确的安装 Stable Diffusion Web UI 以及对应的 xFormers 实在是太麻烦了&#xff0c;官方和网上的步骤都是残缺和分散的&#xff0c;加上国内网络速度不理想&#xff0c;所以需要一些额外步骤&#xff0c;之前研究出…

大模型WebUI:Gradio全解12——使用Agents和Tools智能代理工具构建UI(1)

大模型WebUI&#xff1a;Gradio全解12——使用Agents和Tools智能代理工具构建UI&#xff08;1&#xff09; 前言本篇摘要12. 使用Agents和Tools智能代理工具构建UI12.1 transformers.agents原理及示例12.1.1 代理概念、类型和构建1. 代理概念2. 代理类型3. 如何构建代理&#x…

图像变换:了解透视变换原理及OpenCV实现

图像透视变换是一种将图像从一个视角转换到另一个视角的技术&#xff0c;通常用于校正拍摄角度引起的变形&#xff0c;或者模拟不同视角下的场景。 一、图像透视变换的原理 定义 透视变换&#xff08;Perspective Transformation&#xff09;是将一个平面内的点映射到另一个平…

超纯水设备的智能化控制系统为用户带来安全简便的操作体验

随着信息技术的发展&#xff0c;智能化已经成为工业装备的重要发展方向之一。超纯水设备在这方面也走在了前列&#xff0c;配备了高性能的PLC控制系统及人机交互界面&#xff0c;实现了全方位的智能监控和自动化操作。本文将重点介绍该设备的智能化控制系统&#xff0c;探讨它如…

Cursor AI开发微信小程序教程

1. 准备工作 在开始开发之前&#xff0c;需要完成以下准备工作&#xff1a; 1.1 安装微信开发者工具 前往微信开发者工具官网下载并安装适合操作系统的开发者工具。注册微信小程序账号&#xff0c;登录微信公众平台&#xff08;https://mp.weixin.qq.com&#xff09;&#…

数仓:核心概念,数仓系统(ETL,数仓分层,数仓建模),数仓建模方法(星型模型,雪花模型,星座模型)和步骤

数仓建模的核心概念 事实表&#xff08;Fact Table&#xff09;&#xff1a; 存储业务过程的度量值&#xff08;如销售额、订单数量等&#xff09;。 通常包含外键&#xff0c;用于关联维度表。 维度表&#xff08;Dimension Table&#xff09;&#xff1a; 存储描述性信息&…

jsp页面跳转失败

今天解决一下jsp页面跳转失败的问题 在JavaWeb的学习过程中&#xff0c;编写了这样一段代码&#xff1a; <html> <body> <h2>Hello World!</h2><%--这里提交的路径&#xff0c;需要寻找到项目的路径--%> <%--${pageContext.request.context…

Linux Mem -- Where the mte store and check in the real hardware platform

目录 1 前言 2 MTE tag分类 3 Address tag 4 Memory tag 5 Tag Check 6 Cortex-A710 和 CI-700 系统示例&#xff1a; 1 前言 ARM的MTE允许分配、设置、比较一个 4bit的allocation tag 为16字节粒度的物理地址。当对MTE有一定了解后&#xff0c;应该会产生如下疑问&#…

Day1 25/2/14 FRI

【一周刷爆LeetCode&#xff0c;算法大神左神&#xff08;左程云&#xff09;耗时100天打造算法与数据结构基础到高级全家桶教程&#xff0c;直击BTAJ等一线大厂必问算法面试题真题详解&#xff08;马士兵&#xff09;】https://www.bilibili.com/video/BV13g41157hK?p3&v…

Windows环境管理多个node版本

前言 在实际工作中&#xff0c;如果我们基于Windows系统开发&#xff0c;同时需要维护老项目&#xff0c;又要开发新项目&#xff0c;且不同项目依赖的node版本又不同时&#xff0c;那么就需要根据项目切换不同的版本。本文使用Node Version Manager&#xff08;nvm&#xff0…

前端包管理器的发展以及Npm、Yarn和Pnpm对比

在现代前端开发中&#xff0c;包管理器是不可或缺的核心工具。随着 JavaScript 生态的快速发展&#xff0c;开发者经历了从 npm 一统天下到 Yarn 挑战格局&#xff0c;再到 pnpm 创新突破的技术演进。这里将对三种主流包管理器&#xff08;npm/Yarn/pnpm&#xff09;进行全方位…

leetcode 2915. 和为目标值的最长子序列的长度

题目如下 数据范围 本题就是典型的背包问题target就是容量&#xff0c;nums[i]就是第i个物品的重量。其实就是选最多的物品使得背包刚好装满。 令f(i,j)为当考虑到i - 1物品时刚好装到j重量的物品数。 当j > nums[j]时 有f(i,j) max(f(i - 1,j - nums[i - 1]) 1,f(i -…

ASP.NET Core 面试宝典【刷题系列】

文章目录 引言1、什么是 dot net core 的 startup class?2、什么是中间件?3、application builder 的 use 和 run 方法有什么区别?4、dot net core 管道里面的map拓展有什么作用?5、dot net core 里面的路径是如何处理的?6、如何在 dot net core 中激活 session 功能?7、…

BFS 走迷宫

#include<bits/stdc.h> using namespace std; int a[100][100],v[100][100];//访问数组 n,m<100 struct point {int x;int y;int step; }; queue<point> r;//申请队列 int dx[4]{0,1,0,-1};//四个方向 右下左上 int dy[4]{1,0,-1,0}; int main() { /* 5 4 1 …

给压缩文件加密码的5种方法(win/mac/手机/网页端)

把文件加密压缩&#xff0c;一方面能有效保护个人隐私与敏感信息&#xff0c;防止数据在传输或存储过程中被窃取、篡改。另一方面&#xff0c;压缩文件可减少存储空间占用&#xff0c;提升传输速度&#xff0c;方便数据的存储与分享。以下为你介绍5种常见的加密压缩方法。 一、…

IoTDB 导入数据时提示内存不足如何处理

问题现象 IoTDB 导入数据时提示内存不足&#xff0c;该如何处理&#xff1f; 解决方案 数据导入脚本会在触发内存不足的时候主动进行重试。当遇到此问题时&#xff0c;用户不用做任何操作&#xff0c;脚本也可以正确进行处理。如果想从根源减少此类提示&#xff0c;可以按照下…

自有证书的rancher集群使用rke部署k8s集群异常

rancher使用自签域名&#xff0c;或者商业证书容易踩到的坑。 最开始的报错&#xff1a; docker logs kubelet‘s id E0214 13:04:14.590268 9614 pod_workers.go:1300] "Error syncing pod, skipping" err"failed to \"StartContainer\" for …

计算机网络结课设计:通过思科Cisco进行中小型校园网搭建

上学期计算机网络课程的结课设计是使用思科模拟器搭建一个中小型校园网&#xff0c;当时花了几天时间查阅相关博客总算是做出来了&#xff0c;在验收后一直没管&#xff0c;在寒假想起来了简单分享一下&#xff0c;希望可以给有需求的小伙伴一些帮助 目录 一、设计要求 二、…

【漫话机器学习系列】091.置信区间(Confidence Intervals)

置信区间&#xff08;Confidence Intervals&#xff09;详解 1. 引言 在统计学和数据分析中&#xff0c;我们通常希望通过样本数据来估计总体参数。然而&#xff0c;由于抽样的随机性&#xff0c;我们不可能得到精确的总体参数&#xff0c;而只能通过估计值&#xff08;如均值…