Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么就地张量方法在火炬C++;应用程序编程接口? 我看到很多像Sox[Muly] < /C> >和代码> DIVAY的置换置换操作都在PyTrac C++前端中: Tensor &mul_(Scalar other) const_C++_Libtorch - Fatal编程技术网

为什么就地张量方法在火炬C++;应用程序编程接口? 我看到很多像Sox[Muly] < /C> >和代码> DIVAY的置换置换操作都在PyTrac C++前端中: Tensor &mul_(Scalar other) const

为什么就地张量方法在火炬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中的常量(分别为非常量)函

这似乎很奇怪,因为就地操作应该修改张量数据,对吗?有人知道让它们成为常量的理由吗

我在github上找到了一些,但标题似乎与下面所写的内容相矛盾:

“常量张量”不提供常量安全性。。。因此,这些方法应该是非常量的


正如注释和中所强调的,此
常量
是不真实的,因为它适用于指向底层
TensorImpl
的指针,而不是数据本身。这只是为了编译优化,这里没有真正的语义。这类似于
const int*
(指针指向const int)和
int*const
(指针指向int)之间的区别


torch中的常量(分别为非常量)函数很容易识别,因为函数名中没有(分别为存在)最后一个下划线。

正如注释和的下划线所示,此
常量
是不真实的,因为它适用于指向底层
TensorImpl
的指针,而不是数据本身。这只是为了编译优化,这里没有真正的语义。这类似于
const int*
(指针指向const int)和
int*const
(指针指向int)之间的区别


torch中的常量(或非常量)函数很容易识别,因为函数名中没有(或有)最后一个下划线。

Tensor类型是指向真正的Tensor数据的智能指针。
const
修改指针的常量,而不是数据的常量。
Tensor
类型实际上是指向实际Tensor数据的智能指针。常量
修改指针的常量,而不是数据的常量。