AI_Check_project / two_sample_tester.py
jer233's picture
Create two_sample_tester.py
e1a5b54 verified
import torch
from roberta_model_loader import roberta_model
from feature_ref_loader import feature_two_sample_tester_ref
from meta_train import net
from regression_model_loader import regression_model
from MMD import MMD_batch2
from utils import DEVICE, FeatureExtractor
class TwoSampleTester:
def __init__(self, net=net, model=roberta_model):
print("TwoSample Tester init")
self.net = net
self.model = model
self.feature_extractor = FeatureExtractor(model, net)
def test(self, input_text):
print("TwoSample Tester test")
# Get the feature for input text
feature_for_input_text = self.feature_extractor.process(input_text)
# print(
# "DEBUG: feature_for_input_text:",
# feature_for_input_text.shape,
# feature_two_sample_tester_ref.shape,
# )
# Calculate MMD
mmd_feature_for_input_text = MMD_batch2(
torch.cat([feature_two_sample_tester_ref, feature_for_input_text], dim=0),
feature_two_sample_tester_ref.shape[0],
0,
self.net.sigma,
self.net.sigma0_u,
self.net.ep,
).to("cpu")
# Use the regression model to get the 2-sample test result
y_pred_loaded = regression_model.model.predict(
mmd_feature_for_input_text.detach().numpy().reshape(-1, 1)
)
prediction = int(y_pred_loaded[0])
if prediction == 0:
return "Human"
elif prediction == 1:
return "AI"
two_sample_tester = TwoSampleTester()