【学习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)领域,以下是一些建议,帮助有效地开始学习:
-
打好编程基础:
- Python是AI和机器学习领域最常用的编程语言。你可以从基本的语法开始,逐步学习高级概念。
- 熟悉常用的AI库和框架,如TensorFlow、PyTorch、scikit-learn等。
-
强化数学基础:
- 线性代数:理解矩阵、向量等概念,这对理解神经网络非常重要。
- 微积分:学习导数、积分等知识,帮助你理解优化算法。
- 概率与统计:掌握概率分布、统计推断等,应用于模型评估和数据分析。
-
学习机器学习基础:
- 了解监督学习、无监督学习和强化学习的基本概念。
- 学习常见的算法,如线性回归、逻辑回归、决策树、支持向量机等。
-
深入了解深度学习:
- 学习神经网络的原理和结构,包括前馈网络和反馈网络。
- 掌握卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)等。
-
实践操作:
- 使用TensorFlow或PyTorch构建并训练模型。
- 在Kaggle等平台参与比赛,解决实际问题,积累经验。
-
利用在线资源和课程:
- Coursera:吴恩达的“机器学习”课程和“深度学习专项课程”。
- edX:提供MIT和哈佛的相关课程。
- Fast.ai:实用的深度学习课程,注重实践。
-
阅读经典书籍:
- 《机器学习》——周志华著
- 《深度学习》——Ian Goodfellow等著
- 《模式识别与机器学习》——Christopher M. Bishop著
-
关注行业动态:
- 订阅AI领域的博客、新闻和播客,如arXiv、Medium上的AI专栏等。
- 参加研讨会、线上线下的AI社区活动,扩展人脉。
-
制定学习计划:
- 设定短期和长期目标,规划学习路径。
- 定期复盘,调整学习策略。
-
动手项目:
- 从简单的项目开始,如手写数字识别、图像分类等。
- 尝试自己构思并实现一个完整的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)。以下是可能的原因和解决方案:
-
CUDA 和 cuDNN 版本不匹配:
- 原因:Jetson 平台上的 CUDA 和 cuDNN 版本需要与您的深度学习框架(如 TensorFlow、PyTorch)兼容。如果版本不匹配,可能会导致模型无法正确运行。
- 解决方案:确保您安装的 CUDA 和 cuDNN 版本与所使用的深度学习框架兼容。可以参考 NVIDIA 的 JetPack SDK 文档,确认正确的版本组合。
-
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
-
-
模型保存和加载的问题:
- 原因:如果模型在其他平台上训练,然后在 Jetson Orin NX 上运行,可能由于序列化格式或兼容性问题,导致模型参数未正确加载。
- 解决方案:尝试在 Jetson Orin NX 上重新训练模型,或者确保模型保存和加载使用了相同的框架和版本。
-
数据预处理差异:
- 原因:在不同的平台上,数据加载和预处理方式可能有所不同,导致输入数据不正确。
- 解决方案:检查数据预处理代码,确保在 Jetson Orin NX 上的数据处理与原始环境一致。
-
GPU 计算能力和配置:
- 原因:Jetson 设备的计算能力与桌面 GPU 有所不同,可能需要调整模型或设置。
- 解决方案:确认代码中正确使用了 GPU,并且未超出设备的内存限制。可以通过减少批次大小(batch size)或简化模型来适应设备性能。
-
依赖库版本问题:
- 原因:某些依赖库(如 NumPy、SciPy)的版本可能与深度学习框架不兼容。
- 解决方案:检查并更新依赖库,确保其版本与所用框架兼容。建议使用虚拟环境来管理依赖关系。
-
性能模式设置:
-
原因:Jetson 设备可能默认处于省电模式,限制了 GPU 性能。
-
解决方案:使用以下命令将设备设置为最大性能模式:
sudo nvpmodel -m 0 sudo jetson_clocks
-
-
硬件资源不足:
- 原因:模型可能过于复杂,导致在嵌入式设备上无法正确运行。
- 解决方案:尝试使用更小的模型或进行模型压缩,如剪枝或量化。
-
浮点精度问题:
- 原因:Jetson 设备可能使用了 FP16 等低精度计算,导致精度下降。
- 解决方案:确保模型使用 FP32 精度,或者在模型代码中明确指定所需的精度模式。
-
检查日志和错误信息:
- 原因:运行过程中可能有警告或错误信息提示问题所在。
- 解决方案:查看控制台输出或日志文件,寻找异常信息。如有需要,添加更多的日志输出来调试。
建议的下一步行动:
- 运行官方示例代码:在 Jetson Orin NX 上运行 MNIST 的官方示例,验证环境和框架是否正常工作。
- 验证数据和标签:确保数据集加载正确,标签没有偏差或错误。
- 重现问题:尝试在简单的模型上重现问题,缩小问题范围。
- 更新系统和驱动:使用
sudo apt update
和sudo apt upgrade
更新系统,确保所有软件都是最新的。 - 咨询社区和文档:参考 NVIDIA 官方论坛和文档,获取针对 Jetson Orin NX 的支持和建议。
7、细节补充
1、尝试手动添加 _six.py文件
方案 1:手动添加 _six.py
文件
这种方法是在现有 torch
2.0.0 环境中添加 _six.py
文件,来保持兼容性。
-
找到
_six.py
文件- 如果有一个旧版本的 PyTorch 环境,可以直接找到该文件。通常路径为:
<python_env>/lib/python3.x/site-packages/torch/_six.py
。 - 可以使用以下命令在系统中搜索这个文件:
find / -name _six.py
- 如果有一个旧版本的 PyTorch 环境,可以直接找到该文件。通常路径为:
-
将
_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:降级 torch
和 torchvision
版本
将 torch
和 torchvision
降级到 2.0.0 之前的版本。这种方式更为安全和稳定,因为手动添加文件可能会导致其他兼容性问题。
1. 卸载现有的 torch
和 torchvision
pip uninstall torch torchvision
2. 安装兼容的 torch
和 torchvision
版本
-
如果是 CPU 版本
pip install torch==1.7.1 torchvision==0.8.2 -f https://download.pytorch.org/whl/torch_stable.html
-
如果是 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
-
-
安装完成后测试版本
python3 -c "import torch; print(torch.__version__); import torchvision; print(torchvision.__version__)"
方案 3:修改 torchvision
源代码
如果有能力修改源代码,可以将 torchvision
中引用 _six.py
的地方改为新的实现方式。
- 找到报错的文件
datasets/mnist.py
中torch._six
的引用。 - 替换为 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 sixstring_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 目录
-
将上述内容保存为
_six.py
文件。 -
找到当前 PyTorch 安装的路径(可以通过以下命令获取):
python3 -c "import torch; print(torch.__file__)"
假设输出路径为
/home/username/.local/lib/python3.8/site-packages/torch
。 -
将
_six.py
文件放入上述torch
安装目录中:cp _six.py /home/username/.local/lib/python3.8/site-packages/torch/
手动添加 _six.py
文件并修改 torchvision
中的引用可以解决临时兼容性问题,但不建议长期使用。如果可能,推荐尽量使用兼容的 torch
和 torchvision
版本。
8、总结
写文章就是思考的过程总结,讲自己做的过程和查找的问题进修整理,也是一种重新思考的时候,自己这里说了很多自己遇到的问题,对于新手我认为就会这样,我们需要知道很多事情,铺垫很多,才能做好这件事。
相关文章:

【学习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…...

数据轻松上云——Mbox边缘计算网关
随着工业4.0时代的到来,工厂数字化转型已成为提升生产效率、优化资源配置、增强企业竞争力的关键。我们凭借其先进的边缘计算网关与云平台技术,为工厂提供了高效、稳定的数据采集与上云解决方案。本文将为您介绍Mbox边缘计算网关如何配合明达云平台&…...

ifftshift函数
ifftshift 原理 将频域数据移回时域的函数。它通常与 fftshift 配合使用,后者用于将时域数据移动到频域中心。 而ifftshift所作的事正好相反,将频谱恢复到能量集中在两端(或四个角)上,接着就可以做逆傅里叶变换了 具…...

vue3 + ts + element-plus 二次封装 el-dialog
实现效果: 组件代码:注意 style 不能为 scoped <template><el-dialog class"my-dialog" v-model"isVisible" :show-close"false" :close-on-click-modal"false" :modal"false"modal-class&…...

MySQL9.0安装教程zip手动安装(Windows)
本章教程,主要介绍如何在Windows上安装MySQL9.0,通过zip方式进行手动安装。 一、下载MySQL压缩包 下载地址:https://downloads.mysql.com/archives/community/ 二、解压MySQL压缩包 将下载好的压缩包,进行解压缩,并且将…...

