簡體   English   中英

為什么 inplace Tensor 方法在 Torch C++ API 中是 const?

[英]Why inplace Tensor methods are const in Torch C++ API?

我看到許多就地張量操作,如mul_div_在 PyTorch C++ 前端是 const 的:

Tensor &mul_(Scalar other) const

這似乎很奇怪,因為就地操作應該修改張量數據,對吧? 有誰知道使它們成為常量的原因是什么?

我發現了一些關於 github 的討論,但看起來標題與下面寫的內容相矛盾:

'const Tensor' 不提供 const 安全性......因此,這些方法應該是非常量的

正如評論和這個線程所強調的那樣,這個const是虛偽的,因為它適用於指向底層TensorImpl的指針,而不是數據本身。 這只是為了編譯優化,這里沒有真正的語義。 這類似於const int* (指向 const int 的指針)和int* const (指向 int 的 const 指針)之間的區別。

通過 function 名稱中最后一個下划線的缺失(分別存在),可以很容易地識別 Torch 中的常量(分別是非常量)函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM