首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在X-Cube-AI / STM32CubeMX.AI中得到了完全相同的压缩级别“无”和"4x“的权重?

为什么我在X-Cube-AI / STM32CubeMX.AI中得到了完全相同的压缩级别“无”和"4x“的权重?
EN

Stack Overflow用户
提问于 2021-01-15 02:29:31
回答 1查看 60关注 0票数 0

我有一个以HDF5 (*.h5)格式保存的Keras模型。我正在使用stm32ai命令行工具生成我的文件nn.c/.h和nndata.c/.h。下面是一个命令示例:

代码语言:javascript
复制
~/STM32Cube/Repository/Packs/STMicroelectronics/X-CUBE-AI/5.2.0/Utilities/linux/stm32ai generate --model nn.h5 --verbosity 2 --type keras --name nn --compression 4

nn_data.c文件包含我的神经网络的权重。但是,当我将压缩设置为1,这意味着没有压缩时,我得到:

代码语言:javascript
复制
#include "nn_data.h"

ai_handle ai_nn_data_weights_get(void)
{

  AI_ALIGNED(4)
  static const ai_u8 s_nn_weights[ 3196 ] = {
    0x56, 0xff, 0xa5, 0x3d, 0xb6, 0xa2, 0xf3, 0x3d, 0x18, 0x2c,
    0x4e, 0xbc, 0x69, 0x64, 0xa4, 0x3d, 0x09, 0xf4, 0x27, 0x3e,
...

当我将压缩设置为4 (4x)时,我得到了完全相同的权重!

只有在压缩为8的情况下,我才会得到不同的权重:

代码语言:javascript
复制
#include "nn_data.h"

ai_handle ai_nn_data_weights_get(void)
{

  AI_ALIGNED(4)
  static const ai_u8 s_nn_weights[ 728 ] = {
    0x0d, 0x5d, 0xa0, 0xbe, 0x20, 0xf7, 0x86, 0xbe, 0x83, 0xe4,
    0x66, 0xbe, 0xca, 0x73, 0x36, 0xbe, 0x8d, 0xa9, 0xf7, 0xbd,
...

我们可以清楚地看到,8倍压缩的权重缓冲区要小得多。

有人知道为什么压缩级别为None和4的权重没有不同吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-15 18:48:30

与我的预期相反,压缩似乎并不总是完成,但只有在某些情况下,这些情况并不是完全为公众定义的:See here此外,我查看了模型转换报告nn_generate_report.txt,它没有显示压缩级别为4的任何神经网络层的压缩标记"(c)“,但对于压缩级别8,所有层都标有压缩标记。所以,我假设一切都很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65724879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档