openEuler系统部署TensorFlow GPU版:从环境配置到避坑指南
1. 从“能用”到“好用”在openEuler上部署TensorFlow的完整心路最近在给一个边缘计算项目做技术选型目标平台是基于ARM架构的国产服务器操作系统指定了openEuler。团队里做算法的小伙伴张口就是TensorFlow这让我这个负责部署运维的有点头大。说实话第一次听到这个组合——“openEuler上跑TensorFlow”——我下意识觉得这可能是个“踩坑”之旅。毕竟TensorFlow的官方文档和社区讨论绝大多数都是围绕着Ubuntu、CentOS这些主流发行版openEuler作为一个相对较新且在国内生态中快速发展的操作系统相关的实践分享确实不多。但实际做下来我发现情况比预想的要乐观。openEuler本身源自成熟的Linux内核其软件包管理和社区支持正在飞速完善。部署TensorFlow的核心挑战其实不在于系统本身有多“特殊”而在于如何绕开那些因生态位差异而产生的“信息差”。比如你知道该用哪个版本的GCC编译环境吗系统自带的Python3是哪个小版本用pip直接装tensorflow十有八九会碰到一堆依赖报错尤其是涉及到GPU加速时CUDA、cuDNN的版本矩阵简直让人眼花缭乱。这篇文章就是我完整走通这条路之后的一份详细记录。它不是一份冷冰冰的官方文档翻译而是一个实践者从“从零开始”到“顺畅运行”的全过程复盘包含了版本选择背后的权衡、每一步操作的具体意图、以及那些在普通教程里不会写的“坑”和应对技巧。无论你是需要在国产化环境中部署AI应用还是单纯对在openEuler上玩转深度学习框架感兴趣希望这份经验能帮你少走弯路。2. 环境侦察与前期规划定好基调才能避免返工在动手敲下任何安装命令之前花半小时做好规划能省下后面半天甚至更久的折腾时间。这个阶段的核心是搞清楚三个问题系统现状、目标需求、以及两者之间的匹配路径。2.1 摸清家底你的openEuler是什么版本openEuler有不同的LTS长期支持版本和社区创新版本。首先通过命令确认系统详细信息cat /etc/os-release这个命令会输出类似下面的信息NAMEopenEuler VERSION22.03 LTS IDopenEuler ...我这次使用的就是openEuler 22.03 LTS这是一个非常稳定的版本。确认版本号至关重要因为不同版本的openEuler其默认的软件源、内核版本、乃至预装的Glibc版本都可能不同这些都会直接影响后续软件包的兼容性。接下来检查关键的编译工具链。TensorFlow的某些底层库特别是在从源码构建时对GCC版本有要求。gcc --version在openEuler 22.03上默认的GCC版本通常是9.3或更高这对于安装主流的TensorFlow 2.x版本来说是足够的。但如果你的系统是更早的版本可能需要考虑升级GCC。2.2 明确目标你需要什么样的TensorFlowTensorFlow的安装选项很多你需要根据硬件和应用场景做出选择CPU版 vs GPU版这是最重要的决策。如果你的机器有NVIDIA GPU并且需要用于训练或大规模推理那么必须安装GPU版本。如果只是用于学习、轻量级推理或没有GPU那么CPU版本更简单、更稳定。安装方式pip安装最简单快捷直接从Python官方的PyPI仓库或国内镜像如清华、阿里云镜像下载预编译的wheel包。这是最推荐新手和大多数生产环境使用的方式。Docker安装通过TensorFlow官方提供的Docker镜像运行。这种方式隔离性好几乎免除了环境依赖的烦恼特别适合快速部署和测试。在openEuler上只要Docker引擎正常运行这就是一条捷径。源码编译最复杂、最耗时但能获得针对特定CPU指令集如AVX2的极致优化。除非你有非常特殊的硬件如某些国产AI加速卡或定制化需求否则不推荐在初次部署时尝试。版本选择TensorFlow 2.x已是绝对主流API更友好。具体小版本如2.10, 2.13需要与Python版本、CUDA版本如果装GPU版匹配。一个实用的建议是选择比当前最新版稍旧1-2个的稳定版本。例如在2023年下半年TensorFlow 2.13是最新但2.10或2.11拥有更广泛的社区验证和更稳定的轮子。基于以上分析我为这次部署确定的目标是在openEuler 22.03 LTS上通过pip安装TensorFlow 2.10的GPU版本以利用服务器的NVIDIA Tesla T4显卡。2.3 依赖地图理清软件之间的“亲戚关系”安装GPU版的TensorFlow本质上是在搭建一个由“Python - TensorFlow - CUDA - cuDNN - NVIDIA驱动”构成的依赖栈。它们必须版本兼容。最权威的参考是TensorFlow官方的 版本对照表 虽然更新可能滞后但仍有重要参考价值。根据TensorFlow 2.10的要求我锁定了以下配套版本Python: 3.7-3.10。openEuler 22.03默认可能安装Python 3.9这很好。CUDA: 11.2cuDNN: 8.1而NVIDIA驱动版本则需要满足CUDA 11.2的最低要求。可以通过nvidia-smi命令查看现有驱动版本。这一步规划就像打仗前的沙盘推演能让你对即将面对的挑战心中有数。注意很多教程一上来就让你pip install tensorflow这在Ubuntu上可能侥幸成功但在openEuler上极大概率会因为缺少系统级依赖如某些开发库而失败。先规划再动手是高效部署的第一原则。3. 系统级依赖的安装与配置规划好路线图后我们开始修筑“路基”——安装那些TensorFlow所依赖的系统级软件包。openEuler使用dnf作为包管理器兼容yum命令这是与CentOS/RHEL系相同的体验。3.1 基础编译环境与工具首先更新软件源并安装编译Python包所需的工具链。这些包提供了gcc、make、python3-devel等当pip安装某些TensorFlow依赖需要编译本地扩展时它们是必需的。sudo dnf update -y sudo dnf groupinstall -y Development Tools sudo dnf install -y python3-devel python3-pip openssl-devel libffi-devel bzip2-devel sqlite-devel这里有个小细节openEuler的软件源里python3-devel这个包名是固定的它提供了Python.h头文件和链接库。确保它被成功安装可以避免后续出现“找不到Python.h”的经典错误。3.2 Python环境管理强烈建议使用虚拟环境永远不要直接在系统的全局Python环境中安装TensorFlow这样庞大且版本敏感的包。这会导致包冲突、版本污染并且难以管理多个项目。我强烈推荐使用venv模块创建独立的虚拟环境。# 创建一个名为‘tf_openEuler’的虚拟环境 python3 -m venv ~/venvs/tf_openEuler # 激活虚拟环境 source ~/venvs/tf_openEuler/bin/activate激活后你的命令行提示符前通常会显示(tf_openEuler)表示你已经进入了这个隔离的环境。接下来所有pip安装的操作都只会影响这个环境与系统完全无关。退出虚拟环境只需输入deactivate。3.3 配置高效的pip镜像默认的PyPI源在国外下载速度慢且不稳定。将pip源更换为国内镜像能极大提升体验。我们创建一份pip配置文件mkdir -p ~/.pip cat ~/.pip/pip.conf EOF [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple trusted-host pypi.tuna.tsinghua.edu.cn timeout 120 EOF这里我使用了清华大学的镜像源。你也可以替换为阿里云(https://mirrors.aliyun.com/pypi/simple/)或腾讯云等镜像。这个配置是全局的对所有虚拟环境都有效。4. TensorFlow CPU版本的安装与验证我们先从更简单的CPU版本开始。这不仅能验证Python环境和基础依赖是否完好也能作为一个可靠的“安全网”——如果GPU版本安装遇到棘手问题至少有一个能工作的CPU版本可以用于调试和开发。在激活的虚拟环境中执行安装命令。为了确保版本兼容性我们指定安装2.10.0版本。pip install tensorflow2.10.0pip会自动解析并安装TensorFlow及其所有Python依赖如numpy,absl-py,protobuf等。这个过程会下载一个大约400MB的wheel包速度取决于你的网络。安装完成后进行一个最小化的功能验证。启动Python解释器python -c import tensorflow as tf; print(fTensorFlow版本: {tf.__version__}); print(fGPU是否可用: {tf.config.list_physical_devices(\GPU\)})如果一切顺利你会看到类似这样的输出TensorFlow版本: 2.10.0 GPU是否可用: []版本号正确并且GPU列表为空因为我们安装的是CPU版。这证明了TensorFlow的核心Python环境已经成功运行。你可以再写一个简单的脚本来做一个加法运算确保基础功能正常。实操心得第一次安装时我遇到了一个关于numpy版本的警告。TensorFlow 2.10.0要求特定版本的numpy~1.23但pip在解决依赖时可能会安装更新的版本有时会导致细微的不兼容。如果遇到运行时警告可以尝试强制安装指定的numpy版本pip install numpy1.23.5。这是深度学习部署中常见的“依赖地狱”问题保持版本锁定是关键。5. 为GPU加速铺路CUDA与cuDNN的部署这是整个过程中最具挑战性的一步也是决定GPU版TensorFlow能否成功运行的关键。核心原则是严格遵循版本匹配矩阵。5.1 步骤一验证与安装NVIDIA驱动没有正确的显卡驱动一切都无从谈起。首先检查驱动是否已安装nvidia-smi如果这个命令能正常执行并输出显卡信息、驱动版本和CUDA版本注意这里显示的CUDA版本是驱动支持的最高CUDA运行时版本不是你实际安装的版本那么驱动是OK的。记下你的驱动版本号例如525.105.17。如果命令未找到你需要安装NVIDIA驱动。在openEuler上可以通过dnf搜索来自ELRepo或NVIDIA官方源的驱动包。由于步骤相对复杂且依赖具体内核版本建议参考openEuler社区或NVIDIA官方文档。一个常见的做法是下载NVIDIA官方.run文件进行安装但需要提前安装kernel-devel包以编译内核模块。5.2 步骤二安装CUDA Toolkit 11.2我们不推荐通过dnf安装CUDA因为版本可能不匹配。最可靠的方式是从NVIDIA官网下载特定版本的runfile或rpm包进行离线安装。访问NVIDIA CUDA Toolkit存档页面找到CUDA Toolkit 11.2的下载链接。选择安装方式对于openEuler基于RHEL选择“rpm (local)”方式通常更便于管理。下载与安装# 假设下载的文件名为 cuda-repo-rhel8-11-2-local-11.2.2_460.32.03-1.x86_64.rpm sudo dnf install ./cuda-repo-rhel8-11-2-local-11.2.2_460.32.03-1.x86_64.rpm sudo dnf clean all sudo dnf install cuda-11-2安装过程会包含驱动吗在安装选项中如果系统已有驱动请确保取消勾选驱动安装只安装CUDA Toolkit。配置环境变量安装程序通常会提示你将CUDA路径加入环境变量。如果没有需要手动添加。编辑你的shell配置文件如~/.bashrcexport PATH/usr/local/cuda-11.2/bin${PATH::${PATH}} export LD_LIBRARY_PATH/usr/local/cuda-11.2/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}}然后执行source ~/.bashrc使其生效。验证安装nvcc --version这个命令应该输出CUDA 11.2的版本信息。5.3 步骤三安装cuDNN 8.1cuDNN是深度神经网络加速库需要从NVIDIA开发者网站单独下载需要注册账号。下载找到对应CUDA 11.2的cuDNN 8.1版本下载“Library for Linux (x86_64)”的压缩包例如cudnn-11.2-linux-x64-v8.1.1.33.tgz。安装这本质上是将库文件复制到CUDA的目录中。tar -xzvf cudnn-11.2-linux-x64-v8.1.1.33.tgz sudo cp cuda/include/cudnn*.h /usr/local/cuda-11.2/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.2/lib64/ sudo chmod ar /usr/local/cuda-11.2/include/cudnn*.h /usr/local/cuda-11.2/lib64/libcudnn*验证检查库文件是否就位。ldconfig -p | grep cudnn踩坑记录最大的坑在于版本管理的混乱。我曾尝试安装CUDA 11.8和对应的TensorFlow 2.13但发现当时可用的预编译TensorFlow wheel包对CUDA 11.8的支持并不完善导致import tensorflow时出现libcudart.so找不到的诡异错误。教训是严格按照TensorFlow官网发布的、经过测试的版本组合来不要盲目追求最新。对于生产环境稳定性和可复现性远高于那一点点新版本可能带来的性能提升。6. TensorFlow GPU版本的终极安装与深度测试系统级依赖全部就绪后安装GPU版的TensorFlow本身反而很简单。6.1 安装命令与版本选择在之前创建的虚拟环境中如果已退出请重新激活卸载之前的CPU版本如果有然后安装GPU版本。TensorFlow的GPU版本包名通常是tensorflow但为了明确我们可以安装tensorflow-gpu在较新版本中这两个包名已合并。# 如果已安装CPU版先卸载 pip uninstall tensorflow -y # 安装指定版本的TensorFlowGPU版 pip install tensorflow2.10.0是的命令和安装CPU版时一样。因为pip包会根据系统环境自动选择是安装CPU还是GPU的wheel文件吗不完全是。实际上从TensorFlow 2.1以后官方发布的tensorflow包对应版本同时包含了CPU和GPU支持。它会在运行时自动检测CUDA/cuDNN环境。如果检测到且版本匹配就使用GPU否则就回退到CPU模式。所以我们只需要安装一个包。6.2 全面验证从导入到计算安装完成后进行一个比CPU版更全面的测试。import tensorflow as tf print(fTensorFlow 版本: {tf.__version__}) print(fKeras 版本: {tf.keras.__version__}) # 1. 列出所有物理设备 gpus tf.config.list_physical_devices(GPU) cpus tf.config.list_physical_devices(CPU) print(f\n可用的物理GPU: {gpus}) print(f可用的物理CPU: {cpus}) # 2. 如果检测到GPU打印其信息 if gpus: for gpu in gpus: details tf.config.experimental.get_device_details(gpu) print(f\nGPU设备详情: {details}) # 3. 执行一个简单的GPU计算测试 print(\n--- 开始GPU计算测试 ---) with tf.device(/GPU:0): a tf.constant([[1.0, 2.0], [3.0, 4.0]]) b tf.constant([[5.0, 6.0], [7.0, 8.0]]) c tf.matmul(a, b) print(f矩阵a:\n{a}) print(f矩阵b:\n{b}) print(fGPU计算结果c:\n{c}) # 将结果取回CPU并打印验证计算正确性 print(f取回CPU的c值:\n{c.numpy()}) else: print(未检测到GPU设备请检查CUDA和驱动安装。)这个脚本完成了四件事确认TensorFlow和Keras版本。列出所有可用的计算设备确认GPU被正确识别。获取GPU的具体信息如名称、计算能力。在GPU上执行一个实际的矩阵乘法运算并验证结果正确性。如果一切顺利你将看到GPU设备被列出并成功完成计算。输出中可能会显示你的GPU型号如Tesla T4和计算能力如7.5。6.3 可能遇到的问题与排查即使按照步骤操作也可能会遇到问题。以下是几个常见“症状”及其排查思路import tensorflow时报错libcudart.so.11.0: cannot open shared object file原因系统找不到CUDA的动态链接库。排查确认LD_LIBRARY_PATH环境变量是否正确包含了/usr/local/cuda-11.2/lib64。用echo $LD_LIBRARY_PATH检查。确认库文件确实存在ls /usr/local/cuda-11.2/lib64/libcudart.so*。运行ldconfig更新动态链接器缓存sudo ldconfig /usr/local/cuda-11.2/lib64。GPU设备列表为空但nvidia-smi正常原因1TensorFlow Python包安装的版本与本地CUDA版本不匹配。解决严格对照官方支持矩阵重装匹配的TensorFlow版本。原因2cuDNN未正确安装或版本不对。解决检查cuDNN文件是否复制到了正确的CUDA目录并确认版本是8.1.x for CUDA 11.2。警告Could not load dynamic library ‘libcudnn.so.8‘原因TensorFlow找到了CUDA但没找到对应版本的cuDNN。解决这是cuDNN安装路径问题的典型表现。确保libcudnn.so.8的软链接正确指向了你复制过去的文件。可以尝试手动创建软链接sudo ln -sf /usr/local/cuda-11.2/lib64/libcudnn.so.8.1.1 /usr/local/cuda-11.2/lib64/libcudnn.so.8然后再次运行ldconfig。7. 进阶配置与生产环境考量当基本的TensorFlow能够运行后为了在openEuler上获得更好的稳定性和性能还需要进行一些进阶配置。7.1 优化虚拟环境与依赖管理对于生产环境仅仅使用venv可能不够。可以考虑Conda环境如果项目涉及更复杂的、非Python的二进制依赖比如某些特定的科学计算库使用Miniconda或Anaconda来管理环境可能更强大。Conda可以同时管理Python包和系统库。在openEuler上安装Conda后创建环境的命令是conda create -n tf_openEuler python3.9。依赖清单固化使用pip freeze requirements.txt命令将当前虚拟环境中所有包的精确版本导出。这份文件是项目可复现的基石。在其他机器上部署时只需pip install -r requirements.txt即可。7.2 性能调优与监控GPU内存管理默认情况下TensorFlow会尝试占满GPU的所有可用内存。这在多任务共享GPU时可能有问题。可以在程序开头进行配置gpus tf.config.list_physical_devices(GPU) if gpus: try: # 设置内存动态增长避免一开始就占满 for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True) # 或者限制TensorFlow只能使用特定大小的GPU内存 # tf.config.set_logical_device_configuration(gpus[0], [tf.config.LogicalDeviceConfiguration(memory_limit6144)]) # 限制为6GB except RuntimeError as e: print(e)使用混合精度训练在支持Tensor Core的GPU如Volta架构及以后的T4, V100, A100等上使用混合精度fp16可以显著加速训练并减少内存占用。在TensorFlow 2.x中这非常简单from tensorflow.keras import mixed_precision policy mixed_precision.Policy(mixed_float16) mixed_precision.set_global_policy(policy)系统监控结合nvidia-smiGPU和htop或atopCPU/内存来监控训练时的系统资源使用情况。openEuler自带的dnf可以安装这些工具。7.3 容器化部署终极的隔离方案如果你觉得在裸机上管理CUDA环境太繁琐或者需要部署多个不同版本的环境那么Docker容器化是更优雅的解决方案。TensorFlow官方在Docker Hub上提供了几乎所有主流版本的、预配置好CUDA和cuDNN的镜像。在openEuler上安装并启动Docker服务后运行TensorFlow GPU版本只需要一行命令docker run --gpus all -it --rm tensorflow/tensorflow:2.10.0-gpu python -c import tensorflow as tf; print(tf.config.list_physical_devices(GPU))--gpus all参数将宿主机的GPU透传给容器。这种方式几乎完全屏蔽了底层系统的差异极大地简化了部署和迁移。对于生产环境的微服务化部署这是目前的主流方向。8. 总结与避坑指南回顾走完整个流程再回头看“在openEuler上部署TensorFlow”这件事你会发现核心难点并不在openEuler本身而在于深度学习软件栈固有的复杂版本依赖关系。openEuler作为一个健壮的企业级Linux发行版为运行这些软件提供了稳定的基础。最后我把最关键的经验和避坑点再浓缩一下版本版本版本这是成功的第一要素。在开始前务必花时间确定TensorFlow、Python、CUDA、cuDNN、NVIDIA驱动这五者的兼容版本组合。以TensorFlow官网的测试矩阵为基准不要随意混用新版本。虚拟环境是必需品无论多么简单的测试都请在虚拟环境中进行。这能为你节省无数清理冲突的时间。GPU环境部署的核心是路径90%的GPU相关问题都是因为CUDA/cuDNN的库文件路径没有被系统正确找到。确保LD_LIBRARY_PATH环境变量设置正确并定期使用ldconfig更新缓存。善用官方容器镜像如果你的最终目标是部署应用而不是研究系统配置那么直接使用TensorFlow官方Docker镜像是最快、最稳的选择。它把最麻烦的依赖问题都解决了。openEuler的“特殊性”相比CentOSopenEuler的软件源可能缺少一些非常小众的开发库。如果遇到dnf install找不到某个包的情况可以尝试在 openEuler社区 或通过dnf search查找替代包名或者考虑从源码编译该依赖。部署完成后你可以安心地在openEuler这个国产操作系统的坚实基础上开展你的AI模型训练、推理或应用开发了。这个过程虽然有些曲折但一旦打通你就会获得对深度学习底层环境更深刻的理解这种能力在解决未来更复杂的问题时会显得尤为宝贵。

