我有两个 torch 张量

mask = torch.ones(1024, 64, dtype=torch.float32)
indices = torch.randint(0, 64, (1024, ))

对于mask中的每i行,我希望将indices的第i个元素指定的索引之后的所有元素设置为零.例如,如果indices的第一个元素是50,那么我想设置mask[0, 50:]=0.可以在不使用for循环的情况下实现这一点吗?

使用for循环的解决方案:

for i in range(mask.shape[0]):
    mask[i, indices[i]:] = 0

推荐答案

您可以首先生成一个大小为(1024x64)的张量,其中每行的数字排列在0到63之间.然后使用reshape 为(1024x1)的索引应用逻辑运算

mask = torch.ones(1024, 64, dtype=torch.float32)
indices = torch.randint(0, 64, (1024, 1))    # Note the dimensions

mask[torch.arange(0, 64, dtype=torch.float32).repeat(1024,1) >= indices] = 0

Python相关问答推荐

大Pandas 胚胎中产生组合

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

Pytest两个具有无限循环和await命令的Deliverc函数

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

try 将一行连接到Tensorflow中的矩阵

如何在Polars中从列表中的所有 struct 中 Select 字段?

在输入行运行时停止代码

python—telegraph—bot send_voice发送空文件

在Admin中显示从ManyToMany通过模型的筛选结果

OpenGL仅渲染第二个三角形,第一个三角形不可见

在Python中控制列表中的数据步长

Python Mercury离线安装

为罕见情况下的回退None值键入

设置索引值每隔17行左右更改的索引

以极轴表示的行数表达式?

如何从一个维基页面中抓取和存储多个表格?

将鼠标悬停在海运`pairplot`的批注/高亮显示上

pyspark where子句可以在不存在的列上工作

搜索结果未显示.我的URL选项卡显示:http://127.0.0.1:8000/search?";,而不是这个:";http://127.0.0.1:8000/search?q=name";

是否从Python调用SHGetKnownFolderPath?