首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PyTorch进行科学计算

使用PyTorch进行科学计算
EN

Stack Overflow用户
提问于 2017-12-24 13:46:56
回答 1查看 426关注 0票数 1

我想使用PyTorch作为一个科学计算软件包。它在这方面有很多值得推荐的地方-它的张量基本上是GPU加速的numpy数组,它的autograd机制除了神经网络之外,还可能对许多事情有用。

然而,可用的教程和文档似乎非常适合让人们快速上手并使用它进行机器学习。尽管有许多关于TensorVariable类的有用信息(我对这些信息理解得相当好),但nnoptim包似乎总是通过示例而不是通过解释API来引入的,这使得很难弄清楚到底是怎么回事。

在这一点上,我的主要问题是是否可以在不使用nn包的情况下使用optim包,如果可以,如何使用。当然,我总是可以将我的模拟实现为nn.Module的子类,即使它们不是神经网络,但我想了解当我这样做时,幕后会发生什么,以及它会给我的特定应用程序带来什么好处/缺点。

从更广泛的角度来看,我希望能给出更多关于API的逻辑概述(特别是针对nnoptim )的参考资料,而不仅仅是提供示例。

EN

回答 1

Stack Overflow用户

发布于 2017-12-25 10:49:20

这是对在不使用nn的情况下使用optim的特定问题的部分自我回答。答案是,是的,你可以这样做。事实上,从源代码来看,optim包对nn一无所知,只关心变量和张量。

文档给出了以下不完整的示例:

代码语言:javascript
复制
optimizer = optim.Adam([var1, var2], lr = 0.0001)

然后:

代码语言:javascript
复制
for input, target in dataset:
    optimizer.zero_grad()
    output = model(input)
    loss = loss_fn(output, target)
    loss.backward()
    optimizer.step()

函数model没有在任何地方定义,看起来可能与nn有关,但实际上它可以只是一个Python函数,它使用var1var2作为参数从input计算output,只要所有中间步骤都使用变量来完成,以便可以区分。对optimizer.step()的调用将自动更新var1var2的值。

就PyTorch的整体结构而言,optimnn似乎彼此独立,nn基本上只是一种将可微函数链接在一起的便捷方法,以及一个在机器学习中有用的函数库。不过,我还是希望能给出一个很好的整个包的技术概述。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47958359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档