我正在尝试使我的NN回归模型适合我的数据。 我使用了以下设置:
x的形状:(12,132399) y的形状:(1,132399) 训练例数:m:132399 每个示例的功能数量:12 Relu激活 他初始化 亚当优化
我尝试了不同的学习率,层数,节点数和时期,但仍然没有发生过拟合现象。对于回归我能得到的最好预测是R ^ 2 = 0.6。
如果您让我知道我的代码中的错误,我将不胜感激:
class NN(nn.Module):
#Constructor
def __init__(self,layers):
super(NN,self).__init__()
self.hidden=nn.ModuleList()
for D_in, D_out in zip(layers,layers[1:]):
linear_transform=nn.Linear(D_in,D_out)
torch.nn.init.kaiming_uniform_(linear_transform.weight, nonlinearity='relu')
self.hidden.append(linear_transform)
#Prediction
def forward(self,x):
L=len(self.hidden)
for l,transform in zip(range(L),self.hidden):
if l<L:
x=relu(transform(x))
else:
x=transform(x)
return x
def train(model, criterion, trainloader, optimizer,scheduler, epochs = 100):
cost=[]
total=0
i=0
for epoch in range(epochs):
total=0
for x,y in trainloader:
optimizer.zero_grad()
yhat=model(x)
loss=criterion(yhat,y)
loss.backward()
optimizer.step()
total+=loss.item()
scheduler.step()
i+=1
cost.append(total)
print(str(i)+': '+str(total))
return cost
model=NN(layers)
criterion=nn.MSELoss()
lr=0.00003
optimizer=optim.Adam(model.parameters(),lr=lr)
milestones=[500,1000]
scheduler=optim.lr_scheduler.MultiStepLR(optimizer, milestones, gamma=0.6, last_epoch=-1)
cost=train(model,criterion,trainloader,optimizer,scheduler,epochs=1000)