如何修剪keras ResNet50预训练权重(.h5文件)?我只有.h5权重文件。(我已成功加载keras重量)

2024-06-01 02:40:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我是初学者

我得到了keras resnet50预训练权重(.h5文件),使用官方tensorflow api为其生成了模型架构。现在,当我尝试修剪权重时,权重文件的大小保持不变,权重文件中的参数总数随着不可训练参数增加到几乎可训练参数而增加一倍

成功加载keras砝码后,我尝试修剪如下:-

    epochs = 12

    batch_size = 8

    num_train_samples = 5000

    end_step = np.ceil(1.0 * num_train_samples/batch_size).astype(np.int32) * epochs
    print('End step: ' + str(end_step))


    prune_low_magnitude = tfmot.sparsity.keras.prune_low_magnitude

    pruning_params = {
          'pruning_schedule': tfmot.sparsity.keras.PolynomialDecay(initial_sparsity=0.10,
                                                                   final_sparsity=0.90,
                                                                   begin_step=0,
                                                                   end_step=end_step,
                                                                   frequency = 10)
    }

    model_for_pruning = tfmot.sparsity.keras.prune_low_magnitude(model, **pruning_params)

    # `prune_low_magnitude` requires a recompile.

    model_for_pruning.compile(optimizer='adam',
                  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
                  metrics=['accuracy'])

    model_for_pruning.summary()

    _, pruned_keras_file = tempfile.mkstemp('.h5')

    tf.keras.models.save_model(model_for_pruning, pruned_keras_file, include_optimizer=False)

    print('Saved pruned Keras model to:', pruned_keras_file)

    def get_gzipped_model_size(file):

      # Returns size of gzipped model, in bytes.

      import os

      import zipfile

      _, zipped_file = tempfile.mkstemp('.zip')

      with zipfile.ZipFile(zipped_file, 'w', compression=zipfile.ZIP_DEFLATED) as f:

        f.write(file)


      return os.path.getsize(zipped_file)


    print("Size of gzipped baseline Keras model: %.2f bytes" % (get_gzipped_model_size(keras_file)))

    print("Size of gzipped pruned Keras model: %.2f bytes" % (get_gzipped_model_size(pruned_keras_file)))

现在keras_文件的大小比删减的keras_文件小几千字节。 怎么办


Tags: 文件sizemodelstepkerasfilelowend