VashuTheGreat2's picture
Upload folder using huggingface_hub
243b4bc verified
Raw
History Blame Contribute Delete
1.9 kB
import torch
import pytest
from src.entity.model import MyModel
from src.entity.config_entity import ModelTrainingConfig
def test_mymodel_predict_success():
"""Test that MyModel.predict returns probability values in [0, 1]
with the correct shape matching the batch size.
"""
config = ModelTrainingConfig(
image_feature_output=2048,
text_feature_output=768,
final_feature_output=512,
train_file_path=None # Ensure we bypass any local dataset file reading during init
)
model = MyModel(config=config)
batch_size = 4
dummy_img_feats = torch.randn((batch_size, config.image_feature_output))
dummy_txt_feats = torch.randn((batch_size, config.text_feature_output))
# Run predict
probs = model.predict(dummy_img_feats, dummy_txt_feats)
# Assertions
assert probs.shape == (batch_size, 1)
assert torch.all(probs >= 0.0) and torch.all(probs <= 1.0)
def test_mymodel_predict_emb_success():
"""Test that MyModel.predict_emb returns L2-normalized embedding tensors
with the correct final feature output shape.
"""
config = ModelTrainingConfig(
image_feature_output=2048,
text_feature_output=768,
final_feature_output=512,
train_file_path=None
)
model = MyModel(config=config)
batch_size = 3
dummy_img_feats = torch.randn((batch_size, config.image_feature_output))
dummy_txt_feats = torch.randn((batch_size, config.text_feature_output))
# Run predict_emb
embeddings = model.predict_emb(dummy_img_feats, dummy_txt_feats)
# Assertions
assert embeddings.shape == (batch_size, config.final_feature_output)
# Verify embeddings are L2 normalized (magnitude equals 1.0)
magnitudes = torch.norm(embeddings, p=2, dim=1)
assert torch.allclose(magnitudes, torch.ones_like(magnitudes), atol=1e-5)