pytorch 执行到最末,程序不能停止

发布于 2022-09-12 04:27:05 字数 1364 浏览 40 评论 0

问题描述:下面的代码,是一个pytorch训练线性模型的demo,在我的机器上,它能够正常的训练。但是,程序运行到最末,停不下来。只能通过强制关闭cmd窗口,才能关闭程序。
我逐句的调试过,把loss.backward();这句注释掉,则程序运行到最末,可以停止。但是,注释掉它,模型就不能正常的训练了。
是不是下面的训练demo,写的不完善?大伙提提建议。

代码运行环境说明:
windows 7 64bit
python 3.6.5
torch: 1.2.0

import torch
from torch.autograd import Variable
import torch.nn.functional as F
import matplotlib.pyplot as plt

x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1); # x data (tensor), shape=(100, 1)
y = x.pow(2) + 0.2 * torch.rand(x.size()); # noisy y data (tensor), shape=(100, 1)

print(x);
print(y);

x, y = Variable(x), Variable(y);


class Net(torch.nn.Module):
    def __init__(self, n_features, n_hidden, n_output):
        super(Net, self).__init__();
        self.hidden = torch.nn.Linear(n_features, 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;


net = Net(1, 10, 1);
print(net);

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

for t in range(100):
    prediction = net(x);

    loss = loss_func(prediction, y);

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

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

print('运行结束...')

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文