首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从TFLite文件中提取融合激活类型

从TFLite文件中提取融合激活类型
EN

Stack Overflow用户
提问于 2020-03-17 07:30:40
回答 1查看 108关注 0票数 1

我正在使用Python.Everything (strides和其他)解析TFLite文件(TensorFlow1.15,schema version3),但融合的激活类型总是返回0。这意味着没有激活层,但我们知道有一个Relu6。我在这段代码中做错了什么?

代码语言:javascript
复制
conv2d_opt = DepthwiseConv2DOptions.DepthwiseConv2DOptions()
conv2d_opt.Init(graph.Operators(operator_index).BuiltinOptions().Bytes,graph.Operators(operator_index).BuiltinOptions().Pos)
row_stride = conv2d_opt.StrideW()
col_stride = conv2d_opt.StrideH()
FusedActivationFunction = conv2d_opt.FusedActivationFunction()
EN

回答 1

Stack Overflow用户

发布于 2020-03-19 22:53:23

在Daniel Situnayake的帮助下找到了答案。基本上,Conv2D或DS_Conv2D内核将输出裁剪到层output_activation_max和output_activation_min values always。请看下面的内容。所以默认情况下你会得到Relu/Relu6/None,而不需要添加额外的层。来自https://github.com/tensorflow/tensorflow/blob/88bd10e84273f558a72714890ab7d04789ebbe37/tensorflow/lite/kernels/internal/reference/depthwiseconv_uint8.h#L266的depthwise_conv内核的示例

代码语言:javascript
复制
acc = DepthwiseConvRound<output_rounding>(
      acc, output_multiplier[output_channel],
      output_shift[output_channel]);
acc += output_offset;
**acc = std::max(acc, output_activation_min);
acc = std::min(acc, output_activation_max);**
output_data[Offset(output_shape, batch, out_y, out_x,
                                 output_channel)] = static_cast<int8_t>(acc);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60714496

复制
相关文章

相似问题

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