Код: Выделить всё
import logging
tf.get_logger().setLevel(logging.DEBUG)
logging.basicConfig(level=logging.DEBUG, filename='testLog1.log', filemode='w',
format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
inp = Input(shape=(batching_size,1))
c1 = Conv1D(2,32,2,'same',activation='relu')(inp)
c2 = Conv1D(4,32,2,'same',activation='relu')(c1)
c3 = Conv1D(8,32,2,'same',activation='relu')(c2)
c4 = Conv1D(16,32,2,'same',activation='relu')(c3)
c5 = Conv1D(32,32,2,'same',activation='relu')(c4)
dc1 = Conv1DTranspose(32,32,1,padding='same')(c5)
conc1 = Concatenate()([c5,dc1])
dc2 = Conv1DTranspose(16,32,2,padding='same')(conc1)
conc2 = Concatenate()([c4,dc2])
dc3 = Conv1DTranspose(8,32,2,padding='same')(conc2)
conc3 = Concatenate()([c3,dc3])
dc4 = Conv1DTranspose(4,32,2,padding='same')(conc3)
conc4 = Concatenate()([c2,dc4])
dc5 = Conv1DTranspose(2,32,2,padding='same')(conc4)
conc5 = Concatenate()([c1,dc5])
dc6 = Conv1DTranspose(1,32,2,padding='same')(conc5)
conc6 = Concatenate()([inp,dc6])
dc7 = Conv1DTranspose(1,32,1,padding='same',activation='linear')(conc6)
model = tf.keras.models.Model(inp,dc7)
model.compile(optimizer=tf.keras.optimizers.Adam(0.002),loss=tf.keras.losses.MeanAbsoluteError())
history = model.fit(train_dataset, epochs=1)
tflite_model = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model.optimizations = [tf.lite.Optimize.DEFAULT]
# Full Inter post-training quantization.
tflite_model.representative_dataset = representative_data_gen
tflite_model.target_spec.supported_ops = [
tf.lite.OpsSet.TFLITE_BUILTINS,]
tf.lite.OpsSet.SELECT_TF_OPS, # enable TensorFlow ops.
tf.lite.OpsSet.TFLITE_BUILTINS_INT8] # use both select ops and built - ins
tflite_model.inference_input_type = tf.int8
tflite_model.inference_output_type = tf.int8
tflite_model_quant_INT8 = tflite_model.convert()
По какой-то причине мне пришлось заменить оператор «Conv1DTranspose» на UpSampling1D и Conv1D .
И я делаю это с помощью Colab T4 (системная оперативная память 12,7 ГБ, графический процессор 15,0 ГБ).
После запуска происходит сбой, появляется сообщение о нехватке всей памяти и перезапускает сеансы Colab.
Поскольку происходит сбой из-за памяти, я решил уменьшить количество операций замены.
Даже я заменяю только последний «dc7», как показано ниже, сбой остается.
Код: Выделить всё
def conv1d_transpose(x, filters, kernel_size, strides=1, padding='same', activation=None):
x = UpSampling1D(size=strides)(x)
x = Conv1D(filters=filters, kernel_size=kernel_size, padding=padding, activation=activation)(x)
return x
.....
dc7 = conv1d_transpose(conc6, 1, 32, 1, padding='same', activation='linear') # Replacement
....
Модель Keras с заменой отлично работает с вывод,
просто если я попытаюсь выполнить «полное целочисленное квантование после обучения», то произойдет сбой. Вместо этого, похоже, выполнение динамического квантования после обучения по умолчанию можно выполнить обычным образом.
В журнале здесь ничего не показано.
Пожалуйста, помогите, если есть какие-либо подсказки или рекомендации. Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/786 ... th-upsampl