Updated classification training code.

This commit is contained in:
HowToSD
2025-03-04 14:53:31 -08:00
parent ce82b72da9
commit b1806929f1
2 changed files with 25 additions and 14 deletions
@@ -64,18 +64,18 @@ class PtTrainClassificationModel:
"""
with torch.inference_mode(False):
train_loss = list()
val_loss = list()
train_loss = []
val_loss = []
if use_gpu:
model.to("cuda")
loss_function = nn.CrossEntropyLoss(reduction="sum")
loss_function = nn.CrossEntropyLoss() # mean loss
# Train the model
for epoch in range(epochs):
if use_gpu:
model.to("cuda")
model.train()
total_loss = 0
total_samples = len(train_loader.dataset)
for images, labels in train_loader:
if use_gpu:
images = images.to("cuda")
@@ -85,27 +85,38 @@ class PtTrainClassificationModel:
loss = loss_function(outputs, labels)
loss.backward()
optimizer.step()
total_loss += loss.item()
epoch_loss = total_loss / len(train_loader)
batch_size = labels.size(0)
batch_loss = loss.item() * batch_size
total_loss += batch_loss
epoch_loss = total_loss / total_samples
print(f"Epoch (train) {epoch+1}/{epochs}, Loss: {epoch_loss:.4f}")
train_loss.append(epoch_loss)
if val_loader:
pass
with torch.no_grad():
model.eval()
total_loss = 0
total_samples = len(val_loader.dataset)
for images, labels in val_loader:
if use_gpu:
images = images.to("cuda")
labels = labels.to("cuda")
outputs = model(images)
loss = loss_function(outputs, labels)
total_loss += loss.item()
epoch_loss = total_loss / len(val_loader)
batch_size = labels.size(0)
batch_loss = loss.item() * batch_size
total_loss += batch_loss
epoch_loss = total_loss / total_samples
print(f"Epoch (val) {epoch+1}/{epochs}, Loss: {epoch_loss:.4f}")
val_loss.append(epoch_loss)
if use_gpu:
model.to("cpu")
return (model,
torch.Tensor(np.asarray(train_loss)),
torch.Tensor(np.asarray(val_loss)))
torch.tensor(train_loss, dtype=torch.float32),
torch.tensor(val_loss, dtype=torch.float32))
+1 -1
View File
@@ -1,7 +1,7 @@
[project]
name = "data-analysis"
description = "Data analysis custom modules for ComfyUI – Integrates Pandas, Seaborn and Matplotlib into ComfyUI, featuring extensive PyTorch wrapper nodes for seamless tensor operations. Experimental PyTorch model training was added in v2.0."
version = "2.0.1"
version = "2.0.2"
license = {file = "LICENSE"}
[project.urls]