如何在浏览器中查看格式化的 HTML?
问题描述 我需要这个 HTML 页面在我的浏览器中显示格式化后的信息。我只是将文件存储在本地驱动器上。我需要将文件上传到服务器才能将其作为 HTML 查看,还是可以在本地查看?如在屏幕截图中看到的,它当前显示相同的 HTML 代码。我尝试搜索&am…...

浅谈计算机存储体系和CPU缓存命中
一、计算机存储 一般关于计算机存储体系分为三层 ①三级缓存/寄存器 大多数寄存器只有四字节到八字节,只用于读取很小的数据;三级缓存是为了方便CPU读取内存中数据而存在的 ②内存————数据结构就是在内存中管理数据 ③硬盘————数据库/文件就…...

ES操作:linux命令
查询数据库所有索引 没有密码 curl -X GET "http://localhost:9200/_cat/indices?v" 有密码 curl -u elastic:my_password -X GET "http://localhost:9200/_cat/indices?v" 删除索引 curl-X DELETE "http://localhost:9200/index_XXX" 不…...

Java使用原生HttpURLConnection实现发送HTTP请求
Java 实现发送 HTTP 请求,系列文章: 《Java使用原生HttpURLConnection实现发送HTTP请求》 《Java使用HttpClient5实现发送HTTP请求》 《SpringBoot使用RestTemplate实现发送HTTP请求》 1、HttpURLConnection 类的介绍 HttpURLConnection 是 Java 提供的…...

TinyC编译器5—词法分析
1.词法分析的概念 词法分析也称为 分词 ,此阶段编译器从左向右扫描源文件,将其字符流分割成一个个的 词 ( token 、 记号 ,后文中将称为 token )。所谓 token ,就是源文件中不可再进一步分割的一串字符&am…...

电子电气架构---智能计算架构和SOA应用
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不…...

Python Numpy 实现神经网络自动训练:反向传播与激活函数的应用详解
Python Numpy 实现神经网络自动训练:反向传播与激活函数的应用详解 这篇文章介绍了如何使用 Python 的 Numpy 库来实现神经网络的自动训练,重点展示了反向传播算法和激活函数的应用。反向传播是神经网络训练的核心,能够通过计算梯度来优化模…...

Apache Calcite - 基于规则的查询优化
基于规则的查询优化 基于规则的查询优化(Rule-based Query Optimization)是一种通过应用一系列预定义的规则来优化查询计划的技术。这些规则描述了如何转换关系表达式,以提高查询执行的效率。基于规则的优化器并不依赖于统计信息,…...

react学习笔记,ReactDOM,react-router-dom
react 学习 1. 下载与安装 下载 npm install -g create-react-app 安装 npx create-react-app xxx 推荐 npm init react-app xxx yarn create react-app xxx 2. 创建 react 元素 indexjs 文件 import React from "react"; import ReactDOM from "react…...

优化UVM环境(八)-整理project_common_pkg文件
书接上回: 优化UVM环境(七)-整理环境,把scoreboard拿出来放在project_common环境里 Prj_cmn_pkg.sv考虑到是后续所有文件的基础,需要引入uvm_pkg并把自身这个pkg import给后续的文件: 这里有3个注意事项&…...

【实战案例】Django框架连接并操作数据库MySQL相关API
本文相关操作基于上次操作基本请求及响应基础之上【实战案例】Django框架基础之上编写第一个Django应用之基本请求和响应 Django框架中默认会连接SQLite数据库,好处是方便无需远程连接,打包项目挪到其他环境安装一下依赖一会就跑起来,但是缺点…...

【其他】无法启动phptudy服务,提示错误2:系统找不到指定的文件
在服务中启动phpstudy服务时,提示“windows 无法启动phpstudy服务 服务(位于本地计算机上) 错误2:系统找不到指定的文件”的错误。导致错误的原因是可执行文件的路径不对,修改成正确的路径就可以了。 下面是错误的路径,会弹出错误窗口&#…...

