Spaces:
Runtime error
Runtime error
| import os | |
| import urllib.request as request | |
| from zipfile import ZipFile | |
| import tensorflow as tf | |
| from cnnClassfier.entity.config_entity import PrepareBaseModelConfig | |
| from pathlib import Path | |
| class PrepareBaseModel: | |
| def __init__(self, config: PrepareBaseModelConfig): | |
| self.config = config | |
| def get_base_model(self): | |
| self.model = tf.keras.applications.vgg16.VGG16( | |
| input_shape = self.config.params_image_size, | |
| weights = self.config.params_weights, | |
| include_top = self.config.params_include_top | |
| ) | |
| self.save_model(path = self.config.base_model_path, model = self.model) | |
| def prepare_full_model(model, classes, freeze_all, freeze_till, learinig_rate): | |
| if freeze_all: | |
| for layer in model.layers: | |
| model.trainable = False | |
| elif (freeze_till is not None) and (freeze_till > 0): | |
| for layer in model.layers[:-freeze_till]: | |
| model.trainable = False | |
| flatten_in = tf.keras.layers.Flatten()(model.output) | |
| prediction = tf.keras.layers.Dense( | |
| units = classes, | |
| activation = 'softmax' | |
| )(flatten_in) | |
| full_model = tf.keras.models.Model( | |
| inputs = model.input, | |
| outputs = prediction | |
| ) | |
| full_model.compile( | |
| optimizer = tf.keras.optimizers.SGD(lr = learinig_rate), | |
| loss = tf.keras.losses.CategoricalCrossentropy(), | |
| metrics = ['accuracy'] | |
| ) | |
| full_model.summary() | |
| return full_model | |
| def update_base_model(self): | |
| self.full_model = self.prepare_full_model( | |
| model = self.model, | |
| classes = self.config.params_classes, | |
| freeze_all=True, | |
| freeze_till=None, | |
| learinig_rate=self.config.params_learning_rate | |
| ) | |
| self.save_model(path = self.config.updated_base_model_path, model = self.full_model) | |
| def save_model(path: Path, model: tf.keras.Model): | |
| model.save(path) | |