相关新闻

【清华代码熊】总结|Kimi / GLM / DeepSeek后训练OPD算法

【清华代码熊】总结|Kimi / GLM / DeepSeek后训练OPD算法

📌 本期对比总结Kimi K3/ GLM 5/ DeepSeek V4 后训练On-Policy Distillation 算法。

2026/10/20 23:13:40 阅读更多 →
医学统计学在文化内容产业中的跨界应用

医学统计学在文化内容产业中的跨界应用

1. 医学统计学的跨界基因重组当临床研究中的双盲试验设计遇上电影票房预测,当生存分析模型开始解析短视频用户留存曲线,这种看似荒诞的学科跨界正在催生文化产业的第三次方法论革命。作为经历过医药研发全流程的统计建模师,我亲眼见证过医学统…

2026/10/20 8:24:12 阅读更多 →
Umi-OCR:解决文档数字化难题的离线文字识别完整方案

Umi-OCR:解决文档数字化难题的离线文字识别完整方案

Umi-OCR:解决文档数字化难题的离线文字识别完整方案 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库…

2026/10/18 20:58:28 阅读更多 →

最新新闻

VS Code Jupyter内核崩溃排查:Kernel died with exit code 1全链路解析

VS Code Jupyter内核崩溃排查:Kernel died with exit code 1全链路解析

