为什么就地张量方法在火炬C++;应用程序编程接口? 我看到很多像Sox[Muly] < /C> >和代码> DIVAY的置换置换操作都在PyTrac C++前端中: Tensor &mul_(Scalar other) const
这似乎很奇怪,因为就地操作应该修改张量数据,对吗?有人知道让它们成为常量的理由吗 我在github上找到了一些,但标题似乎与下面所写的内容相矛盾: “常量张量”不提供常量安全性。。。因此,这些方法应该是非常量的为什么就地张量方法在火炬C++;应用程序编程接口? 我看到很多像Sox[Muly] < /C> >和代码> DIVAY的置换置换操作都在PyTrac C++前端中: Tensor &mul_(Scalar other) const,c++,libtorch,C++,Libtorch,这似乎很奇怪,因为就地操作应该修改张量数据,对吗?有人知道让它们成为常量的理由吗 我在github上找到了一些,但标题似乎与下面所写的内容相矛盾: “常量张量”不提供常量安全性。。。因此,这些方法应该是非常量的 正如注释和中所强调的,此常量是不真实的,因为它适用于指向底层TensorImpl的指针,而不是数据本身。这只是为了编译优化,这里没有真正的语义。这类似于const int*(指针指向const int)和int*const(指针指向int)之间的区别 torch中的常量(分别为非常量)函
正如注释和中所强调的,此
常量
是不真实的,因为它适用于指向底层TensorImpl
的指针,而不是数据本身。这只是为了编译优化,这里没有真正的语义。这类似于const int*
(指针指向const int)和int*const
(指针指向int)之间的区别
torch中的常量(分别为非常量)函数很容易识别,因为函数名中没有(分别为存在)最后一个下划线。正如注释和的下划线所示,此
常量
是不真实的,因为它适用于指向底层TensorImpl
的指针,而不是数据本身。这只是为了编译优化,这里没有真正的语义。这类似于const int*
(指针指向const int)和int*const
(指针指向int)之间的区别
torch中的常量(或非常量)函数很容易识别,因为函数名中没有(或有)最后一个下划线。Tensor类型是指向真正的Tensor数据的智能指针。
const
修改指针的常量,而不是数据的常量。Tensor
类型实际上是指向实际Tensor数据的智能指针。常量修改指针的常量,而不是数据的常量。