Instructions to use sriram7737/TRASHPRED with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use sriram7737/TRASHPRED with Keras:
# Available backend options are: "jax", "torch", "tensorflow". import os os.environ["KERAS_BACKEND"] = "jax" import keras model = keras.saving.load_model("hf://sriram7737/TRASHPRED") - Notebooks
- Google Colab
- Kaggle
| import torch | |
| import torch.nn as nn | |
| import torchvision.transforms as transforms | |
| import torchvision.models as models | |
| from torchvision import datasets | |
| from torch.utils.data import DataLoader | |
| import os | |
| # Define directories | |
| structured_dataset_path = "C:\\Users\\srira\\OneDrive\\Desktop\\AI_PROJ\\structured_data" | |
| train_dir = os.path.join(structured_dataset_path, "train") | |
| val_dir = os.path.join(structured_dataset_path, "val") | |
| # Define transformations | |
| transform = transforms.Compose([ | |
| transforms.Resize((224, 224)), | |
| transforms.ToTensor(), | |
| transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), | |
| ]) | |
| # Load dataset | |
| train_dataset = datasets.ImageFolder(root=train_dir, transform=transform) | |
| val_dataset = datasets.ImageFolder(root=val_dir, transform=transform) | |
| train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True) | |
| val_loader = DataLoader(val_dataset, batch_size=32, shuffle=False) | |
| # Load pretrained model | |
| model = models.resnet50(pretrained=True) | |
| num_ftrs = model.fc.in_features | |
| model.fc = nn.Linear(num_ftrs, len(train_dataset.classes)) | |
| # Define loss function and optimizer | |
| criterion = nn.CrossEntropyLoss() | |
| optimizer = torch.optim.Adam(model.parameters(), lr=0.001) | |
| def train_model(model, train_loader, val_loader, criterion, optimizer, num_epochs=10): | |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| model.to(device) | |
| for epoch in range(num_epochs): | |
| model.train() | |
| running_loss = 0.0 | |
| correct = 0 | |
| total = 0 | |
| for images, labels in train_loader: | |
| images, labels = images.to(device), labels.to(device) | |
| optimizer.zero_grad() | |
| outputs = model(images) | |
| loss = criterion(outputs, labels) | |
| loss.backward() | |
| optimizer.step() | |
| running_loss += loss.item() | |
| _, predicted = outputs.max(1) | |
| total += labels.size(0) | |
| correct += predicted.eq(labels).sum().item() | |
| train_acc = 100 * correct / total | |
| val_acc = evaluate_model(model, val_loader, device) | |
| print(f"Epoch {epoch+1}/{num_epochs}, Loss: {running_loss/len(train_loader):.4f}, Train Acc: {train_acc:.2f}%, Val Acc: {val_acc:.2f}%") | |
| return model | |
| def evaluate_model(model, val_loader, device): | |
| model.eval() | |
| correct = 0 | |
| total = 0 | |
| with torch.no_grad(): | |
| for images, labels in val_loader: | |
| images, labels = images.to(device), labels.to(device) | |
| outputs = model(images) | |
| _, predicted = outputs.max(1) | |
| total += labels.size(0) | |
| correct += predicted.eq(labels).sum().item() | |
| return 100 * correct / total | |
| # Train the model | |
| trained_model = train_model(model, train_loader, val_loader, criterion, optimizer, num_epochs=10) | |
| # Save the model | |
| torch.save(trained_model.state_dict(), "smart_recycling_model.pth") | |