为什么使用火炬建立的回归模型不能很好地工作?

时间:2019-05-12 11:04:12

标签: neural-network regression pytorch

我喜欢使用割炬,因为它非常容易监视和调试参数,但是我总是遇到割炬回归问题

class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()
        self.hidden = torch.nn.Linear(n_feature, n_hidden)   
        self.predict = torch.nn.Linear(n_hidden, n_output)   

    def forward(self, x):
        x = F.relu(self.hidden(x))     
        x = self.predict(x)            
        return x

这是一个简单的网络,每当我尝试使用如下数据进行训练时

import sklearn.datasets as datasets
X_,y_=datasets.make_regression(n_samples=500,n_features=2,noise=0.1)
X = torch.from_numpy(X_).float()
y = torch.from_numpy(y_).float()
net = Net(n_feature=2, n_hidden=10, n_output=1)     
print(net)  

optimizer = torch.optim.SGD(net.parameters(), lr=0.2)
loss_func = torch.nn.MSELoss()

for t in range(2000):
    prediction = net(X)    

    loss = loss_func(prediction, y)     

    optimizer.zero_grad()   
    loss.backward()         
    optimizer.step()        

    if t % 5 == 0:
        print(loss.data.numpy())

我尝试调整超参数,例如节点数和学习率,并尝试更改优化器和损失函数,但看起来并没有太大的改进。 上面的代码中是否存在任何问题,或者有人在火炬回归上也度过了艰难的时光?

0 个答案:

没有答案