首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用函数API进行量化感知训练的迁移学习

利用函数API进行量化感知训练的迁移学习
EN

Stack Overflow用户
提问于 2022-07-11 07:31:03
回答 1查看 142关注 0票数 1

我有一个模型,我使用转移学习的MobileNetV2,我想量化它,并比较精度的差异,与一个非量化的模型和转移学习。然而,它们并不完全支持递归量化,但是根据这一点,这个方法应该量化我的模型:https://github.com/tensorflow/model-optimization/issues/377#issuecomment-820948555

我试着做的是:

代码语言:javascript
复制
import tensorflow as tf
import tensorflow_model_optimization as tfmot
pretrained_model = tf.keras.applications.MobileNetV2(include_top=False)
pretrained_model.trainable = True
    
for layer in pretrained_model.layers[:-1]:
    layer.trainable = False
    
quantize_model_pretrained = tfmot.quantization.keras.quantize_model
q_pretrained_model = quantize_model_pretrained(pretrained_model)
    
    
original_inputs = tf.keras.layers.Input(shape=(224, 224, 3))
y = tf.keras.layers.experimental.preprocessing.Rescaling(1./255)(original_inputs)
y = base_model(original_inputs)
y = tf.keras.layers.GlobalAveragePooling2D()(y)
original_outputs = tf.keras.layers.Dense(5, activation="softmax")(y)

model_1 = tf.keras.Model(original_inputs, original_outputs)
quantize_model = tfmot.quantization.keras.quantize_model
q_aware_model = quantize_model(model_1)

它仍然给了我以下错误:

代码语言:javascript
复制
ValueError: Quantizing a tf.keras Model inside another tf.keras Model is not supported.

在这种情况下,我想了解什么是执行量化感知训练的正确方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-13 08:43:09

根据您提到的问题,您应该分别量化每个模型,然后将它们组合在一起。就像这样:

代码语言:javascript
复制
import tensorflow as tf
import tensorflow_model_optimization as tfmot

pretrained_model = tf.keras.applications.MobileNetV2(input_shape=(224, 224, 3), include_top=False)
pretrained_model.trainable = True
    
for layer in pretrained_model.layers[:-1]:
    layer.trainable = False
    
q_pretrained_model = tfmot.quantization.keras.quantize_model(pretrained_model)
q_base_model = tfmot.quantization.keras.quantize_model(tf.keras.Sequential([tf.keras.layers.GlobalAveragePooling2D(input_shape=(7, 7, 1280)), tf.keras.layers.Dense(5, activation="softmax")]))
   
original_inputs = tf.keras.layers.Input(shape=(224, 224, 3))
y = tf.keras.layers.experimental.preprocessing.Rescaling(1./255)(original_inputs)
y = q_pretrained_model(original_inputs)
original_outputs = q_base_model(y)

model = tf.keras.Model(original_inputs, original_outputs)

虽然这是索要,但它似乎已经不受支持了。

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

https://stackoverflow.com/questions/72935089

复制
相关文章

相似问题

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