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

【学习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、总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AUTOSAR_EXP_ARAComAPI的6章笔记(2)

☞返回总目录 相关总结&#xff1a;AutoSar AP CM实例说明符的使用方法总结 6.2 实例说明符的使用方法 一、InstanceSpecifier 的概念 InstanceSpecifier 是在 [3] 中定义的一个核心概念&#xff0c;它由符合特定模型元素绝对路径的模型元素 shortName 组成&#xff0c;表现…

自定义中文排序在Java中的实现与注意事项

目录 前言1. 基本知识2. 实战 前言 #1024程序员节 | 征文# 对于Java的基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; 原先的Java中文…

Ubuntu(22.04)本地部署Appsmith

Ubuntu&#xff08;22.04&#xff09;安装Appsmith 简要介绍 Appsmith 是一个开源的低代码开发平台&#xff0c;旨在帮助开发者和非开发者快速构建定制化的内部应用程序和管理工具。通过直观的拖拽界面和丰富的预配置组件&#xff0c;Appsmith 让用户无需编写大量代码即可创建…

【C++】string类(2)

&#x1f973;个人主页: 起名字真南 &#x1f973;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 引言1 模拟实现string类基本框架2 实现string类中的主要成员函数2.1 Push_Back 函数2.2 reserve 函数2.3 append 函数2.4 c_str 函数2.5 begin ,end 函数2.5 operator 函数2.6…

IDEA开发工具使用技巧积累

一、IDEA 工具设置默认使用maven的settings.xml文件 第一步&#xff1a;打开idea工具&#xff0c;选中 File ——> New Projects Setup ——> Settings for New Projects 第二步&#xff1a;先设置下自动构建项目这个选项 第三步&#xff1a;选中 Build Tools ——>…

word删除空白页 | 亲测有效

想要删掉word里面的末尾空白页&#xff0c;但是按了delete之后也没有用 找了很久找到了以下亲测有效的方法 1. 通过鼠标右键在要删除的空白页面处显示段落标记 2. 在字号输入01&#xff0c;按ENTER&#xff08;回车键&#xff09; 3.成功删除了&#xff01;&#xff01; PS…

Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容

介绍 在当今数据驱动的世界中&#xff0c;抓取动态网页内容变得越来越重要&#xff0c;尤其是像抖音这样的社交平台&#xff0c;动态加载的评论等内容需要通过特定的方式来获取。传统的静态爬虫方法难以处理这些由JavaScript生成的动态内容&#xff0c;Selenium爬虫技术则是一…

基于SSM大学校医院信息管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;校医管理&#xff0c;用户管理&#xff0c;在线问诊管理&#xff0c;线上挂号管理&#xff0c;病例记录管理&#xff0c;系统管理 校医账号功能包括&#xff1a;系统首页&#xff0c;个人中心&#xf…

用Java爬虫API,轻松获取taobao商品SKU信息

在电子商务的世界里&#xff0c;SKU&#xff08;Stock Keeping Unit&#xff0c;库存单位&#xff09;是商品管理的基础。对于商家来说&#xff0c;SKU的详细信息对于库存管理、价格策略制定、市场分析等都有着重要作用。taobao作为中国最大的电子商务平台之一&#xff0c;提供…

uniapp 微信小程序分包操作

1. 在项目根目录创建一个新的目录&#xff0c;名称为分包名称 2. 打开manifest.json&#xff0c;选择源码视图&#xff0c;加入以下代码 "optimization" : {"subPackages" : true } 3. 在pages.json中&#xff0c;pages后面添加分包代码 "subPackag…

Linux基础命令(入门)

linux 用户 root 用户 一个特殊的管理帐户 也被称为超级用户 root已接近完整的系统控制 对系统损害几乎有无限的能力 除非必要,不要登录为 root 普通&#xff08; 非特权 &#xff09; 用户权限有限 造成损害的能力比较有限 linux的哲学思想&#xff08;优点&#xf…

【Canvas与图标】制作电脑桌面图标

【成图】 制成的三种图标&#xff0c;都是120*120的。 制作时观察的大图 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>desk…

操作系统学习笔记2.1进程与线程

文章目录 概念 组成 特征状态与转换进程控制1. 进程的状态2. 进程控制块&#xff08;PCB&#xff09;3. 进程的创建与终止进程的创建进程的终止 4. 进程调度5. 进程间通信&#xff08;IPC&#xff09;6. 上下文切换 进程通信1. **管道&#xff08;Pipes&#xff09;**2. **信号…

C++ | Leetcode C++题解之第502题IPO

题目&#xff1a; 题解&#xff1a; typedef pair<int,int> pii;class Solution { public:int findMaximizedCapital(int k, int w, vector<int>& profits, vector<int>& capital) {int n profits.size();int curr 0;priority_queue<int, vect…

Prometheus 告警

github alertmanager 文档 Prometheus Alerting rules Prometheus alerting configuration 前几篇文章讲了Prometheus的监控&#xff0c;这一篇文章&#xff0c;讲通过监控指标触发告警 常用的告警方式有发邮件、调用指定接口(webhook) 等。本文讲解webhook方式&#xff0c;完…

ARL 灯塔 | ARL 灯塔 — 字典替换

关注这个工具的其它相关内容&#xff1a;自动化信息收集工具 —— ARL 灯塔使用手册 - CSDN 博客 0x01&#xff1a;ARL 字典替换 —— 理论篇 ARL&#xff08;Asset Reconnaissance Lighthouse&#xff09;在进行目标域名探测时&#xff0c;依赖的是其内置的默认字典集。然而在…

从零开始:Python与Jupyter Notebook中的数据可视化之旅

目录 **理解数据与数据可视化的基本流程****了解Python与其他可视化工具****掌握Anaconda、Jupyter Notebook的常用操作方法****原理** 环境配置1. **安装Anaconda软件&#xff0c;创建实验环境**2. **安装Jupyter Notebook**3. **创建第一个Jupyter Notebook文本**&#xff08…

nnUnet 大模型学习笔记(续):训练网络(3d_fullres)以及数据集标签的处理

目录 1. 数据集处理 1.1 实现脚本 1.2 json文件 2. 设置读取路径 2.1 设置路径 2.2 数据集转换 2.3 数据集预处理 2.4 训练&#xff08;3d_fullres) 3. 训练结果展示 关于nnUnet 数据集的处理和环境搭建&#xff0c;参考上文&#xff1a;第四章&#xff1a;nnUnet大模…

94、Python之异常:自定义异常以满足业务个性化需求

引言 前面介绍了Python中内置的异常类的继承体系&#xff0c;通常来说&#xff0c;这些异常类已经能够满足各种异常的场景需要。但是&#xff0c;有时还是需要自定义异常&#xff0c;来满足一些个性化的需求&#xff0c;以及更加可控、精细化的异常管理。 本文就来介绍一下如…

使用InternVL、LMDeploy和GTE搭建多模态RAG系统

如何将视觉大模型&#xff08;VLM&#xff09;与 多模态RAG 结合起来&#xff0c;创建服装搜索和搭配推荐&#xff01;本文展示了InternVL模型在分析服装图像和提取颜色、款式和类型等关键特征方面的强大功能。 InternVL2是国内首个在MMMU(多学科问答)上突破60的模型&#xff0…