问题描述
我正在尝试在 resnet50 上执行模型修剪。但是,我对它们的测试准确度完全相同。我做错了什么?
import tensorflow_model_optimization as tfmot
import numpy as np
prune_low_magnitude = tfmot.sparsity.keras.prune_low_magnitude
# Compute end step to finish pruning after 2 epochs.
batch_size = 128
epochs = 50
validation_split = 0.1 # 10% of training set will be used for validation set.
num_images = x_train.shape[0] * (1 - validation_split)
end_step = np.ceil(num_images / batch_size).astype(np.int32) * epochs
# Define model for pruning.
pruning_params = {
'pruning_schedule': tfmot.sparsity.keras.polynomialDecay(initial_sparsity=0.50,final_sparsity=0.80,begin_step=0,end_step=end_step)
}
model_for_pruning = prune_low_magnitude(model,**pruning_params)
# `prune_low_magnitude` requires a recompile.
model_for_pruning.compile(optimizer='adam',loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),metrics=['accuracy'])
import tempfile
import os
logdir = tempfile.mkdtemp()
callbacks = [
tfmot.sparsity.keras.UpdatePruningStep(),tfmot.sparsity.keras.PruningSummaries(log_dir=logdir),]
model_for_pruning.fit(x_train,y_train,batch_size=batch_size,epochs=5,validation_split=validation_split,verbose = 1,callbacks=callbacks)
_,baseline_model_accuracy = model.evaluate(x_test,y_test,verbose=0)
_,model_for_pruning_accuracy = model_for_pruning.evaluate(x_test,verbose=0)
print('Baseline test accuracy:',baseline_model_accuracy)
print('Pruned test accuracy:',model_for_pruning_accuracy)
输出: 基线测试精度:0.9070000052452087 剪枝测试精度:0.9070000052452087
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)