当前位置: 首页 > news >正文

深度学习---获取模型中间层输出的意义

一、什么是 Hook(钩子函数)?

在 PyTorch 中,Hook 是一种机制,允许我们在模型的前向传播或反向传播过程中,插入自定义的函数,用来观察或修改中间数据

最常用的 hook 是 forward hook(前向钩子),它可以用来获取某一层的输出,也就是我们通常说的 中间特征图(Feature Map)。


二、如何使用 forward hook 获取中间层的输出?

 1. 注册 forward hook 的基本方法:

# 定义一个 hook 函数
def forward_hook(module, input, output):print(f"{module.__class__.__name__} 输出的 shape: {output.shape}")# 模型
model = YourModel()
model.eval()# 注册 hook:例如我们想观察 model 的某一层,比如 model.conv1
hook_handle = model.conv1.register_forward_hook(forward_hook)# 前向传播
output = model(input_tensor)# 用完后可移除 hook
hook_handle.remove()

 2. 保存中间输出:

feature_maps = {}def save_feature_map(name):def hook(module, input, output):feature_maps[name] = output.detach().cpu()return hook# 注册多个 hook
model.conv1.register_forward_hook(save_feature_map('conv1'))
model.layer3.register_forward_hook(save_feature_map('layer3'))# 前向传播
model(input_tensor)# 可视化
import matplotlib.pyplot as plt
plt.imshow(feature_maps['conv1'][0, 0], cmap='viridis')  # 显示第一个通道

 三、获取特征图的意义是什么?

1. 调试模型结构是否合理

  • 查看特征图的尺寸是否逐层减小得合理(是否有过度压缩或保留过多)。

  • 发现某一层输出全为 0 或极度相似(可能是 ReLU 死神经元、激活值消失)。

2. 分析模型对输入的响应区域

  • 看某层激活图是否只关注了局部区域(表示模型学习了局部特征);

  • 是否过早地丢失了空间信息(比如图像任务中出现太早的全局池化)。

3. 定位训练问题

  • 某一层的输出值非常大或非常小,可能意味着梯度爆炸/消失。

  • 如果某些层始终输出近乎常数,可能表示该层没有被有效训练。

4. 解释模型行为

  • 将特征图可视化,可以帮助我们理解模型是“看到了什么”从而做出判断的。

  • 对于医学图像、目标检测等任务,这种“可解释性”尤其重要。


 四、根据观察结果该如何优化模型?

1. 特征图为全 0 或近似常数

问题原因:

  • ReLU 激活后值全部为负,导致输出为 0;

  • 权重初始化不合理;

  • 学习率过高导致梯度爆炸使参数无效。

优化方式:

  • 调整初始化方式(如使用 kaiming_normal_)。

  • 尝试其他激活函数(LeakyReLU、GELU)。

  • 减小学习率。

  • 在该层前后加入归一化层(如 BatchNorm)。


 2. 特征图太早变小 / 特征被过度压缩

问题原因:

  • 池化层用得太早或卷积 stride 太大;

  • 使用了较多步长为2的下采样操作。

优化方式:

  • 减少早期层的 stride 和池化;

  • 使用 dilated convolution 代替池化;

  • 在早期增加残差连接防止信息丢失。


3. 特征图太过稀疏(很多区域几乎无响应)

问题原因:

  • 激活函数太激进;

  • 模型太浅或感受野不足;

  • 数据预处理不当,模型难以从中提取有效特征。

优化方式:

  • 使用更温和的激活函数(如 Softplus、SiLU);

  • 添加更多卷积层或扩大感受野;

  • 改进数据增强策略或预处理方式。


 五、实战建议(经验总结)

观察现象可能原因调整方向
特征图全 0ReLU 死区、参数异常更换激活函数、重新初始化
特征图太早过小Pooling、stride 设太大减小 stride、减少池化
层间特征图变化微小梯度小、训练不足增大学习率、加 BN
中间层关注区域不合理模型结构问题改网络结构,加注意力机制
部分通道输出显著,其他几乎无值通道冗余、通道不均衡通道选择、结构压缩