AI驱动的支持截图或线框图快速生成网页应用的开源项目
Napkins.dev是什么 Napkins.dev是一个创新的开源项目,基于AI技术将用户的截图或线框图快速转换成可运行的网页应用程序。项目背后依托于Meta的Llama 3.1 405B大型语言模型和Llama 3.2 Vision视觉模型,结合Together.ai的推理服务,实现从视觉设…...

es集群索引是黄色
排查 GET /_cat/shards?hindex,shard,prirep,state,unassigned.reason 查询原因 发现node正常 执行重新分配 retry_failedtrue 参数告诉Elasticsearch重试那些因某种原因(如节点故障、资源不足等)而失败的分片分配。这个选项通常用来尝试再次分配那些…...

获取淘宝商品评论的方法分享-调用API接口item_review
在电商领域,商品评论是消费者了解产品、做出购买决策的重要依据。淘宝作为中国最大的电商平台之一,其商品评论系统涵盖了海量的用户反馈数据。为了帮助企业、电商数据分析师、市场研究人员以及普通消费者更高效地获取这些评论数据,淘宝开放平…...

MATLAB人脸考勤系统
MATLAB人脸考勤系统课题介绍 该课题为基于MATLAB平台的人脸识别系统。传统的人脸识别都是直接人头的比对,现实意义不大,没有一定的新意。该课题识别原理为:先采集待识别人员的人脸,进行训练,得到人脸特征值。测试的时…...

Spring篇(事务篇 - 基础介绍)
目录 一、JdbcTemplate(持久化技术) 1. 简介 2. 准备工作 2.1. 引入依赖坐标 2.2. 创建jdbc.properties 2.3. 配置Spring的配置文件 3. 测试 3.1. 在测试类装配 JdbcTemplate 3.2. 测试增删改功能 查询一条数据为实体类对象 查询多条数据为一个…...

qt EventFilter用途详解
一、概述 EventFilter是QObject类的一个事件过滤器,当使用installEventFilter方法为某个对象安装事件过滤器时,该对象的eventFilter函数就会被调用。通过重写eventFilter方法,开发者可以在事件处理过程中进行拦截和处理,实现对事…...

[ 钓鱼实战系列-基础篇-6 ] 一篇文章让你了解邮件服务器机制(SMTP/POP/IMAP)-1
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...

wordpress伪静态规则
WordPress 伪静态规则是指将 WordPress 生成的动态 URL 转换为静态 URL 的规则,这样做可以提高网站的搜索引擎优化(SEO)效果,并且使得 URL 更加美观、易于记忆。伪静态规则通常需要在服务器的配置文件中设置,不同的服务器环境配置方法有所不同…...

缓存框架JetCache源码解析-缓存定时刷新
作为一个缓存框架,JetCache支持多级缓存,也就是本地缓存和远程缓存,但是不管是使用着两者中的哪一个或者两者都进行使用,缓存的实时性一直都是我们需要考虑的问题,通常我们为了尽可能地保证缓存的实时性,都…...

docker配置mysql8报错 ERROR 2002 (HY000)
通过docker启动的mysql,发现navicat无法连接,后来进入容器内部也是无法连接,产生以下错误 root9f3b90339a14:/var/run/mysqld# mysql -u root -p Enter password: ERROR 2002 (HY000): Cant connect to local MySQL server through socket …...

【Linux】为什么环境变量具有全局性?共享?写时拷贝优化?
环境变量表具有全局性的原因: 环境变量表之所以具有全局性的特征,主要是因为它们是在进程上下文中维护的,并且在大多数操作系统中,当一个进程创建另一个进程(即父进程创建子进程)时,子进程会继承…...

如何在Linux中找到MySQL的安装目录
前言 发布时间:2024-10-22 在日常管理和维护数据库的过程中,了解MySQL的确切安装位置对于执行配置更改、更新或者进行故障排查是非常重要的。本文将向您介绍几种在Linux环境下定位MySQL安装路径的方法。 通过命令行工具快速定位 使用 which 命令 首…...

机器人备件用在哪些领域
机器人备件,作为机器人技术的重要组成部分,被广泛应用于多个领域,以提高生产效率、降低成本、增强产品质量,并推动相关行业的智能化发展。以下是一些主要的应用领域: 制造业: 机器人备件在制造业中的应用最…...