我试图修剪一个预先训练过的模型:MobileNetV2和我得到了这个错误。试着在网上搜索却听不懂。我在Google Colab上运行。
,这些是我的进口品.
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这是我的代码.
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']),这是我遇到的错误。
---> 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'>发布于 2020-05-25 20:13:18
我相信您正在跟踪Pruning in Keras Example并跳到Fine-tune pre-trained model with pruning部分,而没有设置可调整的层。您必须恢复模型并将希望设置为prunable的层设置为。有关如何设置可调整层的进一步信息,请参阅本指南。
发布于 2020-10-23 08:51:24
我也面临着同样的问题:
2.2.0只是将tensorflow的版本更新为2.3.0解决了这个问题,我认为Tensorflow在2.3.0中增加了对这个特性的支持。
发布于 2021-04-02 15:27:52
我发现的一件事是,我添加到我的模型中的实验预处理是抛出这个错误。在我的模型开始时,我使用了这个来帮助添加更多的训练样本,但是keras剪枝代码不喜欢这样的子类模型。类似地,代码不像我对图像的对中那样喜欢实验的预处理。将预处理从模型中删除,为我解决了这个问题。
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))
...https://stackoverflow.com/questions/62002462
复制相似问题