我正在使用Python.Everything (strides和其他)解析TFLite文件(TensorFlow1.15,schema version3),但融合的激活类型总是返回0。这意味着没有激活层,但我们知道有一个Relu6。我在这段代码中做错了什么?
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()发布于 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内核的示例
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);https://stackoverflow.com/questions/60714496
复制相似问题