hakim
dvc and pipeline added
05f7b3b
from urllib.parse import urlparse
from cnnClassfier.entity.config_entity import EvaluationConfig
from pathlib import Path
import tensorflow as tf
from cnnClassfier.utils.common import save_json
class Evaluation:
def __init__(self, config: EvaluationConfig):
self.config = config
def _valid_generator(self):
datagenerator_kwargs = dict(
rescale = 1./255,
validation_split = 0.30
)
dataflow_kwargs = dict(
target_size = self.config.params_image_size[:-1],
batch_size= self.config.params_batch_size,
interpolation = 'bilinear'
)
valid_datagenerator = tf.keras.preprocessing.image.ImageDataGenerator(
**datagenerator_kwargs
)
self.valid_generator = valid_datagenerator.flow_from_directory(
directory = self.config.training_data,
subset = 'validation',
shuffle = True,
**dataflow_kwargs
)
@staticmethod
def load_model(path: Path) -> tf.keras.Model:
return tf.keras.models.load_model(path)
def evaluation(self):
model = self.load_model(self.config.path_of_model)
self._valid_generator()
self.score = model.evaluate(self.valid_generator)
def save_score(self):
scores = {'loss' : self.score[0], 'accuracy' : self.score[1]}
save_json(path = Path('scores.json'), data = scores)