I am running the following code for a simple problem, and the issue is that my outputs shape depends on the batch size which is causing issues and giving the warning. I am predicting a single scalar using a vector of dimension 26
Please can you guide me where am I making a mistake in this issue :
df = pd.read_csv(r'D:\SAA_prime\saa\new_dataset1.csv')
df.shape # [40964,26]
scr = pd.read_csv('D:\SAA_prime\saa\scr_new_data1.csv')
scr.shape #(40964, 1)
inputs = torch.from_numpy(np.array(df.iloc[:, :-1])).type(torch.float32)
inputs.shape #torch.Size([40964, 25])
targets = np.array(scr).reshape(40964,1)
targets = torch.from_numpy(targets).type(torch.float32)
targets.shape#torch.Size([40964, 1])
dataset = TensorDataset(inputs, targets)
train_size = int(0.8 * len(dataset))
test_size = len(dataset) - train_size
train_dataset, test_dataset = torch.utils.data.random_split(dataset, [train_size, test_size])
batch_size = 10
trainloader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
class scr_model(torch.nn.Module):
def __init__(self):
super().__init__()
self.W = torch.nn.Parameter(torch.randn((25,25)))
self.m = torch.nn.Parameter(torch.randn((25,1)))
self.b = torch.nn.Parameter(torch.randn((1)))
def forward(self, x):
return (self.b + x @ self.m + x @ self.W @ x.t())
model = scr_model()
for x,y in trainloader:
preds = model(x)
print("Prediction is :\n",preds.shape)
print("\nActual targets is :\n",y.shape)
break
Prediction is :
torch.Size([10, 10])
Actual targets is :
torch.Size([10, 1])
I have tried to debug this code many times from different angles but I am unable to find the cause of the error. Any help will be much appreciated!