在 NLP 模型(如 Transformer、BERT)中的中间值可视化

1. 可视化注意力权重(Attention Map)

  • 意义

    • 观察模型在处理文本时关注了哪些词(词与词之间的注意关系);

    • 判断模型是否学会了合理的语义结构(如主谓宾、指代等)。

  • 应用举例

    • 检查多头注意力是否冗余;

    • 发现某些头始终关注[CLS]或[SEP],可能无效;

    • 用于解释“模型为什么得出这个结论”。

  • 常用工具

    • BertViz:交互式可视化 BERT 的 attention。

    • 自定义 heatmap,展示每个 token 对其他 token 的关注度。

2. 可视化中间层输出(如 hidden states)

  • 意义

    • 观察不同层的表示是否存在梯度消失(值趋近于 0)或梯度爆炸(值过大);

    • 判断每层是否学到了不同层级的语义信息。

  • 如何做

    from transformers import BertModel
    model = BertModel.from_pretrained('bert-base-uncased', output_hidden_states=True)
    outputs = model(input_ids)
    hidden_states = outputs.hidden_states  # list of [batch_size, seq_len, hidden_dim]
    
  • 可以观测

    • 每一层的均值/方差;

    • 某个 token 在各层的 embedding 变化;

    • 层间差异是否足够大(防止“层塌陷”)。


二、在时间序列模型(如 LSTM、GRU)中的中间值可视化

1. 可视化 hidden state 随时间变化

  • 意义

    • 观察 LSTM/GRU 的长期记忆能力;

    • 判断模型是否能稳定传递信息;

    • 判断是否存在梯度消失或梯度爆炸问题。

  • 方法

    • 将 hidden state 在每个 timestep 上取均值/最大值;

    • 绘制随时间变化曲线;

    • 比较正常样本与异常样本之间的 hidden 差异。

2. 观测门控值(input gate / forget gate)

  • 意义

    • 判断模型如何“保留”或“忘记”信息;

    • 可用于异常检测、行为解释。

  • 优化建议

    • 如果 forget gate 长期为0或1,可能需要调整学习率或使用 LayerNorm;

    • 如果模型只记得初始几步,可改用 attention 来增强远程依赖建模。


 三、在图神经网络(GNN)中的中间值可视化

1. 可视化节点表示的分布

  • 意义

    • 通过 t-SNE / PCA 将中间嵌入压缩到2D空间,判断类别是否可分;

    • 如果不同类节点在图嵌入空间混合,可能模型未学到有效的图结构信息。

  • 方法

    from sklearn.manifold import TSNE
    tsne = TSNE()
    reduced = tsne.fit_transform(node_embeddings)
    

2. 可视化图注意力(如 GAT)

  • 意义

    • 判断模型在邻接点之间是如何聚合信息的;

    • 观察是否存在邻接权重完全偏向某个节点的问题。


 四、这些可视化能指导哪些调整?

可视化发现的问题可能的优化方法
多头注意力冗余减少 head 数量或使用 head pruning
某层输出异常小增加 LayerNorm 或调整初始化
时间序列中记忆过短加强 context(如 attention + LSTM)
Graph 中节点难分离增强 message passing 或使用 edge features
Hidden 状态过饱和添加 dropout 或使用更平滑的激活函数

总结

即使在非图像任务中,“中间值的可视化”依然是深度学习调试的重要手段:

任务类型可视化对象意义
NLPAttention、Hidden State理解语义建模、层行为
时间序列Hidden 随时间变化、门控机制检查记忆能力与梯度
GNN节点表示、邻居权重判断结构信息是否有效利用

可视化让模型从“黑箱”变为“半透明盒子”,帮助我们做出更理性的决策与优化。

相关文章:

深度学习---获取模型中间层输出的意义

