Package: torchmate
A High level PyTorch Training and Utility Library📚 Project DocumentationVisitTorchmate's Read The Docs Project Pageor read following README to know more about Torchmate library💡 IntroductionSo, why did I write Torchmate? I was a big fan of TensorFlow and Keras. But during my undergrad thesis I needed to use PyTorch. I was astonished with PyToroch’s flexibility. But I had to write the same boilerplate code which was quite frustrating to me. So, I decided to use a high level library like Catalyst or Lightning. Catalyst was great, but I missed Keras's verbose training output (which is cleaner) for better visualization (I know it's not a very good reason for writing a library). Pytorch Lightning also very good, but it changes a lot how we usually structure our code. Additionally, I was curious about how high-level frameworks like Keras, Catalyst, or Lightning work internally and utilize callbacks for extending functionalities. Building a minimalistic library myself seemed like the best way to understand these concepts. So, that's why I built Torchmate. Torchmate incorporates everything (actually not everything, some functionalities are still under development) I need and the way I prefere as a deep learning practitioner.🔑 Key FeaturesEncapsulate all training essentials:Model, data loaders, loss function, optimizer, and learning rate schedulers.Mixed precision training (AMP):Train faster and potentially achieve better generalization with mixed precision calculations.Gradient Accumulation:Train on larger batches virtually by accumulating gradients, improving memory efficiency (Implemented through callback).Gradient Clipping:Prevent exploding gradients and stabilize training (Implemented through callback).Gradient Penalty:Enhance stability in generative models like GANs.Callback Mechanism:Monitor progress, save checkpoints, early stopping and extend functionality with custom callbacks.Experiment Tracking:Integrate dedicated tools like Weights & Biases or TensorBoard through callbacks.Minimal Dependency:Torchmate only requires four dependencies-  PyTorch (of course), NumPy, Matplotlib, and Weights & Biases (Wandb).Research Paper Modules:Implementations of various modules from research papers, facilitating reproducibility and experimentation.⚙️ InstallationFirst make sure that PyTorch is installed on your envioronment. Then install torchmate via pip.From PyPI:$pipinstalltorchmateFrom Source:$pipinstallgit+https://github.com/SaihanTaki/torchmateN.B.Torchmate requires the PyTorch (Of course) library to function. But torchmate does not list PyTorch as a dependency to avoid unnecessary overhead during installation. Excluding PyTorch as a dependency allows users to explicitly install the version of PyTorch best suited for their specific needs and environment. For instance, users who don't require GPU acceleration can install the CPU-only version of PyTorch, reducing unnecessary dependencies and installation size.PyTorch Installation Page:https://pytorch.org/get-started/locally/⏳ Quick Exampleimporttorchimportnumpyasnpfromtorchmate.trainerimportTrainerfromsklearn.model_selectionimporttrain_test_split# Create a simple neural network modelclassSimpleModel(torch.nn.Module):def__init__(self):super(SimpleModel,self).__init__()self.fc1=torch.nn.Linear(1,1)defforward(self,x):returnself.fc1(x)# Create synthetic dataX=torch.tensor(np.random.rand(1000,1),dtype=torch.float32)y=2*X+1+torch.randn(1000,1)*0.1# Adding some noise# Split the data into training and validation setsX_train,X_val,y_train,y_val=train_test_split(X,y,test_size=0.2,random_state=42)# Create DataLoader objects for training and validationtrain_dataset=torch.utils.data.TensorDataset(X_train,y_train)train_dataloader=torch.utils.data.DataLoader(train_dataset,batch_size=8,shuffle=True)val_dataset=torch.utils.data.TensorDataset(X_val,y_val)val_dataloader=torch.utils.data.DataLoader(val_dataset,batch_size=8,shuffle=False)model=SimpleModel()loss_fn=torch.nn.MSELoss()optimizer=torch.optim.Adam(model.parameters(),lr=0.001)device='cuda:0'iftorch.cuda.is_available()else'cpu'# Create a Trainer instancetrainer=Trainer(model,train_dataloader,val_dataloader,loss_fn,optimizer,num_epochs=3,device=device)# Train the modelhistory=trainer.fit()🛡️ LicenseTorchmate is distributed underMIT License