pytorch相关函数在代码运行时速度超慢

pytorch相关函数在代码运行时速度超慢

最近在使用pytorch训练网络时遇到了一个很奇怪的问题。
我生成了一个(90000, 4, 4)的矩阵,然后调用torch.det()和torch.svd(),结果电脑直接卡住。
将矩阵大小减少到(10000, 4, 4)的时候也花费了近4秒才完成计算。
但是在命令行中使用torch.rand(90000, 4, 4)生成随机矩阵测试运行速度是正常的。
经过检查我自己的矩阵元素一切正常,没有奇异的情况。
尝试使用torch.save()保存到本地,然后在命令行中读取并使用pytorch计算,结果速度仍然很慢。
最后灵光一闪,发现测试数据是在cpu上的,我的代码是在gpu上的。
于是在代码中加入了.cpu()并运行,结果速度正常。
猜测是空余显存不够,pytorch并行效率下降导致的。
如果显存不太够用的情况下,有些计算步骤还是使用cpu计算吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个使用PyTorch实现函数逼近的简单示例代码: ```python import torch import time # 定义函数:f(x) = 2x + 1 def true_func(x): return 2 * x + 1 # 生成数据集 x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1) y = true_func(x) + torch.randn(x.size()) * 0.1 # 定义模型 model = torch.nn.Sequential( torch.nn.Linear(1, 10), torch.nn.ReLU(), torch.nn.Linear(10, 1) ) # 定义损失函数和优化器 criterion = torch.nn.MSELoss() optimizer = torch.optim.SGD(model.parameters(), lr=0.01) # 训练模型 start_time = time.time() for epoch in range(1000): y_pred = model(x) loss = criterion(y_pred, y) optimizer.zero_grad() loss.backward() optimizer.step() end_time = time.time() total_time = end_time - start_time # 计算均差和总误差 with torch.no_grad(): y_pred = model(x) average_diff = torch.mean(torch.abs(y_pred - y)) total_error = torch.sum(torch.abs(y_pred - y)) print("运行时间:", total_time) print("均差:", average_diff.item()) print("总误差:", total_error.item()) ``` 在这个示例中,我们使用一个简单的线性函数f(x) = 2x + 1作为真实函数,并生成带有噪声的数据集。然后,我们使用一个包含两个线性层和一个ReLU激活函数的神经网络模型来逼近这个函数。我们使用均方误差损失函数和随机梯度下降优化器进行训练。最后,我们计算运行时间、均差和总误差。 请注意,这只是一个简单的示例,实际中可能需要更复杂的模型和训练过程来实现更准确的函数逼近。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值