【学习AI-相关路程-mnist手写数字分类-python-硬件:jetson orin NX-自我学习AI-基础知识铺垫-遇到问题(1) 】

news2024/10/26 9:35:51

【学习AI-相关路程-mnist手写数字分类-python-硬件:jetson orin NX-自我学习AI-基础知识铺垫-遇到问题(1) 】

  • 1、前言
  • 2、先行了解
      • (1)学习基础知识-了解jetson orin nx 设备
      • (2)学习python&AI的相关知识
      • (3)了解mnist相关资料&数据集
      • (4)百花争鸣-更优的方案
      • (5)做这件事的流程
      • (6)环境配置
  • 3、应用相关
        • 1,将qt变为python的编译环境
        • 2,c++项目调用python
        • 3,c++和python进行混编
        • 4,其他应用方式
  • 4、数学部分&原理部分
        • 1. 结构组成
        • 2. 关键特点
        • 3. 学习过程
        • 4. 训练目标
        • 5. 优缺点
  • 5、问题描述:module 'torch' has no attribut '_six'
    • (1)问题说明
    • (2)关联问题说明
    • (3)问题原因
    • (4)解决方式
      • 1、确保和确认torch 和 torchvision 版本兼容
      • 2、升级或者降级torch 和 torchvision 版本
      • 3、检查依赖项
      • 4、重新卸载和安装
  • 6、发现问题过程:预测模型总是相同数字。
  • 7、细节补充
    • 1、尝试手动添加 _six.py文件
      • 方案 1:手动添加 `_six.py` 文件
      • 方案 2:降级 `torch` 和 `torchvision` 版本
        • 1. 卸载现有的 `torch` 和 `torchvision`
        • 2. 安装兼容的 `torch` 和 `torchvision` 版本
      • 方案 3:修改 `torchvision` 源代码
      • 方案 4:方案3的变体,增加或修改 `_six.py` 的原始内容
  • 8、总结

1、前言

本片博文,我想为大家展示一下,使用jetson orin nx 这个硬件平台上,展示学习minst手写阿拉伯数字的过程,当然也算自己的记录。

自己也在这个过程中,也上网查了很多博文吧,目前在中文世界里,感觉有些文章写的不太好,我希望以自己的方式,将整个过程记录下来,主要是操作过程,实操是先于理论的,这样我们有了完成这件事成就感后,就可以测试各种各样的事情,反过来如果先看来很对资料,没有实际操作,就会有一种空的感觉,因为没有做什么实际事情,虽然自己也是先看资料。不过这个过程,(算是在思考做事情的时候)思考我虽然没有好的想法,但是至少思考了吧,这话听着有点绕。

我们的目的是:通过现有资源学习Ai相关知识。

2、先行了解

(1)学习基础知识-了解jetson orin nx 设备

基于不同测试环境,我们可能需要的不知识,本次我们使用的jetson orin nx这个英伟达的设备,虽然不同设备都可以运行AI,但是本次的话,基于设备的原因,我们还是需要了解下,并且我之前也总结了一下资料,以供参考,当然也可以去英伟达官网去了解。

链接:【在英伟达nvidia的jetson-orin-nx-工控机入门了解-自我学习-资料记录-熟悉了解】

在这里插入图片描述

(2)学习python&AI的相关知识

平台敲定后,应该是学习python和AI,自己之前也是学过一些python,是有一定基础的,但确实,不是自己主要的工作时候使用编程语言。但编程语言这个东西,有一两门之后,其他学起来就快很多了。

关于学习AI相关知识,要入门人工智能(AI)领域,以下是一些建议,帮助有效地开始学习:

  1. 打好编程基础

    • Python是AI和机器学习领域最常用的编程语言。你可以从基本的语法开始,逐步学习高级概念。
    • 熟悉常用的AI库和框架,如TensorFlow、PyTorch、scikit-learn等。
  2. 强化数学基础

    • 线性代数:理解矩阵、向量等概念,这对理解神经网络非常重要。
    • 微积分:学习导数、积分等知识,帮助你理解优化算法。
    • 概率与统计:掌握概率分布、统计推断等,应用于模型评估和数据分析。
  3. 学习机器学习基础

    • 了解监督学习、无监督学习和强化学习的基本概念。
    • 学习常见的算法,如线性回归、逻辑回归、决策树、支持向量机等。
  4. 深入了解深度学习

    • 学习神经网络的原理和结构,包括前馈网络和反馈网络。
    • 掌握卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)等。
  5. 实践操作

    • 使用TensorFlowPyTorch构建并训练模型。
    • 在Kaggle等平台参与比赛,解决实际问题,积累经验。
  6. 利用在线资源和课程

    • Coursera:吴恩达的“机器学习”课程和“深度学习专项课程”。
    • edX:提供MIT和哈佛的相关课程。
    • Fast.ai:实用的深度学习课程,注重实践。
  7. 阅读经典书籍

    • 《机器学习》——周志华著
    • 《深度学习》——Ian Goodfellow等著
    • 《模式识别与机器学习》——Christopher M. Bishop著
  8. 关注行业动态

    • 订阅AI领域的博客、新闻和播客,如arXiv、Medium上的AI专栏等。
    • 参加研讨会、线上线下的AI社区活动,扩展人脉。
  9. 制定学习计划

    • 设定短期和长期目标,规划学习路径。
    • 定期复盘,调整学习策略。
  10. 动手项目

    • 从简单的项目开始,如手写数字识别、图像分类等。
    • 尝试自己构思并实现一个完整的AI应用。

(3)了解mnist相关资料&数据集

另外就是了解本次咱们学习的项目,中文名字大概叫:“mnist手写数字识别”。这个项目可以说是,入门学习AI的经典项目之一了,它主要是用AI训练一个模型,然后让AI来预测手写体的数字。

如果你不断查资料,那么最终一定会查到如下网站,也就是提供阿拉伯数字手写体的网站。
链接:https://yann.lecun.com/exdb/mnist/
在这里插入图片描述
简单说,这个网站为你 准备了一共7W张手写体阿拉伯数字(has a training set of 60,000 examples, and a test set of 10,000 examples)。

而且中文也能搜到很多资料。
链接:https://so.csdn.net/so/search?spm=1001.2101.3001.4498&q=mnist%E6%89%8B%E5%86%99%E6%95%B0%E5%AD%97%E5%88%86%E7%B1%BBpytorch&t=&u=&urw=
在这里插入图片描述

(4)百花争鸣-更优的方案

mnist这个手写数字分类,实在有多人做了,所以一定需要注意的是,大家做事的方式可能完全不一样,你会发现你在看资料的过程中,一会儿这个文章这样说,一会儿另一个文章又说了另一种方式,比如CNN的方式,其实只是大家解题思路不一样而已,但又是八仙过海,各显神通的故事。

另外就是代码对我们这样的初学者来说,可能需要多看,会些python编程语言和理解AI相关代码需要很长的路途。

(5)做这件事的流程

我们学习本项目的时候,其实和之前做屏幕识别项目的本质,其实大致一致的,只不过不用自己准备相关训练素材了。

链接:【学习AI-相关路程-工具使用-自我学习-jetson&模型训练-图片识别-使用模型检测图片-基础样例 (5)】

  • 阶段 1: 硬件设置
  • 阶段 2: 软件准备
  • 阶段 3: 数据准备
  • 阶段 4: 模型设计和训练
  • 阶段 5: 优化和部署
  • 阶段 6: 应用集成
  • 阶段 7: 监控和维护

(6)环境配置

对于我们新手而言,最初的工作,可能很大部分,都需要会花在确认环境上。环境对不对,配置好不好,真的会影响最后结果吧,从我目前测试了来看,80%的时候都卡在配置上,也是数据和模型小的原因,反而没花太多时间,或者还没有尝试足够多。

3、应用相关

自己之前在学屏幕识别的时候,想着实际应用下,想和qt进行结合,查到大概有三种方式,如下。