1. 从一个让人抓狂的报错说起如果你在 VS Code 里用 Jupyter 跑过代码,大概率见过这个弹窗:"Kernel died with exit code 1"。它不像语法错误那样给你一行红色波浪线,也不像缺包那样告诉你ModuleNotFoundError,它就是一…

2026/10/20 23:43:35 阅读更多 →
5秒语音克隆:Chatterbox-Turbo如何实现48kHz高保真音色复制

5秒语音克隆:Chatterbox-Turbo如何实现48kHz高保真音色复制

1. 五秒语音,听起来像什么:这套方案到底做了什么1.1 从“录三小时”到“录一句话”的跨越语音克隆这件事,早几年还是配音圈和极客圈的玩具。传统方案想克隆一个声音,至少要准备几十条、最优情况下一两个小时的高质量干音&#xff…

2026/10/20 23:43:35 阅读更多 →
C++ OpenCV图像处理流水线:从平滑到面积测量的完整实现

C++ OpenCV图像处理流水线:从平滑到面积测量的完整实现

简介:面向图像处理初学者的C实验项目,源自中国科技大学图像测量课程,围绕图像平滑、增强、边缘检测、阈值化、细化、面积测量及区域边界提取与周长计算展开,适合课程实验复现、毕业设计参考或算法入门。代码按实验划分成独立目录&…

