5 回答
TA贡献1811条经验 获得超5个赞
我相信您正在关注Pruning in Keras Example
并跳入Fine-tune pre-trained model with pruning
部分而没有设置可修剪层。您必须重新实例化模型并设置您希望设置为的图层prunable
。请按照本指南了解有关如何设置可修剪层的更多信息。
https://www.tensorflow.org/model_optimization/guide/pruning/comprehensive_guide.md
TA贡献1835条经验 获得超7个赞
如下保存模型并重新加载对我有用。
_, keras_file = tempfile.mkstemp('.h5')
tf.keras.models.save_model(model, keras_file, include_optimizer=False)
print('Saved baseline model to:', keras_file)
TA贡献1789条经验 获得超8个赞
今天有同样的问题,它的以下错误。
如果您不想修剪该层或不关心它,您可以使用此代码仅修剪模型中的可修剪层:
from tensorflow_model_optimization.python.core.sparsity.keras import prunable_layer
from tensorflow_model_optimization.python.core.sparsity.keras import prune_registry
def apply_pruning_to_prunable_layers(layer):
if isinstance(layer, prunable_layer.PrunableLayer) or hasattr(layer, 'get_prunable_weights') or prune_registry.PruneRegistry.supports(layer):
return tfmot.sparsity.keras.prune_low_magnitude(layer)
print("Not Prunable: ", layer)
return layer
model_for_pruning = tf.keras.models.clone_model(
base_model,
clone_function=apply_pruning_to_pruneable_layers
)
TA贡献1798条经验 获得超7个赞
我遇到了同样的问题:
张量流版本:
2.2.0
只是更新tensorflow的版本就2.3.0
解决了这个问题,我认为Tensorflow在2.3.0中增加了对这个特性的支持。
TA贡献1799条经验 获得超9个赞
我发现的一件事是我添加到模型中的实验性预处理引发了这个错误。我在模型的开头使用它来帮助添加更多训练样本,但 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))
...
添加回答
举报