1,将qt变为python的编译环境

第一种,就是直接使用python的qt环境,相关文章也很多,也有很多方式,之前切换编程语言,自己之前项目都是c++的,冷不丁切还是需要适应是的。

2,c++项目调用python

第二种,就是还是使用c++环境,就像插入插件的方式,将python作为插件的部分放到代码中,需要的时候,拿过来调用。

3,c++和python进行混编

第三种,也是就是说在直接c++和python直接一起混合编译。

说了这么多,想表达的是,如果简单和qt进行结合的话还是有很多方式的。

4,其他应用方式

另外实际应用,也不一定必须要和qt一起使用,看你自己实际需求。

4、数学部分&原理部分

这里也就是本次实验,我们将会使用一种叫,三层全连接神经网络(BPnetwork),以下是相关说明。

三层全连接神经网络,也称为三层前馈神经网络或三层感知机,是一种典型的反向传播(Backpropagation, BP)神经网络。它由输入层隐藏层输出层三个层次构成,每一层的节点(神经元)与上一层的所有节点相连,因此称为“全连接”。

1. 结构组成
  • 输入层(Input Layer):这一层接收原始数据作为网络的输入。输入层的节点数通常等于输入特征的数量。例如,对于一个28x28的灰度图像来说,输入层的节点数是784(28x28 = 784个像素)。

  • 隐藏层(Hidden Layer):这是网络中的中间层,也称为特征提取层。在三层BP网络中,只有一层隐藏层。隐藏层节点数可以自由设定,常见做法是根据输入输出维度和任务复杂度调整其节点数。隐藏层通过激活函数对输入进行非线性变换,增强模型的表达能力。

  • 输出层(Output Layer):这一层的输出是最终的预测结果。输出层的节点数取决于任务类型。例如,对于一个二分类问题,输出层通常只有一个节点,而对于多分类问题,输出层的节点数等于类别的数量。

2. 关键特点
  • 激活函数:隐藏层通常使用非线性激活函数,如Sigmoid、ReLU或Tanh等,使网络能够拟合非线性关系。输出层的激活函数根据任务选择,比如二分类问题常用Sigmoid,多分类问题常用Softmax。

  • 全连接:每一层的每个神经元都与前一层的所有神经元相连接,并通过加权求和和激活函数转换输入数据。

3. 学习过程

BP神经网络的学习过程分为前向传播反向传播两个阶段:

  • 前向传播:输入层的数值通过全连接的权重传递到隐藏层,经过激活函数处理后,再传递到输出层,最终得到输出结果。这个阶段是从输入到输出的逐层计算。

  • 反向传播:BP网络通过计算预测值与真实值之间的误差(通常通过损失函数计算,如均方误差或交叉熵),然后通过梯度下降算法逐层反向传播误差,更新每个连接权重,以最小化误差。

4. 训练目标

通过多次前向和反向传播,调整网络的参数,使得网络能够在给定数据上准确地进行预测。

5. 优缺点
  • 优点

    • 结构简单,适合小规模数据和简单任务。
    • 可通过反向传播算法高效更新参数。
  • 缺点

    • 对大规模数据表现不佳。
    • 隐藏层的数量较少,可能限制模型的表达能力。
    • 需要大量调参(如学习率、隐藏层神经元数目)来获得较好的性能。

5、问题描述:module ‘torch’ has no attribut ‘_six’

(1)问题说明

这个问题之前就其实存在,当时尝试了很多办法,不知道如何解决,虽然当时知道是“与 torch 和 torchvision 版本兼容性相关的问题”,但是在自己识别屏幕想项目上,如果不使用torchvision的特殊版本,那个就过不去,就会使用CPU,但是本项目就是报错如下。
在这里插入图片描述

(2)关联问题说明

这是之前的文章,当时想要解决使用GPU问题。
【学习AI-相关路程-工具使用-自我学习-jetson&模型训练-问题补充-无法使用GPU问题-CUDA is available: False-补充说明 (6)】
在这里插入图片描述
最后想来想去,还是现已这个为主,比较使用屏幕那个,用cpu也可以的。

