TensorBoard的使用以及遇到的坑

本文详细介绍TensorBoard的基本使用方法,包括如何生成事件文件、配置环境变量及解决常见的问题。此外,还分享了一些实战经验,帮助读者避免踩坑。

关于TensorBoard的介绍请参考这篇文章,https://github.com/tensorflow/tensorflow/blob/r0.11/tensorflow/tensorboard/README.md
里面关于 各个仪表板的用法和说明讲的很详细,就不多说了,下面主要说下遇到的问题,望后来者借鉴。
先附上代码,生成事件文件

import tensorflow as tf

#定义一个简单的计算图,实现向量加法的操作
input1=tf.constant([1.0,2.0,3.0],name="input1")
input2=tf.Variable(tf.random_uniform([3]),name="input")
output=tf.add_n([input1,input2],name="add")

#生成一个写日志的writer,并将当前的TensorFlow计算图写入日志。生成的文件在当前文件夹下
writer=tf.summary.FileWriter(".\log",tf.get_default_graph())
writer.close()
init = tf.global_variables_initializer()

tf.Session().run(init)

如果顺利的话,应该会生成1个事件文件,如图
这里写图片描述

接下来就是使用TensorBoard进行可视化分析了
在命令行窗口输入 tensorboard –logdir=log回车,注意不是在python的编辑环境里如spyder中,如果你这么做,你会得到一个错误SyntaxError: can’t assign to operator,
回到命令行窗口,执行tensorboard –logdir=log
这里写图片描述
在浏览器中复制上面的网址http://DESKTOP-1Q4IB10:6006就可以看到如下界面
这里写图片描述
没有任何数据,是不是很沮丧lol,因为我们的程序里面确实没有生成标量数据的事件文件,不过我们有图的事件数据a,点击图后就有结果了
这里写图片描述

成功的后面都有很多次失败的经历,下面具体说说我碰见的神坑:在上面的图里面,一直都没有数据!!!。像下面
这里写图片描述
这篇文章里提到win10路径的问题,我试了下还是不行,不过把log文件夹移动到别的地方再cd的话可以成功,心里想不能每次都移动吧,继续找解决办法,这篇文章提出要先激活Tensorflow环境再使用,按照里面的方法试了下,结果如下
这里写图片描述
可以看到网页的界面变了,难道是Google 的彩蛋/发呆,但是还是不能正常显示数据,只能继续找解决办法了,在这篇文章中,提出要将TensorBoard的程序路径添加到系统的环境变量中,我没有尝试,如果你看完本篇文章之后还有问题,不如去试下这个。那么话说回来,到底是哪块的问题?就在一筹莫展的时候,看着控制台上的命令,突然发现我的文件夹名“TensoBoard练习 “里面有中文,在想会不会是这个问题,改成TensorBoardTest后,运行结果如图
这里写图片描述
命令行中出现了警告,怎么回事?切换到正常环境下看看会不会再次出现
这里写图片描述
还是出现,仔细看看英语,说是发现了不止一个事件文件,回到文件夹,确实存在两个事件文件。
这里写图片描述
但是这两个区别在哪里?加载时又会加载哪个?一番研究下发现,每运行一次python程序,就会生成一个新的事件文件,但是这个事件文件是在前一个版本的基础上再增添的一些新的内容生成的,运行看看具体内容。
这里写图片描述
果然只是复制了一份数据。并且在存在多个事件文件的情况下,TensorBoard会读取最近生成的一次事件文件。
总结:使用TensorBoard没有特别的难,无非就是路径问题加中文文件名,注意这两点就没事了。

注意:一开始的那张图片里面直接使用tensorboard –logdir=log就可以,是因为我的文件夹就在桌面。后面演示时放到E盘底下。另外像

#tensorboard --logdir=C:\Users\dbsdz\Desktop\TensorBoardTest\log 可以
#cd E://TensorBoardTest      tensorboard --logdir=log  可以
#e: cd TensorBoardTest     tensorboard --logdir=log  可以

这类的命令也都可以正确显示数据。

