torch.tile 手动实现 kron+矩阵乘法

文章目录

  • [1. tile](#1. tile)
  • [2. pytorch](#2. pytorch)

1. tile

torch.tile 是对矩阵进行指定维度的复制数据,为了实现矩阵复制,使用kron 算子将对角矩阵I 复制后形成基于行变换和列变换的矩阵

2. pytorch

python 复制代码
import torch
import torch.nn as nn
import torch.nn.functional as F

torch.set_printoptions(precision=3, sci_mode=False)

if __name__ == "__main__":
    run_code = 0
    a_matrix = torch.randn(2, 3)
    dim0 = 4
    dim1 = 3
    tile_matrix = torch.tile(a_matrix, dims=(dim0, dim1))
    print(f"a_matrix.shape=\n{a_matrix.shape}")
    print(f"tile_matrix.shape=\n{tile_matrix.shape}")
    print(f"a_matrix=\n{a_matrix}")
    print(f"tile_matrix=\n{tile_matrix}")
    my_one = torch.zeros(2 * dim0, 2)
    my_one[0::2, 0] = 1
    my_one[1::2, 1] = 1
    print(f"my_one=\n{my_one}")
    a_one = torch.ones(2).reshape(-1, 1)
    a_row = torch.eye(2)
    a_kron = torch.kron(a_one, a_row)
    print(f"a_kron=\n{a_kron}")
    a_co_one = torch.ones(3).reshape(1, -1)
    a_column = torch.eye(3)
    b_kron = torch.kron(a_co_one, a_column)
    print(f"b_kron=\n{b_kron}")
    my_one_result = my_one @ a_matrix @ b_kron
    print(f"my_one_result=\n{my_one_result}")
    m_check_result = torch.allclose(my_one_result,tile_matrix)
    print(f"m_check_result={m_check_result}")
  • 结果:
python 复制代码
a_matrix.shape=
torch.Size([2, 3])
tile_matrix.shape=
torch.Size([8, 9])
a_matrix=
tensor([[0.340, 0.766, 0.622],
        [0.366, 1.425, 0.886]])
tile_matrix=
tensor([[0.340, 0.766, 0.622, 0.340, 0.766, 0.622, 0.340, 0.766, 0.622],
        [0.366, 1.425, 0.886, 0.366, 1.425, 0.886, 0.366, 1.425, 0.886],
        [0.340, 0.766, 0.622, 0.340, 0.766, 0.622, 0.340, 0.766, 0.622],
        [0.366, 1.425, 0.886, 0.366, 1.425, 0.886, 0.366, 1.425, 0.886],
        [0.340, 0.766, 0.622, 0.340, 0.766, 0.622, 0.340, 0.766, 0.622],
        [0.366, 1.425, 0.886, 0.366, 1.425, 0.886, 0.366, 1.425, 0.886],
        [0.340, 0.766, 0.622, 0.340, 0.766, 0.622, 0.340, 0.766, 0.622],
        [0.366, 1.425, 0.886, 0.366, 1.425, 0.886, 0.366, 1.425, 0.886]])
my_one=
tensor([[1., 0.],
        [0., 1.],
        [1., 0.],
        [0., 1.],
        [1., 0.],
        [0., 1.],
        [1., 0.],
        [0., 1.]])
a_kron=
tensor([[1., 0.],
        [0., 1.],
        [1., 0.],
        [0., 1.]])
b_kron=
tensor([[1., 0., 0., 1., 0., 0., 1., 0., 0.],
        [0., 1., 0., 0., 1., 0., 0., 1., 0.],
        [0., 0., 1., 0., 0., 1., 0., 0., 1.]])
my_one_result=
tensor([[0.340, 0.766, 0.622, 0.340, 0.766, 0.622, 0.340, 0.766, 0.622],
        [0.366, 1.425, 0.886, 0.366, 1.425, 0.886, 0.366, 1.425, 0.886],
        [0.340, 0.766, 0.622, 0.340, 0.766, 0.622, 0.340, 0.766, 0.622],
        [0.366, 1.425, 0.886, 0.366, 1.425, 0.886, 0.366, 1.425, 0.886],
        [0.340, 0.766, 0.622, 0.340, 0.766, 0.622, 0.340, 0.766, 0.622],
        [0.366, 1.425, 0.886, 0.366, 1.425, 0.886, 0.366, 1.425, 0.886],
        [0.340, 0.766, 0.622, 0.340, 0.766, 0.622, 0.340, 0.766, 0.622],
        [0.366, 1.425, 0.886, 0.366, 1.425, 0.886, 0.366, 1.425, 0.886]])
m_check_result=True
相关推荐
万俟淋曦1 分钟前
【论文速递】2026年第02周(Jan-04-10)(Robotics/Embodied AI/LLM)
人工智能·深度学习·机器人·大模型·论文·robotics·具身智能
apcipot_rain16 分钟前
计科八股20260530——文本输入模型步骤、CNN权重共享、Resnet、Transformer、RNN
人工智能·深度学习·神经网络·数学建模·自然语言处理
bonechips2 小时前
深入理解 JavaScript的历史包袱——变量提升(Hoisting)
javascript·深度学习
春日见3 小时前
五分钟入门 强化学习---Q-Learning算法与实现
人工智能·python·深度学习·算法·机器学习·计算机视觉
多年小白3 小时前
【周末消息】2026年5月30日-6月1日
大数据·人工智能·深度学习·机器学习·金融
weixin_468466853 小时前
图像连通域分析新手实战指南
图像处理·人工智能·深度学习·ai·机器视觉·连通域
硅谷秋水4 小时前
世界动作模型:具身智能的下一前沿
大数据·人工智能·深度学习·计算机视觉·语言模型·机器人
大江东去浪淘尽千古风流人物6 小时前
【HaMeR】全Transformer架构的单目3D手部网格重建:ViT-H骨干+跨注意力MANO解码器源码深度解析
深度学习·3d·transformer·vit·手部重建·mano
钓了猫的鱼儿6 小时前
基于深度学习+AI的红外电力设备故障目标检测与预警系统(Python源码+数据集+UI可视化界面+YOLOv11训练结果)
人工智能·深度学习·目标检测
LaughingZhu6 小时前
Product Hunt 每日热榜 | 2026-05-30
人工智能·经验分享·深度学习·神经网络·产品运营