(3)问题原因

说回本问题,有两个可能的原有。

  • torch 和 torchvision 版本不匹配。
  • torchvision 的某个版本依赖于 torch 的 _six 属性,而较新的 torch 版本中已经移除了 _six。

(4)解决方式

1、确保和确认torch 和 torchvision 版本兼容

运行以下命令,查看当前安装的 torch 和 torchvision 版本:

python3 -c "import torch; print(torch.__version__); import torchvision; print(torchvision.__version__)"

主要是查看两个torch 和 torchvision 版本的兼容。

2、升级或者降级torch 和 torchvision 版本

我这里之前为了使GPU能过,后来才知道,相当于使用特定版本。

在 torch 2.0.0 版本及以后不再包含 _six.py 文件,而一些 torchvision 版本仍然依赖这个文件。

  • (1)兼容torch 和 torchvision 版本
pip3 install --upgrade torch torchvision
  • (2)安装特定版本
    至于如何安装版本可以看我以往讲的相关文章。

【学习AI-相关路程-工具使用-自我学习-jetson&模型训练-问题补充-无法使用GPU问题-CUDA is available: False-补充说明 (6)】

pip3 install torch==1.7.1 torchvision==0.8.2

或者 安装其他版本组合

pip3 install torch==1.8.0 torchvision==0.9.0

3、检查依赖项

既然问题报错,缺少什么_six的,那么安装网上,补上这个是不是就看可以了这也是一个办法,按照网上查到的,主要是这个太旧了,被删除的原因。

所以我们尝试更新 six和 pillow ,这块自己尝试了,没有成功。

pip3 install --upgrade six pillow

或者

直接在自己相关文件夹里加入相应文件,但是有可能放在位置不对,也没成功。
自己在找到的链接说明里试了一下,没成功。

链接:https://blog.csdn.net/QKK612501/article/details/130532389
在这里插入图片描述

4、重新卸载和安装

自己之前主要是想,保证之前屏幕识别那个没有问题,所以才卡住了,既然之前没有GPU也能用,其实也还好,当然重新按照,只能算是一种方式,有可能能解决问题。

  • (1)卸载当前的torch 和 torchvision 版本
pip3 uninstall torch torchvision
  • (2)重新安装torch 和 torchvision 版本
pip3 install torch==1.8.0 torchvision==0.9.0

根据 JetPack 版本选择对应的 PyTorch 和 torchvision 版本。这里我使用的是 JetPack 5.1.2,可以使用如下版本,如果硬件设备不一样,需要自行确认相关版本:

# 下载并安装 PyTorch
wget https://nvidia.box.com/shared/static/p57jwntn4yjg5e8tdw9xz3z0h8g2p0g4.whl -O torch-2.0.0+nv23.08-cp38-cp38-linux_aarch64.whl
pip install torch-2.0.0+nv23.08-cp38-cp38-linux_aarch64.whl

# 下载并安装 torchvision
wget https://nvidia.box.com/shared/static/qxtknlkyccnpys29s7mrw5p4v7flxo5z.whl -O torchvision-0.15.1+nv23.08-cp38-cp38-linux_aarch64.whl
pip install torchvision-0.15.1+nv23.08-cp38-cp38-linux_aarch64.whl

6、发现问题过程:预测模型总是相同数字。

这里自己在第一次尝试生产模型过程中,发现每次识别都是8,后来通过查找,才发现是torch 和 torchvision 版本问题。