<think>嗯,用户现在问的是初学量化算法有没有推荐的模型用来使用。首先,我需要理解用户的需求。他们可能刚开始接触量化,想要通过实践来学习,但不知道从哪里入手。用户可能对量化有一些基本概念,但缺乏实际操作的经验,所以需要推荐一些适合入门的模型。 接下来,我得考虑什么样的模型适合初学者。首先,模型应该是广泛使用的,这样有更多的教程和资源可以参考。其次,模型的结构不能太复杂,避免新手在实现量化时遇到太多困难。另外,最好这些模型在量化后效果明显,比如体积减少很多但准确率下降不多,这样能增强初学者的信心。 常见的模型里,像MobileNet、ResNet这样的图像分类模型应该是不错的选择。因为它们结构相对简单,而且有很多预训练好的模型可以直接用,方便进行量化实验。另外,像LeNet虽然比较老,但结构简单,适合用来理解量化的基本流程。 自然语言处理方面,BERT之类的模型虽然强大,但对初学者来说可能复杂了点。不过像DistilBERT这种经过蒸馏的轻量模型,可能更适合,因为本身已经压缩过,再结合量化,效果会更明显。不过需要确认用户是否有NLP的背景,如果只是刚开始,可能还是先从CV模型入手比较好。 接下来,我需要整理这些推荐的模型,并给出每个模型的特点、适合的原因以及学习的资源。比如MobileNet V2设计用于移动端,本身已经优化过,量化后的效果显著,TensorFlow Lite也有相关的支持,这对初学者来说非常友好。ResNet-18结构经典,适合学习如何对残差结构进行量化。 还要考虑框架的支持,比如TensorFlow、PyTorch这些主流框架是否提供现成的量化工具。例如,TensorFlow Lite的Post-training quantization和Quantization-aware training都是很好的起点,PyTorch的torch.quantization模块也支持这些功能。 另外,应该提醒用户从简单的开始,比如先做训练后量化,不需要重新训练模型,这样更容易上手。之后再逐步尝试量化感知训练,这时候需要调整训练过程,加入量化模拟,虽然复杂一些,但效果更好。 可能用户会遇到的问题,比如量化后准确率下降太多,这时候需要指导他们调整量化参数,或者尝试不同的量化方法。同时,推荐一些实践资源,比如官方教程、GitHub项目,帮助他们快速开始。 最后,总结推荐的模型和学习路径,强调从简单到复杂,结合实践和理论,逐步深入。同时提醒结合蒸馏等其他技术,但作为初学者,先掌握量化基础更重要。</think>以下是针对初学者的量化算法入门推荐模型及学习路径: --- ### 一、**推荐模型选择原则** 1. **结构简单**:便于理解量化对模型各部分的影响 2. **开源支持完善**:主流框架(TensorFlow/PyTorch)提供现成量化工具链 3. **效果显著**:量化后压缩率高且精度下降可控 --- ### 二、**计算机视觉(CV)方向** #### 1. **MobileNet系列** - **推荐版本**:MobileNet V2 - **特点**: - 专为移动端设计的轻量模型($3.5$MB原始大小) - 使用深度可分离卷积,量化后压缩率可达$75\%$ - **学习资源**: - TensorFlow Lite官方教程:[Post-training quantization for MobileNet](https://www.tensorflow.org/lite/performance/post_training_quantization) #### 2. **ResNet-18** - **推荐理由**: - 经典残差网络结构,适合学习如何量化残差连接 - 原始模型约$45$MB,量化后可压缩至$11$MB - **实验建议**: - 对比FP32与INT8量化后的特征图差异 #### 3. **LeNet-5**(教学级) - **优势**: - 极简结构(仅$60$K参数),适合手写数字识别(MNIST) - 量化代码实现可在$20$行内完成 - **示例代码**: ```python # PyTorch量化示例 model.qconfig = torch.quantization.get_default_qconfig('fbgemm') torch.quantization.prepare(model, inplace=True) torch.quantization.convert(model, inplace=True) ``` --- ### 三、**自然语言处理(NLP)方向** #### 1. **DistilBERT** - **特点**: - BERT的蒸馏版本,参数量减少$40\%$ - 量化后可在保持$97\%$精度的同时压缩至$50$MB - **工具链**:Hugging Face Transformers + ONNX量化 #### 2. **LSTM文本分类模型** - **推荐理由**: - 基础序列模型(参数量约$2$M) - 学习量化对时间步计算的影响 - **实验重点**: - 观察量化对隐藏状态$h_t$数值范围的影响 --- ### 四、**学习路线建议** 1. **第一阶段:黑盒量化** - 使用TensorFlow Lite/PyTorch官方工具直接量化预训练模型 - 目标:掌握量化-转换-部署全流程 - **推荐实验**:量化MobileNet V2并部署到手机端 2. **第二阶段:白盒调参** - 调整量化粒度(逐层/逐通道) - 分析敏感层(如Attention机制中的softmax) - **推荐实验**:对比ResNet-18不同层的量化误差 3. **第三阶段:量化感知训练** - 在CIFAR-10等小数据集上从头训练量化模型 - **推荐框架**:PyTorch的`torch.ao.quantization`模块 --- ### 五、**避指南** 1. **典型问题** - 量化后准确率暴跌$>10\%$ → 检查权重分布是否过于分散 - 部署时出现数值溢出 → 校准`scale`和`zero_point`参数 2. **调试工具推荐** - Netron(模型结构可视化) - TensorBoard的直方图功能(分析激活值分布) --- ### 六、**扩展学习资源** | 资源类型 | 推荐内容 | |---------|----------| | 论文 | [*Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference*](https://arxiv.org/abs/1712.05877) | | 代码库 | [TensorFlow Model Optimization Toolkit](https://www.tensorflow.org/model_optimization) | | 实践项目 | [量化版YOLOv5目标检测](https://github.com/ultralytics/yolov5/issues/2512) | > **提示**:建议先使用**Post-training量化**快速验证效果,再逐步深入量化感知训练和混合精度量化。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值