ummanmm's picture
Upload folder using huggingface_hub
b34f590 verified
Raw
History Blame Contribute Delete
2.64 kB
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from pathlib import Path
def plot_model_curves(df, model_name, axes_row):
ax_loss, ax_acc = axes_row
ax_loss.plot(
df["epoch"], df["train_loss"],
marker="o", markersize=4, label="Train Loss",
)
ax_loss.plot(
df["epoch"], df["val_loss"],
marker="s", markersize=4, label="Val Loss",
)
ax_loss.set_title(f"{model_name} - Loss", fontsize=12, fontweight="bold")
ax_loss.set_xlabel("Epoch")
ax_loss.set_ylabel("Loss")
ax_loss.legend()
ax_acc.plot(
df["epoch"], df["train_acc"],
marker="o", markersize=4, label="Train Acc",
)
ax_acc.plot(
df["epoch"], df["val_acc"],
marker="s", markersize=4, label="Val Acc",
)
ax_acc.set_title(f"{model_name} - Accuracy", fontsize=12, fontweight="bold")
ax_acc.set_xlabel("Epoch")
ax_acc.set_ylabel("Accuracy")
ax_acc.set_ylim(-0.05, 1.05)
ax_acc.legend()
def main():
project_root = Path(__file__).resolve().parents[2]
results_dir = project_root / "results"
resnet_path = results_dir / "history_resnet18.csv"
vgg_path = results_dir / "history_vgg16.csv"
has_resnet = resnet_path.exists()
has_vgg = vgg_path.exists()
if not has_resnet and not has_vgg:
print("ERROR: no history CSVs found. Run training first.")
return
sns.set_style("whitegrid")
if has_resnet and has_vgg:
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
df_resnet = pd.read_csv(str(resnet_path))
df_vgg = pd.read_csv(str(vgg_path))
plot_model_curves(df_resnet, "ResNet18", axes[0])
plot_model_curves(df_vgg, "VGG16", axes[1])
fig.suptitle(
"ResNet18 vs VGG16 Training Curves",
fontsize=14, fontweight="bold",
)
elif has_resnet:
fig, axes = plt.subplots(1, 2, figsize=(13, 5))
df_resnet = pd.read_csv(str(resnet_path))
plot_model_curves(df_resnet, "ResNet18", axes)
fig.suptitle("ResNet18 Training Curves", fontsize=14, fontweight="bold")
else:
fig, axes = plt.subplots(1, 2, figsize=(13, 5))
df_vgg = pd.read_csv(str(vgg_path))
plot_model_curves(df_vgg, "VGG16", axes)
fig.suptitle("VGG16 Training Curves", fontsize=14, fontweight="bold")
fig.tight_layout(rect=[0, 0, 1, 0.95])
results_dir.mkdir(exist_ok=True)
save_path = results_dir / "training_curves.png"
fig.savefig(str(save_path), dpi=150)
plt.close(fig)
print(f"Training curves saved to: {save_path}")
if __name__ == "__main__":
main()