gpt4 book ai didi

python - PyTorch 线性回归模型

转载 作者:行者123 更新时间:2023-12-04 03:55:11 25 4
gpt4 key购买 nike

我有一个多元线性回归问题,其中每个数据点如下所示:

y_i = 3                             # Some integer between 0 and 20
X_i = [0.5, 80, 0.004, 0.5, 0.789] # A 5 dimensional vector

我可以使用 sklearn 训练一个简单的线性模型,例如:

from sklearn import linear_model
ols = linear_model.LinearRegression()
model = ols.fit(X, y)

这让我得到了大约 55% 的准确率(线性模型不适合这个问题,但这是证明问题建模可行性的基线,也是我学习 PyTorch 的一种方式,之前使用过 TensorFlow ).

当我尝试使用 PyTorch 训练线性模型时,我将模型定义为:

class TwoLayerNet(torch.nn.Module):
def __init__(self, D_in, D_out):

super(TwoLayerNet, self).__init__()
self.linear1 = torch.nn.Linear(D_in, D_out)

def forward(self, x):

y_pred = self.linear1(x)
return y_pred

D_in, D_out = 5, 1
model = TwoLayerNet(D_in, D_out)

训练为:

epochs = 10
criterion = torch.nn.MSELoss(reduction='sum')
optimizer = torch.optim.SGD(model.parameters(), lr=1e-4)
for epoch in range(epochs):
for n, batch in enumerate(batches):
X = []
y = []
for values in batch:
X.append(values[0])
y.append(values[1])

X = torch.from_numpy(np.asarray(X))
y = torch.from_numpy(np.asarray(y))
# Forward pass: Compute predicted y by passing x to the model
optimizer.zero_grad()
y_pred = model(X)
# Compute and print loss
loss = criterion(y_pred, y)
if n % 100 == 99:
print(n, loss.item())

# Zero gradients, perform a backward pass, and update the weights.

loss.backward()
optimizer.step()

这只是我调整过的 PyTorch 文档中的一些代码。当前设置仅达到 ~25%,远不及我对线性模型的预期精度。我在 PyTorch 模型训练中做错了什么吗?

最佳答案

tam63,

您在模型定义中缺少激活函数。替换

y_pred = self.linear1(x)

y_pred =  F.relu(self.linear1(x))

还有一些事情可能会出错。例如(1)学习率太低,(2)层数太少(再加一层)。如果你像你说的那样熟悉 TF,请在 TF 中尝试同样的问题,一旦你有好的结果 - 将它转化为具有相同网络结构和相同超参数的 Pytorch。

关于python - PyTorch 线性回归模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64052643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com