Hyunji

base model

""" base model"""
import logging
import numpy as np
import torch.nn as nn
logger = logging.getLogger()
class Base(nn.Module):
""" Base model with some util functions"""
def stats(self, print_model=True):
# print network model and information about parameters
logger.info("Model info:::")
if print_model:
logger.info(self)
count = 0
for i in self.parameters():
count += np.prod(i.shape)
logger.info(f"Total parameters : {count}")
def to(self, *args, **kwargs):
if kwargs.get("device"):
self.device = kwargs.get("device")
if len(args) > 0:
self.device = args[0]
return super().to(*args, **kwargs)
def forward(self, x):
raise NotImplementedError()