使用 conv2d 等的 python 函数复制 TFLite 模型层
Posted
技术标签:
【中文标题】使用 conv2d 等的 python 函数复制 TFLite 模型层【英文标题】:Replicate the TFLite model layers using python function of conv2d etc 【发布时间】:2021-07-29 20:53:01 【问题描述】:如果我想使用 python tensorflow 函数复制 TFLite 模型中的层以对张量数据执行一些实验,我该怎么做? conv 可以通过 tf.nn.conv2d 完成,但是向它添加偏差然后应用 relu 并不能给出正确的输出。 所有功能都可以使用 - 模型 - 使用 tensorflow lite 转换器和优化命令将 tf resnet50 转换为 tflite
【问题讨论】:
我无法理解这个问题。如果您提供到目前为止您已经尝试过的代码以及没有奏效的代码,那将非常有帮助。 【参考方案1】:几个月前我经历过这个。尝试在常规 Tensorflow 中复制 TFLite 层的问题在于权重的顺序不同。 conv2d 示例:
TFLite - [out_channels, filter_height, filter_width, in_channels] 常规 TF - [filter_height, filter_width, in_channels, out_channels]这是一个示例 python 实现,它接受一个 TFLite 张量 W 并对其进行重新排序,以便可以在常规 TF 中使用:
def reorderWeights(W, in_channels, out_channels, kernel):
flatW = W.flatten()
newW = []
for j in range(in_channels*kernel*kernel):
for i in range(out_channels):
newW.append(flatW[i*(kernel*kernel*in_channels) + j])
newW = np.array(newW)
return newW.reshape(kernel, kernel, in_channels, out_channels)
【讨论】:
以上是关于使用 conv2d 等的 python 函数复制 TFLite 模型层的主要内容,如果未能解决你的问题,请参考以下文章
python实现卷积神经网络卷积层Conv2D实现(带stridepadding)