2026/10/20 23:43:35 阅读更多 →
论文查重与AI痕迹检测:底层逻辑、降重实操与合规工具使用

论文查重与AI痕迹检测:底层逻辑、降重实操与合规工具使用

论文重复率和AI痕迹这两道关卡,确实是眼下不少同学毕业季最头疼的事。尤其是当学校同时接入两套检测系统,这边降下去了、那边又标红,再叠加“AI痕迹”这个新指标,很多人的论文改到崩溃也没搞清楚问题到底出在哪。我折腾过不少类似…

2026/10/20 23:43:35 阅读更多 →
论文查重与AI检测双重压力下的降重实战指南

论文查重与AI检测双重压力下的降重实战指南

每年到毕业季,总有同学拿着查重报告来找我,第一句话基本都是“师兄,这个降重到底怎么降”。我见过最夸张的一份初稿,查重率99.8%,基本整篇标红,学生说用了某个“一键降重工具”后反而越改越乱,最…

2026/10/20 23:43:35 阅读更多 →
Linux挂载NTFS报独占错误?排查链路与解决方案全解析

Linux挂载NTFS报独占错误?排查链路与解决方案全解析

1. 这个报错到底在说什么如果你在 Linux 或 macOS 上挂载一块 Windows 格式(NTFS)的移动硬盘,突然蹦出这么一行字:Mount is denied because the NTFS volume is already exclusively opened. The volume may be already mounted, …

2026/10/20 23:42:34 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →