pytorch之torch.zeros_like,torch.ones_like和tensor按索引赋值

1. torch.zeros_like

可以生成和括号内变量维度一致的全是0的内容。例如:输入维度为 1 × 8 × 3 × 5 1\times8\times3\times5 1×8×3×5的x,要生成跟x相同维度且值全为0的y,则如下所示:

pytorch之torch.zeros_like,torch.ones_like和tensor按索引赋值_第1张图片

2. torch.ones_like

可以生成和括号内变量维度一致的全是1的内容。例如:输入维度为 1 × 8 × 3 × 5 1\times8\times3\times5 1×8×3×5的x,要生成跟x相同维度且值全为1的y,则如下所示:
pytorch之torch.zeros_like,torch.ones_like和tensor按索引赋值_第2张图片

3. tensor按索引赋值

  • a.scatter_(dim, index, b) : tensor a 被就地(按照index)重新赋上 tensor b的值。
    注意:index的行数要小于等于a的行数,列数要小于等于b的列数
    dim: 需要赋值的维度
    index:需要赋值的索引
    b:要赋的值
    示例如下:
    pytorch之torch.zeros_like,torch.ones_like和tensor按索引赋值_第3张图片
    注意:a.scatter_(dim, index, b)不能写“dim=0”,如下方代码会报错:
    pytorch之torch.zeros_like,torch.ones_like和tensor按索引赋值_第4张图片
    即改成c=a.scatter_(1,torch.LongTensor(index),b)即可!!!

  • 可以实现相同功能的函数还有:index_fill_(dim, index, val) ;index_put_(indices, value)
    可参照博客:https://blog.csdn.net/qq_41368074/article/details/106986753?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-106986753-blog-105145955.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-106986753-blog-105145955.pc_relevant_default&utm_relevant_index=1

你可能感兴趣的:(pytorch,pytorch,深度学习,python)