小编Ros*_*oss的帖子

如何将整数的pytorch张量转换为布尔值的张量?

我想将整数张量转换为布尔值张量。

具体来说,我希望能够拥有一个转换tensor([0,10,0,16])tensor([0,1,0,1])

这在 Tensorflow 中只需使用tf.cast(x,tf.bool).

我希望强制转换将所有大于 0 的整数更改为 1,并将所有等于 0 的整数更改为 0。这!!在大多数语言中都是等价的。

由于 pytorch 似乎没有专用的布尔类型可以转换,这里最好的方法是什么?

编辑:我正在寻找一个矢量化的解决方案,而不是遍历每个元素。

python casting boolean pytorch tensor

11
推荐指数
2
解决办法
2万
查看次数

消除std :: vector <std :: string>的列表初始化的歧义

我的代码中有一个带有类型签名的重载函数:

void foo(std::string);
void foo(std::vector<std::string>);
Run Code Online (Sandbox Code Playgroud)

我希望foo的用户能够使用字符串或字符串列表来调用它

//Use case 1
foo("str");

//Use case 2
foo({"str1","str2","str3"});
foo({"str1","str2","str3","str4"});
Run Code Online (Sandbox Code Playgroud)

问题是当调用者将两个字符串传递给foo的初始值设定项列表时。

//Problem!
foo({"str1","str2"});
Run Code Online (Sandbox Code Playgroud)

对foo的调用是不明确的,因为它匹配两个类型签名。这是因为显然{"str1","str2"}是有效的构造函数std::string

所以我的问题是,在foo的声明或实现中我可以做些什么,以使我维护上面描述的API而不遇到这种模棱两可的构造方法。

我不想定义自己的字符串类,但是可以定义其他东西,而不必定义其他东西,vector<string>只要它可以使用字符串的初始化列表进行初始化即可。

只是出于好奇,为什么字符串构造函数会接受{"str1","str2"}

c++ string stdvector ambiguous-call c++11

5
推荐指数
1
解决办法
173
查看次数

标签 统计

ambiguous-call ×1

boolean ×1

c++ ×1

c++11 ×1

casting ×1

python ×1

pytorch ×1

stdvector ×1

string ×1

tensor ×1