[MobileFaceNet] MobileFaceNet tfLite converter do not support switch 问题定位。

在将使用Tensorflow Slim API构建的MobileFaceNet模型转换为tflite时遇到问题,因为tflite不支持switch操作。分析发现,switch操作在BatchNorm的cond结构中,特别是在slim.batch_norm的使用中。解决方案可能涉及替换slim.batch_norm或找到不使用switch的BN实现。
摘要由CSDN通过智能技术生成

问题描述

通过 Tensorflow Slim API 实现的 MobileFaceNet 模型,在转换为 tflite 过程中,出现不支持 switch 的问题。

分析

通过 tensorboard 搜索 graph 中 control_flow_ops.switch ,都出现在 BatchNorm/cond/switch 节点中。显然,BN 使用了 cond 封装下的 Switch,所以想要知道谁调用了Switch,关键就是找到 BatchNormCondSwitch 这三个 namescope,因此在读源码过程中,抽丝剥茧,缕了一下 BatchNorm 使用 switch 的内容。
在这里插入图片描述
问题从 slim.batch_norm 开始:

BatchNorm

在slim.batch_norm 方法中 variable_scope 定义了 BatchNorm,第一个scope找到,在with上下文语法中,继续查找Cond

264|  with variable_scope.variable_scope(
265|      scope, 'BatchNorm', [inputs], reuse=reuse) as sc:

结合Graph 中的内容,发现 switch 包含在Cond 之内,而 Switch之后,就紧跟着 FusedBatchNorm 方法。

在这里插入图片描述

cond

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值