一、什么是 Hook(钩子函数)? 在 PyTorch 中,Hook 是一种机制,允许我们在模型的前向传播或反向传播过程中,插入自定义的函数,用来观察或修改中间数据。 最常用的 hook 是 forward hook&#xf…...

【软件测试】第一章·软件测试概述

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件测试与软件项目管理_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录…...

格雷希尔G10和G15系列自动化快速密封连接器,适用于哪些管件的密封,以及它们相关的特性有哪些?

格雷希尔G10和G15系列快速密封连接器,用于自动化和半自动化过程中的外部或内部密封,通过使用气压驱动来挤压内部的密封圈,创造一个适用于各种管件的无泄漏密封连接,连接器内部的弹性密封圈可以提供其他产品不能提供的卓越密封性能…...

从零实现一个高并发内存池 - 1

C 高性能内存池解析 在 C 开发中,内存管理一直是影响程序性能的关键因素之一。传统的内存分配方式如 malloc 和 free 在高并发场景下往往存在性能瓶颈。为了解决这一问题,很多优秀的内存池方案应运而生,其中 Google 的 tcmalloc(T…...

在 STM32 上使用 register 关键字

在 STM32 上使用 register 关键字时,有一些特别需要注意的事项。虽然 register 是 C 语言中的一个标准关键字,它用于提示编译器将变量尽可能存放在寄存器中,以加速访问,但在 STM32 这样的嵌入式平台上,还是需要考虑几个…...

【入门】纸盒的最大体积是多少?

描述 在一张尺寸为 n * n 厘米的正方形硬纸板的四个角上,分别裁剪掉一个 m * m 厘米的小正方形,就可以做成一个无盖纸盒,请问这个无盖纸盒的最大体积是多少? 立方体的体积 v 底面积 * 高) 比如: n 5 &am…...

漏桶算法的实际应用案例:数据库批量写入流量控制

场景描述 假设有一个物联网平台,需要实时接收成千上万台设备上报的数据(如温度、湿度等),并将数据存入数据库。设备可能在某些时刻集中发送数据(例如定时批量上报),直接写入数据库可能导致以下问…...

c++函数参数列表后面的const的作用(常量成员函数)