使用的是 Jetson Orin NX,这是一款基于 NVIDIA GPU 的嵌入式设备。在这种平台上运行深度学习模型,可能会遇到一些特定的问题,导致模型预测结果异常(如总是预测为 8)。以下是可能的原因和解决方案:

  1. CUDA 和 cuDNN 版本不匹配

    • 原因:Jetson 平台上的 CUDA 和 cuDNN 版本需要与您的深度学习框架(如 TensorFlow、PyTorch)兼容。如果版本不匹配,可能会导致模型无法正确运行。
    • 解决方案:确保您安装的 CUDA 和 cuDNN 版本与所使用的深度学习框架兼容。可以参考 NVIDIA 的 JetPack SDK 文档,确认正确的版本组合。
  2. TensorFlow/PyTorch 安装问题

    • 原因:在 Jetson Orin NX 上安装深度学习框架时,如果安装步骤不正确,可能导致框架功能异常。

    • 解决方案:使用 NVIDIA 提供的预编译版本或官方指南进行安装。例如,使用以下命令安装适用于 Jetson 的 PyTorch:

      sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
      pip3 install --pre torch torchvision torchaudio --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v5
      
  3. 模型保存和加载的问题

    • 原因:如果模型在其他平台上训练,然后在 Jetson Orin NX 上运行,可能由于序列化格式或兼容性问题,导致模型参数未正确加载。
    • 解决方案:尝试在 Jetson Orin NX 上重新训练模型,或者确保模型保存和加载使用了相同的框架和版本。
  4. 数据预处理差异

    • 原因:在不同的平台上,数据加载和预处理方式可能有所不同,导致输入数据不正确。
    • 解决方案:检查数据预处理代码,确保在 Jetson Orin NX 上的数据处理与原始环境一致。
  5. GPU 计算能力和配置

    • 原因:Jetson 设备的计算能力与桌面 GPU 有所不同,可能需要调整模型或设置。
    • 解决方案:确认代码中正确使用了 GPU,并且未超出设备的内存限制。可以通过减少批次大小(batch size)或简化模型来适应设备性能。
  6. 依赖库版本问题

    • 原因:某些依赖库(如 NumPy、SciPy)的版本可能与深度学习框架不兼容。
    • 解决方案:检查并更新依赖库,确保其版本与所用框架兼容。建议使用虚拟环境来管理依赖关系。
  7. 性能模式设置

    • 原因:Jetson 设备可能默认处于省电模式,限制了 GPU 性能。

    • 解决方案:使用以下命令将设备设置为最大性能模式:

      sudo nvpmodel -m 0
      sudo jetson_clocks
      
  8. 硬件资源不足

    • 原因:模型可能过于复杂,导致在嵌入式设备上无法正确运行。
    • 解决方案:尝试使用更小的模型或进行模型压缩,如剪枝或量化。
  9. 浮点精度问题

    • 原因:Jetson 设备可能使用了 FP16 等低精度计算,导致精度下降。
    • 解决方案:确保模型使用 FP32 精度,或者在模型代码中明确指定所需的精度模式。
  10. 检查日志和错误信息

    • 原因:运行过程中可能有警告或错误信息提示问题所在。
    • 解决方案:查看控制台输出或日志文件,寻找异常信息。如有需要,添加更多的日志输出来调试。

建议的下一步行动

  • 运行官方示例代码:在 Jetson Orin NX 上运行 MNIST 的官方示例,验证环境和框架是否正常工作。
  • 验证数据和标签:确保数据集加载正确,标签没有偏差或错误。
  • 重现问题:尝试在简单的模型上重现问题,缩小问题范围。
  • 更新系统和驱动:使用 sudo apt updatesudo apt upgrade 更新系统,确保所有软件都是最新的。
  • 咨询社区和文档:参考 NVIDIA 官方论坛和文档,获取针对 Jetson Orin NX 的支持和建议。

7、细节补充

1、尝试手动添加 _six.py文件

方案 1:手动添加 _six.py 文件

这种方法是在现有 torch 2.0.0 环境中添加 _six.py 文件,来保持兼容性。

  1. 找到 _six.py 文件

    • 如果有一个旧版本的 PyTorch 环境,可以直接找到该文件。通常路径为:<python_env>/lib/python3.x/site-packages/torch/_six.py
    • 可以使用以下命令在系统中搜索这个文件:
      find / -name _six.py
      
  2. _six.py 文件复制到当前 PyTorch 环境

    • 找到当前 PyTorch 2.0.0 安装的路径:

      python3 -c "import torch; print(torch.__file__)"
      

      这会打印 torch 模块的路径,例如 /home/user/.local/lib/python3.8/site-packages/torch/__init__.py

    • _six.py 文件复制到 PyTorch 模块路径中,例如:

      sudo cp /path/to/old/torch/_six.py /home/user/.local/lib/python3.8/site-packages/torch/
      

