from typing import List, Optional, Tuple from models.viscosity_models import CNN3D import torch from torch.utils.data.dataloader import DataLoader from sklearn.metrics import r2_score import numpy as np import pandas as pd @torch.no_grad() def get_inference(model : CNN3D, data_loader : DataLoader, device : torch.device) -> Tuple[float, float]: y_h_all = [] y_all =[] for (X,y) in data_loader: X = X.to(device) y = y.to(torch.float32) y_h = model(X) y_h_all.extend(y_h.detach().cpu().numpy()) y_all.extend(y.numpy()) df = pd.DataFrame({'y': np.array(y_all).ravel(), 'y_h': np.array(y_h_all).ravel()}) return (df, r2_score(np.array(y_all),np.array(y_h_all))) def combine_train_and_val(df_train,df_val): df = pd.concat([df_train,df_val]) r2 = r2_score(df['y'],df['y_h']) return df,r2