首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们能修剪一个预先训练过的模型吗?示例: MobileNetV2

我们能修剪一个预先训练过的模型吗?示例: MobileNetV2
EN

Stack Overflow用户
提问于 2020-05-25 12:31:55
回答 5查看 1.8K关注 0票数 3

我试图修剪一个预先训练过的模型:MobileNetV2和我得到了这个错误。试着在网上搜索却听不懂。我在Google Colab上运行。

,这些是我的进口品.

代码语言:javascript
复制
import tensorflow as tf
import tensorflow_model_optimization as tfmot
import tensorflow_datasets as tfds
from tensorflow import keras

import os
import numpy as np
import matplotlib.pyplot as plt
import tempfile
import zipfile

这是我的代码.

代码语言:javascript
复制
model_1 = keras.Sequential([
    basemodel,
    keras.layers.GlobalAveragePooling2D(),
    keras.layers.Dense(1)                            
])

model_1.compile(optimizer='adam',
                loss=keras.losses.BinaryCrossentropy(from_logits=True),
                metrics=['accuracy'])

model_1.fit(train_batches,
            epochs=5,
            validation_data=valid_batches)

prune_low_magnitude = tfmot.sparsity.keras.prune_low_magnitude

pruning_params = {
    'pruning_schedule': tfmot.sparsity.keras.PolynomialDecay(initial_sparsity=0.50,
                                                             final_sparsity=0.80,
                                                             begin_step=0,
                                                             end_step=end_step)
}


model_2 = prune_low_magnitude(model_1, **pruning_params)

model_2.compile(optmizer='adam',
                loss=keres.losses.BinaryCrossentropy(from_logits=True),
                metrics=['accuracy'])

,这是我遇到的错误。

代码语言:javascript
复制
---> 12 model_2 = prune_low_magnitude(model, **pruning_params)

ValueError: Please initialize `Prune` with a supported layer. Layers should either be a `PrunableLayer` instance, or should be supported by the PruneRegistry. You passed: <class 'tensorflow.python.keras.engine.training.Model'>
EN

回答 5

Stack Overflow用户

发布于 2020-05-25 20:13:18

我相信您正在跟踪Pruning in Keras Example并跳到Fine-tune pre-trained model with pruning部分,而没有设置可调整的层。您必须恢复模型并将希望设置为prunable的层设置为。有关如何设置可调整层的进一步信息,请参阅本指南。

guide.md

票数 1
EN

Stack Overflow用户

发布于 2020-10-23 08:51:24

我也面临着同样的问题:

  • tensorflow版本:2.2.0

只是将tensorflow的版本更新为2.3.0解决了这个问题,我认为Tensorflow在2.3.0中增加了对这个特性的支持。

票数 0
EN

Stack Overflow用户

发布于 2021-04-02 15:27:52

我发现的一件事是,我添加到我的模型中的实验预处理是抛出这个错误。在我的模型开始时,我使用了这个来帮助添加更多的训练样本,但是keras剪枝代码不喜欢这样的子类模型。类似地,代码不像我对图像的对中那样喜欢实验的预处理。将预处理从模型中删除,为我解决了这个问题。

代码语言:javascript
复制
def classificationModel(trainImgs, testImgs):
  L2_lambda = 0.01
  data_augmentation = tf.keras.Sequential(
  [ layers.experimental.preprocessing.RandomFlip("horizontal", input_shape=IM_DIMS),
    layers.experimental.preprocessing.RandomRotation(0.1),
    layers.experimental.preprocessing.RandomZoom(0.1),])

  model = tf.keras.Sequential()
  model.add(data_augmentation)
  model.add(layers.experimental.preprocessing.Rescaling(1./255, input_shape=IM_DIMS))
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62002462

复制
相关文章

相似问题

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