PytorchC++

本文探讨了PytorchC++中变量存储与子模块寄存的区别,指出Python通过类属性自动将变量放入寄存器,而C++需手动操作。在C++中,子模块寄存和参数访问有特定方式,同时介绍了C++在前向传播、参数查看及函数传递方式上的特点,包括传值、传引用和传指针的差异,并展示了Functional接口的使用示例。
摘要由CSDN通过智能技术生成
import torch

class Net(torch.nn.Module):
  def __init__(self, N, M):
    super(Net, self).__init__()
    self.W = torch.nn.Parameter(torch.randn(N, M))
    self.b = torch.nn.Parameter(torch.randn(M))

  def forward(self, input):
    return torch.addmm(self.b, input, self.W)
import torch

class Net(torch.nn.Module):
  def __init__(self, N, M):
    super(Net, self).__init__()
    self.W = torch.nn.Parameter(torch.randn(N, M))
    self.b = torch.nn.Parameter(torch.randn(M))

  def forward(self, input):
    return torch.addmm(self.b, input, self.W)

 分析以上代码,可以发现,python和c++主要是在寄存变量的时候的区别(寄存变量就是把变量放在CPU里面,可以更快的读取)。python只要把变量变成类的属性(就是self.w的形式),就可以自动把那些变量放在寄存器里。而c++需要手动把这些变量放在寄存器里。

寄存submodules的时候,如下代码,只需要把submudule定义为module的属性(attribute)的时候,就可以自动的把submodul

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值