yujin_ive_lora / yujinIVElocal.py
dev1virtuoso's picture
Upload 8 files
791dcd7 verified
Raw
History Blame Contribute Delete
1.88 kB
import os
import torch
import torchvision
from torch.utils.data import DataLoader
from torchvision.transforms import transforms
import toml
batch_size = 8
num_epochs = 10
learning_rate = 0.001
class LoRAModel(torch.nn.Module):
def __init__(self):
super(LoRAModel, self).__init__()
def forward(self, x):
pass
custom_dataset = """
[[datasets]]
[[datasets.subsets]]
image_dir = "/path/to/directory"
num_repeats = 10
[[datasets.subsets]]
image_dir = "/path/to/directory"
is_reg = true
num_repeats = 1
"""
dataset_config = toml.loads(custom_dataset)
datasets = dataset_config.get("datasets", [])
transform = transforms.Compose([
transforms.Resize((512, 512)),
transforms.ToTensor(),
])
train_datasets = []
for dataset in datasets:
subsets = dataset.get("subsets", [])
for subset in subsets:
image_dir = subset.get("image_dir")
num_repeats = subset.get("num_repeats", 1)
is_reg = subset.get("is_reg", False)
dataset = torchvision.datasets.ImageFolder(root=image_dir, transform=transform)
train_datasets.extend([dataset] * num_repeats)
train_dataset = torch.utils.data.ConcatDataset(train_datasets)
dataloader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
model = LoRAModel()
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)
total_step = len(dataloader)
for epoch in range(num_epochs):
for i, (images, labels) in enumerate(dataloader):
outputs = model(images)
loss = criterion(outputs, labels)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if (i + 1) % 100 == 0:
print(f"Epoch [{epoch + 1}/{num_epochs}], Step [{i + 1}/{total_step}], Loss: {loss.item()}")
save_path = "/path/to/directory/model.pth"
torch.save(model.state_dict(), save_path)