Ошибка Efficientnet B1 — Conv2D с ошибкой шага 2×2 на PruneForLatencyOnXNNPack

#tensorflow #tf.keras

Вопрос:

У меня возникла следующая ошибка при попытке отключить сеть Efficientnet B1:

 Could not find `Conv2D 3x3` layer with stride 2x2, `input filters == 3` and `VALID` padding and preceding `ZeroPadding2D` with `padding == 1` in all input branches of the model
 

Я вызываю tfmot.разреженность.keras.prune_low_magnitude со следующими аргументами:

     pruning_params = {
        'pruning_schedule' : tfmot.sparsity.keras.PolynomialDecay(
                                              initial_sparsity=0.25,
                                              final_sparsity=0.75,
                                              begin_step=0,
                                              end_step=end_step),
        'pruning_policy' : tfmot.sparsity.keras.PruneForLatencyOnXNNPack()
        }
 

Как описано здесь: https://www.tensorflow.org/model_optimization/guide/pruning/pruning_for_on_device_inference

В моей эффективной сети нет слоя ZeroPadding2D, поэтому я не понимаю, почему tfmot.sparsity.keras.prune_low_magnitude выдает эту ошибку.

У меня есть несколько conv2d с шагом 2×2:

 conv2d layer
name:  stem_conv
filters:  32
kernel_size:  (3, 3)
strides:  (2, 2)
padding:  same

conv2d layer
name:  block2a_dwconv
filters:  None
kernel_size:  (3, 3)
strides:  (2, 2)
padding:  same

conv2d layer
name:  block3a_dwconv
filters:  None
kernel_size:  (5, 5)
strides:  (2, 2)
padding:  same

conv2d layer
name:  block4a_dwconv
filters:  None
kernel_size:  (3, 3)
strides:  (2, 2)
padding:  same

conv2d layer
name:  block6a_dwconv
filters:  None
kernel_size:  (5, 5)
strides:  (2, 2)
padding:  same
 

Но нигде нет связанного ZeroPadding2D слоя, тем более перед любым из них.
Изменение типа заполнения на «допустимый» не решает проблему.

Я действительно не знаю, как это решить, и любая помощь приветствуется. Заранее спасибо.

Комментарии:

1. К вашему сведению, есть какая-то проблема, и она еще не устранена. #656