方案 2:降级 torchtorchvision 版本

torchtorchvision 降级到 2.0.0 之前的版本。这种方式更为安全和稳定,因为手动添加文件可能会导致其他兼容性问题。

1. 卸载现有的 torchtorchvision
pip uninstall torch torchvision
2. 安装兼容的 torchtorchvision 版本
  1. 如果是 CPU 版本

    pip install torch==1.7.1 torchvision==0.8.2 -f https://download.pytorch.org/whl/torch_stable.html
    
  2. 如果是 Jetson ARM 版本
    下载合适的 .whl 文件,并手动安装。由于 Jetson Orin NX 的 CUDA 环境支持,可以尝试安装兼容 Jetson 的较低版本:

    • PyTorch 1.7.1 和 torchvision 0.8.2:

      wget https://nvidia.box.com/shared/static/1nc79v8dvla3cl4dzms0oaw1jzwkdzlp.whl -O torch-1.7.1-cp38-cp38-linux_aarch64.whl
      wget https://nvidia.box.com/shared/static/xbvls9fuvcw3kj9uv4ci1pnz7jdbj2bi.whl -O torchvision-0.8.2-cp38-cp38-linux_aarch64.whl
      
    • 安装下载的 .whl 文件:

      pip install torch-1.7.1-cp38-cp38-linux_aarch64.whl
      pip install torchvision-0.8.2-cp38-cp38-linux_aarch64.whl
      
  3. 安装完成后测试版本

    python3 -c "import torch; print(torch.__version__); import torchvision; print(torchvision.__version__)"
    

方案 3:修改 torchvision 源代码

如果有能力修改源代码,可以将 torchvision 中引用 _six.py 的地方改为新的实现方式。

  1. 找到报错的文件 datasets/mnist.pytorch._six 的引用。
  2. 替换为 Python 自带的 six 模块,通常用 from six import string_classes 替代。

这种方法要求对源代码有修改权限,且理解修改的内容,较为复杂,不推荐。

方案 4:方案3的变体,增加或修改 _six.py 的原始内容

(1)以下是 _six.py 文件的原始内容,可以将其保存为 _six.py,并放入 torch 模块目录中(如:/path/to/torch/_six.py):

import sys
import six

string_classes = (str, bytes)
int_classes = (int,)
file_classes = (six.StringIO, six.BytesIO)

PY37 = sys.version_info >= (3, 7)

if not PY37:
    class ModuleType(type(sys)):
        def __getitem__(self, name):
            return getattr(self, name)

    sys.modules[__name__].__class__ = ModuleType

(2). 将 _six.py 文件放入 PyTorch 目录

  1. 将上述内容保存为 _six.py 文件。

  2. 找到当前 PyTorch 安装的路径(可以通过以下命令获取):

    python3 -c "import torch; print(torch.__file__)"
    

    假设输出路径为 /home/username/.local/lib/python3.8/site-packages/torch

  3. _six.py 文件放入上述 torch 安装目录中:

    cp _six.py /home/username/.local/lib/python3.8/site-packages/torch/
    

手动添加 _six.py 文件并修改 torchvision 中的引用可以解决临时兼容性问题,但不建议长期使用。如果可能,推荐尽量使用兼容的 torchtorchvision 版本。

8、总结

写文章就是思考的过程总结,讲自己做的过程和查找的问题进修整理,也是一种重新思考的时候,自己这里说了很多自己遇到的问题,对于新手我认为就会这样,我们需要知道很多事情,铺垫很多,才能做好这件事。

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

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

相关文章

ClickHouse在百度MEG数据中台的落地和优化

