使用PyTorch进行科学计算

问题描述 投票:0回答:1

我想使用PyTorch作为科学计算包。它在这方面有很多推荐 - 它的Tensors基本上是GPU加速的numpy数组,它的autograd机制可能对神经网络之外的很多东西都有用。

但是,可用的教程和文档似乎非常适合快速让人们使用它进行机器学习。虽然TensorVariable类有很多很好的信息(我理解这个材料相当不错),但nnoptim软件包似乎总是通过示例而不是通过解释API来介绍,这使得很难弄清楚到底是怎么回事。

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

更广泛地说,我希望能够提供任何资源的指针,这些资源提供了更多API的逻辑概述(特别是针对nnoptim),而不仅仅是提供示例。

pytorch
1个回答
1
投票

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

该文档提供了以下不完整的示例:

optimizer = optim.Adam([var1, var2], lr = 0.0001)

然后:

for input, target in dataset:
    optimizer.zero_grad()
    output = model(input)
    loss = loss_fn(output, target)
    loss.backward()
    optimizer.step()

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

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

© www.soinside.com 2019 - 2024. All rights reserved.