A error when using tfmot.quantization.keras.quantize_model to quantize keras model
@lenscloth ya está trabajando en esto.
Desde el 11/1/2023.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Describe the bug
When quantizing the keras model after pruning, an error is reported as follows.
RuntimeError: Layer conv1d:<class 'tensorflow.python.keras.layers.convolutional.Conv1D'> is not supported. You can quantize this layer by passing a tfmot.quantization.keras.QuantizeConfig instance to the quantize_annotate_layer API.
Dose fmot.quantization.keras.quantize_model not support 1DCNN?
System information
TensorFlow version (installed from source or binary): tf=2.4.1
TensorFlow Model Optimization version (installed from source or binary): tensorflow_model_optimization==0.5.0
Python version: python==3.6.9
Code to reproduce the issue
LOGGER.info(f"starting")
prune_low_magnitude = tfmot.sparsity.keras.prune_low_magnitude
pruning_params = {'pruning_schedule':
tfmot.sparsity.keras.ConstantSparsity(target_sparsity=0.30,begin_step=0,end_step=-1)}
LOGGER.info(f"pruning")
self._model = prune_low_magnitude(self._model, **pruning_params)
LOGGER.info(f"compiling")
self._model.compile(loss='categorical_crossentropy', optimizer='Adam', metrics=["accuracy"])
LOGGER.info(f"fitting")
history=self._model.fit(x=data, epochs=8, verbose=1, shuffle=True, callbacks=callbacks)
LOGGER.info(f"striping")
self._model = tfmot.sparsity.keras.strip_pruning(self._model)
LOGGER.info(f"quantizing")
quantize_model = tfmot.quantization.keras.quantize_model
self._model = quantize_model(self._model)
LOGGER.info(f"compiling")
self._model.compile(loss='categorical_crossentropy', optimizer='Adam', metrics=["accuracy"])
LOGGER.info(f"fitting")
history = self._model.fit(x=data, epochs=2, verbose=1, shuffle=True, callbacks=callbacks)
tf. keras model
import tensorflow as tf
inputs = tf.keras.Input(shape=(58,))
x=tf.keras.layers.Reshape((58,1))(inputs)
x = tf.keras.layers.Conv1D(8, 1,strides=1,padding='same')(x)
x=tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation('relu')(x)
x1 = tf.keras.layers.Conv1D(16, 1,strides=1,padding='same',dilation_rate=3)(x)
x2 = tf.keras.layers.Conv1D(16, 3,strides=1,padding='same',dilation_rate=3)(x)
x1=tf.keras.layers.BatchNormalization()(x1)
x2=tf.keras.layers.BatchNormalization()(x2)
x1 = tf.keras.layers.Activation('relu')(x1)
x2 = tf.keras.layers.Activation('relu')(x2)
x=tf.keras.layers.Concatenate(-1)([x1,x2])
x = tf.keras.layers.Conv1D(16, 1,strides=1,padding='same')(x)
x=tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation('relu')(x)
x1 = tf.keras.layers.Conv1D(32, 1,strides=1,padding='same',dilation_rate=3)(x)
x2 = tf.keras.layers.Conv1D(32, 3,strides=1,padding='same',dilation_rate=3)(x)
x1=tf.keras.layers.BatchNormalization()(x1)
x2=tf.keras.layers.BatchNormalization()(x2)
x1 = tf.keras.layers.Activation('relu')(x1)
x2 = tf.keras.layers.Activation('relu')(x2)
x=tf.keras.layers.Concatenate(-1)([x1,x2])
x = tf.keras.layers.Conv1D(32, 1,strides=1,padding='same')(x)
x=tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation('relu')(x)
x1 = tf.keras.layers.Conv1D(64, 1,strides=1,padding='same',dilation_rate=3)(x)
x2 = tf.keras.layers.Conv1D(64, 3,strides=1,padding='same',dilation_rate=3)(x)
x1=tf.keras.layers.BatchNormalization()(x1)
x2=tf.keras.layers.BatchNormalization()(x2)
x1 = tf.keras.layers.Activation('relu')(x1)
x2 = tf.keras.layers.Activation('relu')(x2)
x=tf.keras.layers.Concatenate(-1)([x1,x2])
x=tf.keras.layers.Dropout(0.5)(x)
x = tf.keras.layers.Conv1D(128, 4,strides=1,padding='same')(x)
x=tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation('relu')(x)
x_shortcut=x
x = tf.keras.layers.Conv1D(128, 1,strides=1,padding='same')(x)
x=tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation('relu')(x)
x=tf.keras.layers.SeparableConv1D(128,2,strides=1,padding='same')(x)
x=tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation('relu')(x)
se_x = x
se_x=tf.keras.layers.GlobalAveragePooling1D()(se_x)
se_x =tf.keras.layers.Dense(128)(se_x)
se_x= tf.keras.layers.Activation('relu')(se_x)
se_x= tf.keras.layers.Multiply()([x,se_x])
x = tf.keras.layers.add([x,se_x])
x = tf.keras.layers.Activation('relu')(x)
x = tf.keras.layers.add([x,x_shortcut])
x = tf.keras.layers.Activation('relu')(x)
x=tf.keras.layers.GlobalAveragePooling1D()(x)
x=tf.keras.layers.Dropout(0.5)(x)
x =tf.keras.layers.Dense(7)(x)
pred = tf.keras.layers.Activation('softmax')(x)
model = tf.keras.Model(inputs=inputs, outputs=pred)
model.summary()
print(model.to_json())
- Lenguaje dominante
- Python
- Estrellas
- 1.6k
- Forks
- 349
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de tensorflow/model-optimization
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
tensorflow/model-optimization#1301 · 1 comentario ·
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
tensorflow/model-optimization#1272 ·
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 50/100
tensorflow/model-optimization#1270 · 2 comentarios ·
-
build from source fails on macosAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 48/100
tensorflow/model-optimization#1241 ·
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
tensorflow/model-optimization#1182 · 1 comentario ·
Todos los issues de tensorflow/model-optimization
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
qgis/QGIS-Plugins-Website#459 ·
-
bug severity:medium
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
bot-found bug priority: P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
madenvel/KalinkaPlayer#179 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
ls1intum/edutelligence#1098 ·
Los mantenedores suelen responder en 1 día