You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PyTorch中生成单块含多个值的棋盘格图案

PyTorch 生成自定义块大小的棋盘格

核心实现靠张量广播和取模运算,和numpy简洁实现的逻辑一致,全原生PyTorch操作,无循环,支持自动微分。

对应你给出的2x2方块、4行6列的示例,直接运行下面的代码就能得到完全匹配的结果:

import torch

# 可自定义的参数
block_size = 2  # 每个棋盘方块的边长
grid_h, grid_w = 4, 6  # 最终输出棋盘的高、宽

# 坐标分块:同一块内的坐标整除块大小后得到相同索引
y_idx = torch.arange(grid_h) // block_size
x_idx = torch.arange(grid_w) // block_size

# 广播相加后对2取模,得到交替的0/1棋盘
checkerboard = (y_idx[:, None] + x_idx[None, :]) % 2

打印checkerboard的输出正好和示例一致:

tensor([[1, 1, 0, 0, 1, 1],
        [1, 1, 0, 0, 1, 1],
        [0, 0, 1, 1, 0, 0],
        [0, 0, 1, 1, 0, 0]])

自定义调整说明

  • 调整方块大小:直接修改block_size的值即可,比如设为3就能生成每个方块为3x3大小的棋盘。
  • 翻转棋盘起始值:对结果做取反1 - checkerboard,就能把左上角块从1变成0,实现整体翻转。
  • 替换方块内的填充值:如果不需要0/1填充,用torch.where做映射即可,比如要让块交替填充3和9:
    custom_checker = torch.where(checkerboard.bool(), 9, 3)
    
  • 适配深度学习张量格式:如果需要BCHW(批量-通道-高-宽)格式的输入,直接用unsqueeze拓展对应维度即可,不会破坏棋盘的块结构。

内容的提问来源于stack exchange,提问作者John M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:27:24