导读 百度MEG上一代大数据产品存在平台分散、质量不均和易用性差等问题&#xff0c;导致开发效率低下、学习成本高&#xff0c;业务需求响应迟缓。为了解决这些问题&#xff0c;百度MEG内部开发了图灵3.0生态系统&#xff0c;包括Turing Data Engine(TDE)计算引擎、Turing Dat…

从0到1,搭建vue3项目

一 Vite创建Vue3项目 1.1.创建Vue3项目 1.1.1.运行创建项目命令 # 使用 npm npm create vitelatest 1.1.2、填写项目名称 1.1.3、选择前端框架 1.1.4、选择语法类型 1.1.5、按提示运行代码 1.1.6浏览器问 localhost:5173 预览 1.2项目结构 1.2.1vite.config.ts 1.2.2 pac…

基于线性回归(Linear Regression)的房屋价格预测

基于线性回归&#xff08;Linear Regression&#xff09;的房屋价格预测 一元线性回归加载数据假设函数损失函数&#xff08;代价函数&#xff09;梯度下降函数完整代码 多变量线性回归加载数据集特征缩放假设函数损失函数梯度下降函数算法步骤完整代码 线性回归是统计学中的一…

【二轮征稿启动】第三届环境工程与可持续能源国际会议持续收录优质稿件

第三届环境工程与与可持续能源国际会议&#xff08;EESE 2024&#xff09;由中南林业科技大学主办&#xff0c;湖南农业大学协办&#xff0c;将于2024年12月20日-22日在湖南长沙召开。 大会邀请到国家杰出青年科学基金获得者、华中科技大学能源与动力工程学院冯光教授&#xf…

R实验——logistic回归、LDA、QDAKNN

数据集介绍&#xff1a; mpg&#xff0c;miles per gallon即油耗&#xff0c;这个数据集来自卡内基梅隆大学维护的StatLib库。1983年美国统计协会博览会使用了该数据集。这个数据集是对StatLib库中提供的数据集稍加修改的版本。根据Ross Quinlan(1993)在预测属性“mpg”中的使…

计算机网络原理总结C-网络层

网络层 网络层提供的两种服务网际协议IP 虚拟互连网络IP地址子网掩码&#xff08;无分类编址CIDR&#xff09;IP地址和MAC地址IP数据报格式&#xff08;路由&#xff09;转发分组的流程 因特网的路由选择协议&#xff08;动态路由协议&#xff09; 网际控制报文协议ICMPIP多播…

认识CSS语法

CSS&#xff08;网页美容&#xff09; 重点&#xff1a;选择器、盒子模型、浮动、定位、动画&#xff0c;伸缩布局 Css的作用&#xff1a; 美化网页&#xff1a;CSS控制标签的样式 网页布局&#xff1a;CSS控制标签的位置 概念&#xff1a;层叠样式表&#xff08;级联样式表…

UE5 第一人称示例代码阅读0 UEnhancedInputComponent

UEnhancedInputComponent使用流程 我的总结示例分析firstthenand thenfinally&代码关于键盘输入XYZ 我的总结 这个东西是一个对输入进行控制的系统&#xff0c;看了一下第一人称例子里&#xff0c;算是看明白了&#xff0c;但是感觉这东西使用起来有点绕&#xff0c;特此梳…

布隆过滤器:极简存储,高效检索

引言 在海量数据的存储与检索中&#xff0c;如何在保持快速检索的同时&#xff0c;降低内存占用是个巨大的挑战。有没有一种既能快速检索又能节省内存的方案&#xff1f;布隆过滤器&#xff08;Bloom Filter&#xff09;就是这样一种数据结构。 布隆过滤器的基本原理 如果我…

数据库、数据仓库、数据湖和数据中台有什么区别

很多企业在面对数据存储和管理时不知道如何选择合适的方式&#xff0c;数据库、数据仓库、数据湖和数据中台&#xff0c;这些方式都是什么&#xff1f;有什么样的区别&#xff1f;企业根据其业务类型该选择哪一种&#xff1f;本文就针对这些问题&#xff0c;来探讨下这些方式都…

【目标检测01】真实框、预测框、锚框和交并比IoU

文章目录 1. 任务定义2. 基本概念2.1 边界框&#xff08;bounding box&#xff09;2.2 真实框、预测框和锚框2.3 交并比 (IoU)2.4 代码实现 1. 任务定义 目标检测的主要目的是让计算机可以自动识别图片或者视频帧中所有目标的类别&#xff0c;并在该目标周围绘制边界框&#x…

【linux网络编程】| 网络基础 | 解析IP与Mac地址的区别

前言&#xff1a;本节内容讲解一些网络基础相关的知识点&#xff0c; 不涉及网络代码&#xff01;同样的本节内容是作为前一篇的补充知识点&#xff0c; 前一篇文章地址&#xff1a;【linux网络编程】 | 网络基础Ⅰ| 认识网络-CSDN博客&#xff0c;本篇文章内容较少&#xff0c…

命名空间std, using namespace std

命名空间std&#xff0c;using namespace std 在标准C以前&#xff0c;都是用#include<iostream.h>这样的写法的&#xff0c;因为要包含进来的头文件名就是iostream.h。标准C引入了名字空间的概念&#xff0c;并把iostream等标准库中的东东封装到了std名字空间中&#x…

UE5 源码学习 初始化

跟着 https://www.cnblogs.com/timlly/p/13877623.html 学习 入口函数 UnrealEngine\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp WinMain 入口 int32 WINAPI WinMain(_In_ HINSTANCE hInInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ char* p…

unity开发之可视化制作动画

录制动画 1&#xff09;打开录制动画页面&#xff08;或者按快捷键ctrl6&#xff09; 2&#xff09;选中需要录制动画的对象 3&#xff09;创建动画列表&#xff0c;注意现在还没有录制动画&#xff0c;我这里创建了开门和关门动画列表 4&#xff09;选择需要录制动画的对象的相…

【计网】UDP Echo Server与Client实战:从零开始构建简单通信回显程序

目录 前言&#xff1a; 1.实现udpserver类 1.1.创建udp socket 套接字 --- 必须要做的 socket&#xff08;&#xff09;讲解 代码实现&#xff1a;​编辑 代码讲解&#xff1a; 1.2.填充sockaddr_in结构 代码实现&#xff1a; 代码解析&#xff1a; 1.3.bind sockfd和…

关于在vue2中接受后端返回的二进制流并进行本地下载

后端接口返回&#xff1a; 前端需要在两个地方写代码&#xff1a; 1.封装接口处&#xff0c;responseType: blob 2.接收相应处 download() {if (this.selectionList.length 0) {this.$message.error("请选择要导出的数据&#xff01;");} else {examineruleExport…

【Git】将本地代码提交到github仓库

一、创建仓库 复制这里的HTTP连接码 二、仓库初始化 进入你要提交的代码文件夹 右键选择 Git Bach Here 输入命令 git clone [HTTP连接码] 此时文件夹里会出现一个新的文件夹&#xff0c;将原来的文件当今这个新的文件夹 三、上传代码 执行命令 cd [新文件夹] 将所有文件放…

ArcGIS必会的选择要素方法(AND、OR、R、IN等)位置选择等

今天来看看ArcGIS中的几个选择的重要使用方法 1、常规选择、 2、模糊查询、 3、组合复合条件查询&#xff08;AND、OR、IN&#xff09;&#xff0c; 4、空值NULL查询 5、位置选择 推荐学习&#xff1a; 以梦为马&#xff0c;超过万名学员学习ArcGIS入门到实战的应用课程…

Pandas模块之垂直或水平交错条形图

目录 df.plot() 函数Pandas模块之垂直条形图Pandas模块之水平交错条形图 df.plot() 函数 df.plot() 是 Pandas 中的一个函数&#xff0c;用于绘制数据框中的数据。它是基于 Matplotlib 库构建的&#xff0c;可以轻松地创建各种类型的图表&#xff0c;包括折线图、柱状图、散点…