c函数参数列表后面的const的作用 class Person { public://普通构造函数Person():age(0){}//常量成员函数void read_age() const {age100; //错误&#xff01;常量成员函数不允许修改成员变量&#xff08;除非成员变量用mutable修饰&#xff09;std::cout << "age:…...

Java的While循环写的出票简单程序

import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int balance 0;while(true){System.out.print("请投币: ");int amount in.nextInt();balance balance amount;if(balance >10 )…...

时间序列基础【学习记录】

文章目录 1. 时间序列中的标签2. 时间序列中的窗口分割器2.1.概述2.2.窗口分割器demo 3. 时间序列的数据加载器3.1.概述3.2.时间序列的dataset3.3.Tensor类型3.4.测试完整流程demo 1. 时间序列中的标签 在目标检测领域的数据集中的图像会有一个标签**(标记一个物体是猫还是狗或…...

Andorid之TabLayout+ViewPager

文章目录 前言一、效果图二、使用步骤1.主xml布局2.activity代码3.MyTaskFragment代码4.MyTaskFragment的xml布局5.Adapter代码6.item布局 总结 前言 TabLayoutViewPager功能需求已经是常见功能了&#xff0c;我就不多解释了&#xff0c;需要的自取。 一、效果图 二、使用步骤…...

光谱相机的光电信号转换

光谱相机的光电信号转换是将分光后的光学信息转化为可处理的数字信号的核心环节&#xff0c;具体分为以下关键步骤&#xff1a; 一、分光后光信号接收与光电转换 ‌分光元件作用‌ 光栅/棱镜/滤光片等分光元件将入射光分解为不同波长单色光&#xff0c;投射至探测器阵列表面…...

MySQL历史版本下载及安装配置教程

1、访问官网下载mysql https://dev.mysql.com/downloads/mysql/ 2、找到历史版本 我这里的版本是最新的mysql8.0.42 下载完成之后,将压缩包进行解压 3、环境变量 在系统变量中找到Path,点击进入编辑&#xff0c;然后依次点击确定退出即可 注意&#xff01;&#xff01;&am…...

【ArcGIS】根据shp范围生成系列等距点:范围外等距点+渔网点(Python全代码)

【ArcGIS】根据shp范围生成系列等距点 目标1&#xff1a;生成边界外一定范围、并且等间距分布的点&#x1f4c1; 所需数据&#xff1a;操作步骤-ArcGIS代码处理-Python 目标2&#xff1a;生成等距渔网点&#x1f4c1; 所需数据&#xff1a;代码处理-Python 参考 目标1&#xff…...

基于FPGA的视频接口之千兆网口(六GigE纯逻辑)

协议简介 相信大家只有对于GigE有所了解的读者,才能找到这篇文章,所谓的GigE协议包含两个方面分别是视频协议(GVSP)和控制协议(GVCP)。 在本文我们重点讲的是基于FPGA纯逻辑实现阉割版的GigE协议,也就是说在很多视频传输过中,只用到了视频流传输,并没有控制方面的要求…...

android 权限配置

在AOSP 14的ROM定制中&#xff0c;<exceptions>和<privapp-permissions>是用于管理特权应用权限的两种不同机制&#xff0c;主要区别在于作用范围、配置方式和权限授予逻辑。以下是具体分析&#xff1a; 1. <privapp-permissions> 标签 作用&#xff1a; 用…...

广告推荐算法入门 day1 --项目选型

文章目录 0 前言1 广告推荐的基本流程2 场景和baseline初步框定2.1召回场景2.2排场景2.3精排场景 3 一个入门小例子感受--淘宝用户购物行为数据可视化分析3.1 数据集介绍3.2 数据分析目标1.时间维度2.产品维度3.行为维度4.用户维度 4 基础项目选型4.1场景 推荐资料后记 0 前言 …...

【Qt】之音视频编程2:QtAV的使用篇

QtAV 基本播放控制功能实现&#xff08;C & QML&#xff09; QtAV 提供了完整的播放控制 API&#xff0c;支持 播放、暂停、停止、快进快退、截屏 等功能。以下是具体实现方法&#xff1a; 1. C 控制方式 基本播放控制 #include <QtAV> #include <QtAV/AVPlaye…...

技术视角下的TikTok店铺运营:从0到1的5个关键点

在当今数字化时代&#xff0c;TikTok Shop作为新兴的电商平台&#xff0c;为众多商家带来了新的机遇。从技术运营的角度来看&#xff0c;以下5个关键点是每个TikTok店铺运营者都需要注意的&#xff1a; 1、规则先行&#xff0c;技术助力合规开店 地区选择&#xff1a;技术分析显…...

机器学习 --- 特征工程(一)

机器学习 — 特征工程&#xff08;一&#xff09; 文章目录 机器学习 --- 特征工程&#xff08;一&#xff09;一&#xff0c;特征工程概念二&#xff0c;特征工程API三&#xff0c;DictVectorizer 字典列表特征提取四&#xff0c;CountVectorizer 文本特征提取4.1 API4.2 英文…...

cocos creator 3.8 下的 2D 改动

在B站找到的系统性cocos视频教程,纯2D开发入门,链接如下: zzehz黑马程序员6天实战游戏开发微信小程序&#xff08;Cocos2d的升级版 CocosCreator JavaScript&#xff09;_哔哩哔哩_bilibili黑马程序员6天实战游戏开发微信小程序&#xff08;Cocos2d的升级版 CocosCreator Ja…...

2025-05-13 表征学习

表征学习 表征学习&#xff08;Representation Learning&#xff09;&#xff0c;又称特征学习&#xff0c;是机器学习领域中的一类技术&#xff0c;旨在自动的从原始数据中学习处有效的特征表示&#xff0c;使得后续的机器学习任务&#xff08;分类、聚类、预测&#xff09;能…...

【WebApi】YiFeiWebApi接口安装说明

YiFeiWebApi接口安装说明 一、 数据库配置文件修改二、 IIS环境配置(建议IIS7.0)三、 安装.NET 8.0 运行时四、 IIS配置站点五、 发布系统六、 测试接口七、测试服务器站点接口八、其他问题查看日志解决九、ApiPost项目文档 一、 数据库配置文件修改 说明&#xff1a; DSCSYSSq…...

亚马逊云科技:开启数字化转型的无限可能

在数字技术蓬勃发展的今天&#xff0c;云计算早已突破单纯技术工具的范畴&#xff0c;成为驱动企业创新、引领行业变革的核心力量。亚马逊云科技凭借前瞻性的战略布局与持续的技术深耕&#xff0c;在全球云计算领域树立起行业标杆&#xff0c;为企业和个人用户提供全方位、高品…...

爬虫请求频率应控制在多少合适?

爬虫请求频率的控制是一个非常重要的问题&#xff0c;它不仅关系到爬虫的效率&#xff0c;还涉及到对目标网站服务器的影响以及避免被封禁的风险。合理的请求频率需要根据多个因素来综合考虑&#xff0c;以下是一些具体的指导原则和建议&#xff1a; 一、目标网站的政策 查看网…...

Rimworld Mod教程 武器Weapon篇 近战章 第二讲:生物可用的近战来源

本讲分析的是在原版&#xff08;coreall dlc&#xff09;环境下&#xff0c;一个Pawn可以用的Tools的所有来源。 重点要分析的是RimWorld.Pawn_MeleeVerbs下的方法GetUpdatedAvailableVerbsList&#xff0c;我把它贴在下面&#xff1a; public List<VerbEntry> GetUpdat…...

SAP汽配解决方案:无锡哲讯科技助力企业数字化转型

汽配行业面临的挑战与机遇 随着汽车行业的快速发展&#xff0c;汽配企业面临着激烈的市场竞争、供应链复杂化、成本压力增大等多重挑战。传统的管理模式已难以满足现代汽配企业对高效生产、精准库存、快速响应的需求。在此背景下&#xff0c;数字化转型成为汽配企业的必然选…...

day19-线性表(顺序表)(链表I)

一、补充 安装软件命令&#xff1a; sudo apt-get install (软件名) 安装格式化对齐&#xff1a;sudo apt-get install clang-format内存泄漏检测工具&#xff1a; sudo apt-get install valgrind 编译后&#xff0c;使用命令 valgrind ./a.out 即可看内存是…...

里氏替换原则:Java 面向对象设计的基石法则

一、原则起源与核心定义 20 世纪 80 年代&#xff0c;计算机科学家芭芭拉・里氏&#xff08;Barbara Liskov&#xff09;在一篇论文中首次提出了里氏替换原则&#xff08;Liskov Substitution Principle&#xff0c;LSP&#xff09;&#xff0c;这成为面向对象设计的重要理论基…...

GBK与UTF-8编码问题(2)

1. 问题现象 在python代码中&#xff0c;用open函数打开文本文件并显示文本内容&#xff0c;中文显示乱码&#xff0c;代码如下。 from tkinter import * import tkinter.filedialogroot Tk() # 给窗口的可视化起名字 root.title(Open File Test)# 设定窗口的大小(长 * 宽) r…...

项目三 - 任务6:回文日期判断

本任务通过判断回文日期&#xff0c;深入学习了Java中日期和字符串处理的相关知识。通过输入年、月、日&#xff0c;生成8位日期字符串&#xff0c;利用StringBuffer的reverse()方法反转字符串&#xff0c;比较原字符串与反转后的字符串是否一致&#xff0c;从而判断是否为回文…...

从零开始掌握FreeRTOS(1)移植到STM32

目录 提前准备 源码文件移植 修改 stm32f10x_it.c 修改 FreeRTOS.h 本章思维导图。 提前准备 学习 FreeRTOS 的第一步就是有一份最工程能够跑在 STM32 上。本篇将记录本人从0搭建一个最基础的移植工程Demo。 要完成这份 Demo&#xff0c;首先我们需要预先准备以下东西&…...

esp32硬件支持AT指令

步骤1&#xff1a;下载AT固件 从乐鑫官网或Git鑫GitHub仓库&#xff08;https://github.com/espressif/esp-at&#xff09;获取对应ESP32型号的AT固件&#xff08;如ESP32-AT.bin&#xff09;。 步骤2&#xff1a;安装烧录工具 使用 esptool.py&#xff08;命令行工具&#…...

【神经网络与深度学习】局部最小值和全局最小值

引言 在机器学习和优化问题中&#xff0c;目标函数的优化通常是核心任务。优化过程可能会产生局部最小值或全局最小值&#xff0c;而如何区分它们并选择合适的优化策略&#xff0c;将直接影响模型的性能和稳定性。 在深度学习等复杂优化问题中&#xff0c;寻找全局最小值往往…...

部署安装git-2.49.0.tar.xz

实验环境 git主机&#xff1a;8.10 所需软件 git-2.49.0.tar.xz 实验开始 实验目的&#xff1a;安装升级git2.49.0 编译安装 yum remove git -y --卸载旧版git cd /usr/local/src/ wget https://www.kernel.org/pub/software/scm/git/git-2.49.0.tar.xz …...

SpringBoot的单体和分布式的任务架构

在Spring Boot生态中&#xff0c;定时任务框架的选择需根据架构类型&#xff08;单体或分布式&#xff09;和功能需求进行权衡。以下从框架特性、适用场景及Spring Boot集成方式等角度&#xff0c;详细梳理主流的定时任务框架及其分类&#xff1a; 一、单体架构下的定时任务框架…...

第四章 部件篇之按钮矩阵部件

第四章 部件篇之按钮矩阵部件 在 LVGL中&#xff0c; 按钮矩阵部件相当于一系列伪按钮的集合&#xff0c;它按一定的序列来排布这些按钮。值得注意的是&#xff0c;这些伪按钮并不是真正的按钮部件&#xff08;lv_btn&#xff09; &#xff0c; 它们只是具有按钮外观的图形&…...

二分查找算法的思路

二分查找思路总结 明确目标与单调性特点&#xff1a; 核心目标&#xff1a;寻找满足某种条件的答案&#xff08;如最小/最大值&#xff09;。单调性要求&#xff1a;需要证明你的判断函数具有单调性——即如果某个答案 T 可行&#xff0c;那么大于 T 的答案通常也是可行的&…...

Shell脚本与Xshell的使用、知识点、区别及原理

Shell脚本与Xshell的使用、知识点、区别及原理 Shell脚本 基本概念 Shell脚本是一种为Shell编写的脚本程序&#xff0c;通常用于自动化执行一系列命令。它是在Unix/Linux系统下的命令行解释器与用户交互的接口。 主要知识点 脚本结构&#xff1a;以#!/bin/bash开头&#xf…...

【PmHub后端篇】PmHub中基于Redis加Lua脚本的计数器算法限流实现

1 限流的重要性 在高并发系统中&#xff0c;保护系统稳定运行的关键技术有缓存、降级和限流。 缓存通过在内存中存储常用数据&#xff0c;减少对数据库的访问&#xff0c;提升系统响应速度&#xff0c;如浏览器缓存、CDN缓存等多种应用层面。降级则是在系统压力过大或部分服务…...

【递归、搜索与回溯】专题一:递归(二)

&#x1f4dd;前言说明&#xff1a; 本专栏主要记录本人递归&#xff0c;搜索与回溯算法的学习以及LeetCode刷题记录&#xff0c;按专题划分每题主要记录&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代码&#xff1b;&#xff08;2&#xff09;优质解法 优质代码…...

【Linux】操作系统入门:冯诺依曼体系结构

引言&#xff1a;从一次QQ聊天说起 你是否好奇&#xff0c;当你在键盘上敲下一行文字发送给好友时&#xff0c;计算机内部发生了什么&#xff1f;为什么鼠标点击后程序就能瞬间响应&#xff1f;这一切的答案&#xff0c;都藏在计算机的“心脏”——冯诺依曼体系结构中。 一、硬…...

量化感知训练与 PyTorch 的哪些事

大家好呀&#xff01;今天咱们要来聊聊一个超厉害的技术——量化感知训练&#xff08;Quantization-Aware Training&#xff0c;简称 QAT&#xff09; 在神经网络的世界里&#xff0c;我们总是想方设法地让模型变得更准确、更高效&#xff0c;毕竟谁不想自己的模型在边缘设备上…...

【Mac 从 0 到 1 保姆级配置教程 15】- Python 环境一键安装与配置,就是这么的丝滑

文章目录 前言安装 Python 环境VSCode 配置Python 环境NeoVim 配置 Python 环境&#xff08;选看&#xff09;1. Python LSP 配置2. 打开 python 语言支持 最后参考资料系列教程 Mac 从 0 到 1 保姆级配置教程目录&#xff0c;点击即可跳转对应文章&#xff1a; 【Mac 从 0 到 …...

前端学习(3)—— CSS实现热搜榜

效果展示 具体的展示效果如下&#xff0c;可以直接在浏览器显示&#xff1a; 页面分为两部分&#xff0c;一部分是 body 标签里的 html 结构&#xff0c;一部分是 style 标签里的CSS代码&#xff08;页面布局的部分数据直接在代码里显示了&#xff09; 一&#xff0c;html结…...

大数据——解决Matplotlib 字体不足问题(Linux\mac\windows)

1、将下载好的字体文件放到文件夹中 谷歌官方字体 import matplotlib print(matplotlib.matplotlib_fname())cp NotoSansSC-Regular.ttf /data/home/miniconda3/envs/python3128/lib/python3.12/site-packages/matplotlib/mpl-data/fonts/ttf/cp wqy-zenhei.ttc /data/home/m…...

嵌入式培训之数据结构学习(二)顺序表与单向链表

目录 一、顺序表 &#xff08;一&#xff09;顺序表的基本操作 1、创建顺序表 2、销毁顺序表 3、遍历顺序表 4、尾插&#xff0c;在顺序表的最后插入元素 5、判断表是否满 6、判断表是否空 7、按指定位置插入元素 8、查找元素&#xff0c;根据名字 9、根据名字修改指…...

PyInstaller 打包后 Excel 转 CSV 报错解决方案:“excel file format cannot be determined“

一、问题背景 在使用 Python 开发 Excel 转 CSV 工具时,直接运行脚本(python script.py)可以正常工作,但通过 PyInstaller 打包成可执行文件后,出现以下报错: excel file format cannot be determined, you must specify an engine manually 该问题通常发生在使用pandas…...

鸿蒙 PC 发布之后,想在技术上聊聊它的未来可能

最近鸿蒙 PC 刚发布完&#xff0c;但是发布会没公布太多技术细节&#xff0c;基本上一些细节都是通过自媒体渠道获取&#xff0c;首先可以确定的是&#xff0c;鸿蒙 PC 本身肯定是无法「直接」运行 win 原本的应用&#xff0c;但是可以支持手机上「原生鸿蒙」的应用&#xff0c…...

HarmonyOS 【诗韵悠然】AI古诗词赏析APP开发实战从零到一系列(一、开篇,项目介绍)

诗词&#xff0c;作为中国传统文化的瑰宝&#xff0c;承载着中华民族几千年的思想智慧和审美情趣。然而&#xff0c;在现代社会快节奏的生活压力下&#xff0c;诗词文化却逐渐被忽视&#xff0c;更多的人感到诗词艰涩深奥&#xff0c;难以亲近。与此同时&#xff0c;虽然市场上…...