如何初始化at::Scalar
How can I initialize an at::Scalar?
我试图调用名为linspace的PyTorch C++API函数。当我试着把它写成Python风格时,我写道:
torch::Tensor x = torch::linspace(-1, 1, 100);
这个代码出现了一个分段错误:
[1] 6038 segmentation fault ./example-app
我阅读了pytorch.org中的C++文档,它给出了linspace的格式:
at::Tensor torch::linspace(const at::Scalar &start, const at::Scalar &end, c10::optional<int64_t> steps = c10::nullopt, at::TensorOptions options = {})
在这里,我不知道at::Scalar的确切含义,所以我在命名空间的关于的文档中搜索了它,但我没有找到任何名为Scalar的类。
然而,我确实在at命名空间中发现了许多具有Scalar类型参数的函数。
这是关于linspace函数的文档,这是关于命名空间中的文档。
我今天遇到了另一个与标量相关的问题,并开始寻找文档。我找不到文档,但在头文件中找到了这个:
namespace c10
{
/**
* Scalar represents a 0-dimensional tensor which contains a single element.
* Unlike a tensor, numeric literals (in C++) are implicitly convertible to
* Scalar (which is why, for example, we provide both add(Tensor) and
* add(Scalar) overloads for many operations). It may also be used in
* circumstances where you statically know a tensor is 0-dim and single size,
* but don't know its type.
*/
class C10_API Scalar
{
public:
Scalar() : Scalar(int64_t(0)) {}
void destroy()
{
if (Tag::HAS_si == tag || Tag::HAS_sd == tag) {
raw::intrusive_ptr::decref(v.p);
v.p = nullptr;
}
}
...
Scalar(T vv) : tag(Tag::HAS_b)
{
v.i = convert<int64_t, bool>(vv);
}
...
}
这并不难找到,但我认为他们应该把它放在主要文档中。。。不管怎样,看起来你做得对。
相关文章:
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 对 Scalar ::Scalar() 的未定义引用
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- CMake 用于设定C++标准的设施 "at least C++NN"
- SIGSEGV on Boost UDP 套接字关闭 - tcache_get at malloc.c.
- 使用 mat.at<uchar>(i,j) 的 opencv C++中的矩阵赋值错误
- CMake Error at modules/videoio/cmake/detect_ffmpeg.cmake:16
- 当键值是 std 向量时,为什么使用 at in C++ 访问映射值如此缓慢?
- 两个垫子的 OpenCV 数据是相同的,但使用 Mat::at 检索时的值已损坏
- 使用 at() 访问 std::map 元素是否比运算符 [] 慢?
- 错误:调用 .. at return 语句时没有匹配函数
- OpenCV 像素访问点与 at() - 不同的值
- C++11 功能 std::map::at 编译旧版本的C++
- AT 命令响应解析器
- 在macOS上使用libcurl库编译一个c++at项目
- 使用模板时获取"Trigger Breakpoint Error at delete"
- 为什么向量的.at()成员函数返回引用而不是迭代器
- 2D 数组中的"Excess elements in scalar initializer"错误