高性能网站建设在线阅读,深圳最好的营销网站建设公司排名,wordpress阿里云储存,郴州网站推广拼接
维度顺序#xff1a;对于 3D 张量#xff0c;通常可以理解为 (深度, 行, 列) 或 (批次, 行, 列)。 选择一个dim进行拼接的时候其他两个维度大小要相等
对于三维张量#xff0c;理解 torch.cat 的 dim 参数确实变得更加抽象#xff0c;但原理是相同的。让我们通过一…拼接
维度顺序对于 3D 张量通常可以理解为 (深度, 行, 列) 或 (批次, 行, 列)。 选择一个dim进行拼接的时候其他两个维度大小要相等
对于三维张量理解 torch.cat 的 dim 参数确实变得更加抽象但原理是相同的。让我们通过一个具体的例子来说明这一点。
import torch# 创建两个 3D 张量
a torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
b torch.tensor([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])print(Tensor a shape:, a.shape)
print(a)
print(\nTensor b shape:, b.shape)
print(b)# dim0 连接
c_dim0 torch.cat([a, b], dim0)
print(\nResult of torch.cat([a, b], dim0):)
print(Shape:, c_dim0.shape)
print(c_dim0)# dim1 连接
c_dim1 torch.cat([a, b], dim1)
print(\nResult of torch.cat([a, b], dim1):)
print(Shape:, c_dim1.shape)
print(c_dim1)# dim2 连接
c_dim2 torch.cat([a, b], dim2)
print(\nResult of torch.cat([a, b], dim2):)
print(Shape:, c_dim2.shape)
print(c_dim2)
现在让我们详细解释这个三维张量的例子 初始张量 a 和 b 都是形状为 (2, 2, 2) 的 3D 张量。可以将它们想象成两个 2x2 的矩阵堆叠在一起。 dim0 连接 结果形状(4, 2, 2)这相当于在第一个维度上堆叠张量。可以理解为将 b 放在 a 的下面增加了第一个维度的大小。 dim1 连接 结果形状(2, 4, 2)这相当于在第二个维度上堆叠张量。可以理解为在每个 2x2 矩阵的行方向上扩展将 b 的行添加到 a 的每个对应部分的下方。 dim2 连接 结果形状(2, 2, 4)这相当于在第三个维度最内层上堆叠张量。可以理解为在每个 2x2 矩阵的列方向上扩展将 b 的列添加到 a 的每个对应部分的右侧。
理解三维张量 torch.cat 的关键点 维度顺序对于 3D 张量通常可以理解为 (深度, 行, 列) 或 (批次, 行, 列)。 dim0增加深度或批次的数量。 dim1增加每个深度层或批次中的行数。 dim2增加每行中的元素数量列数。 保持其他维度除了被连接的维度其他维度的大小保持不变。 形状变化只有指定的 dim 对应的维度大小会改变增加其他维度大小保持不变。 一致性要连接的张量在非连接维度上的大小必须相同。
3D Matrix Visualization
Let’s visualize the 3D matrices a and b, and their concatenation results.
Matrix a (2x2x2):
Depth 0: Depth 1:
------ ------
| 1 | 2 | | 5 | 6 |
------ ------
| 3 | 4 | | 7 | 8 |
------ ------Matrix b (2x2x2):
Depth 0: Depth 1:
-------- --------
| 9 | 10 | | 13 | 14 |
-------- --------
| 11 | 12 | | 15 | 16 |
-------- --------Concatenation Results:
dim0 (4x2x2):
Depth 0: Depth 1: Depth 2: Depth 3:
------ ------ -------- --------
| 1 | 2 | | 5 | 6 | | 9 | 10 | | 13 | 14 |
------ ------ -------- --------
| 3 | 4 | | 7 | 8 | | 11 | 12 | | 15 | 16 |
------ ------ -------- --------dim1 (2x4x2):
Depth 0: Depth 1:
------ ------
| 1 | 2 | | 5 | 6 |
------ ------
| 3 | 4 | | 7 | 8 |
------ ------
| 9 | 10 | | 13| 14|
------ ------
| 11| 12 | | 15| 16|
------ ------dim2 (2x2x4):
Depth 0: Depth 1:
------------ ------------
| 1 | 2 | 9 | 10| | 5 | 6 | 13| 14|
------------ ------------
| 3 | 4 | 11| 12| | 7 | 8 | 15| 16|
------------ ------------当然可以让我们通过具体的例子来形象地解释不同维度上的拼接。
定义张量
首先定义三个张量 x, y, z它们分别具有如下形状
x 的形状是 [2, 1, 3]y 的形状是 [2, 3, 3]z 的形状是 [2, 2, 3]
import torchx torch.tensor([[[0, 0, 0]], [[0, 0, 0]]])
y torch.tensor([[[0, 0, 0], [0, 0, 0], [0, 0, 0]],[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
])
z torch.tensor([[[0, 0, 0], [0, 0, 0]],[[0, 0, 0], [0, 0, 0]]
])1 在 dim0 上拼接
在 dim0 上拼接相当于增加“深度”或“批次”的数量。每个张量的“深度”都会堆叠起来。
w_dim0 torch.cat([x, y, z], dim0)
print(w_dim0.shape)形象解释
x:
[[[0, 0, 0]], # 第一层深度[[0, 0, 0]] # 第二层深度
]y:
[[[0, 0, 0], [0, 0, 0], [0, 0, 0]], # 第一层深度[[0, 0, 0], [0, 0, 0], [0, 0, 0]] # 第二层深度
]z:
[[[0, 0, 0], [0, 0, 0]], # 第一层深度[[0, 0, 0], [0, 0, 0]] # 第二层深度
]拼接结果 w_dim0:
[[[0, 0, 0]], # x 第一层深度[[0, 0, 0]], # x 第二层深度[[0, 0, 0], [0, 0, 0], [0, 0, 0]], # y 第一层深度[[0, 0, 0], [0, 0, 0], [0, 0, 0]], # y 第二层深度[[0, 0, 0], [0, 0, 0]], # z 第一层深度[[0, 0, 0], [0, 0, 0]] # z 第二层深度
]形状[6, 3, 3]
2dim1 上拼接
在 dim1 上拼接相当于增加每个“深度”层中的行数。每个深度层的行数会拼接起来。
w_dim1 torch.cat([x, y, z], dim1)
print(w_dim1.shape)形象解释
x:
[[[0, 0, 0]], # 第一层深度的第一行[[0, 0, 0]] # 第二层深度的第一行
]y:
[[[0, 0, 0], [0, 0, 0], [0, 0, 0]], # 第一层深度的三行[[0, 0, 0], [0, 0, 0], [0, 0, 0]] # 第二层深度的三行
]z:
[[[0, 0, 0], [0, 0, 0]], # 第一层深度的两行[[0, 0, 0], [0, 0, 0]] # 第二层深度的两行
]拼接结果 w_dim1:
[[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]], # 第一层深度的六行[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] # 第二层深度的六行
]形状[2, 6, 3]
当然可以为了展示如何在 dim2第三个维度上拼接张量我们需要确保这些张量在前两个维度上的大小是相同的而在第三个维度上的大小可以不同。
假设我们定义三个张量 a, b, c它们分别具有如下形状
a 的形状是 [2, 2, 2]b 的形状是 [2, 2, 3]c 的形状是 [2, 2, 1]
import torcha torch.tensor([[[1, 2], [3, 4]],[[5, 6], [7, 8]]
])b torch.tensor([[[9, 10, 11], [12, 13, 14]],[[15, 16, 17], [18, 19, 20]]
])c torch.tensor([[[21], [22]],[[23], [24]]
])3在 dim2 上拼接
在 dim2 上拼接相当于增加每行中的元素数量列数。每个深度层中的列数会拼接起来
w_dim2 torch.cat([a, b, c], dim2)
print(w_dim2)
print(w_dim2.shape)形象解释
a:
[[[1, 2], [3, 4]], # 第一层深度的两行两列[[5, 6], [7, 8]] # 第二层深度的两行两列
]b:
[[[9, 10, 11], [12, 13, 14]], # 第一层深度的两行三列[[15, 16, 17], [18, 19, 20]] # 第二层深度的两行三列
]c:
[[[21], [22]], # 第一层深度的两行一列[[23], [24]] # 第二层深度的两行一列
]拼接结果 w_dim2:
[[[1, 2, 9, 10, 11, 21], [3, 4, 12, 13, 14, 22]], # 第一层深度的两行六列[[5, 6, 15, 16, 17, 23], [7, 8, 18, 19, 20, 24]] # 第二层深度的两行六列
]w_dim2 的形状为[2, 2, 6]通过在 dim2 上拼接结果张量 w_dim2 的第三个维度是各个张量第三个维度的和2 3 1 6。
# 代码输出
# tensor([[[ 1, 2, 9, 10, 11, 21],
# [ 3, 4, 12, 13, 14, 22]],
#
# [[ 5, 6, 15, 16, 17, 23],
# [ 7, 8, 18, 19, 20, 24]]])
#
# 形状: torch.Size([2, 2, 6])希望这个例子能帮助你更好地理解如何在 dim2 上拼接张量。 非常好的问题让我们用书架的比喻来解释这个例子这将有助于更直观地理解张量的维度。
在这个比喻中
dim0第一个维度代表书架的数量dim1第二个维度代表每个书架的层板数dim2第三个维度代表每个层板可以放置的书本数量即层板的宽度
让我们用这个比喻来解释 a, b, 和 c 这三个张量 张量 a [2, 2, 2]: 2个书架每个书架有2层层板每个层板可以放2本书 张量 b [2, 2, 3]: 2个书架每个书架有2层层板每个层板可以放3本书 张量 c [2, 2, 1]: 2个书架每个书架有2层层板每个层板可以放1本书
当我们在 dim2 上拼接这些张量时相当于我们在不改变书架数量和层板数量的情况下将每个层板变宽使其可以容纳更多的书。
拼接后的结果 w_dim2 [2, 2, 6]:
仍然是2个书架dim0 没变每个书架仍然有2层层板dim1 没变但是现在每个层板可以放6本书了dim2 变成了 2316
形象地说
原来的书架 a: 原来的书架 b: 原来的书架 c:
[□□] [□□□] [□]
[□□] [□□□] [□][□□] [□□□] [□]
[□□] [□□□] [□]拼接后的新书架 w_dim2:
[□□□□□□] (231 6本书)
[□□□□□□][□□□□□□]
[□□□□□□]每个 □ 代表一本书或者说张量中的一个元素。
这个比喻展示了我们如何在不增加书架数量dim0或层板数量dim1的情况下通过拼接来增加每个层板可以放置的书本数量dim2。这就是在 dim2 上进行张量拼接的直观理解。 文章转载自: http://www.morning.tdzxy.cn.gov.cn.tdzxy.cn http://www.morning.pqfbk.cn.gov.cn.pqfbk.cn http://www.morning.cjmmt.cn.gov.cn.cjmmt.cn http://www.morning.ywxln.cn.gov.cn.ywxln.cn http://www.morning.pcngq.cn.gov.cn.pcngq.cn http://www.morning.gstmn.cn.gov.cn.gstmn.cn http://www.morning.sltfk.cn.gov.cn.sltfk.cn http://www.morning.egmux.cn.gov.cn.egmux.cn http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn http://www.morning.cwkcq.cn.gov.cn.cwkcq.cn http://www.morning.pzrpz.cn.gov.cn.pzrpz.cn http://www.morning.lkkkf.cn.gov.cn.lkkkf.cn http://www.morning.mlnzx.cn.gov.cn.mlnzx.cn http://www.morning.mhnb.cn.gov.cn.mhnb.cn http://www.morning.pwghp.cn.gov.cn.pwghp.cn http://www.morning.gypcr.cn.gov.cn.gypcr.cn http://www.morning.kfrhh.cn.gov.cn.kfrhh.cn http://www.morning.gqnll.cn.gov.cn.gqnll.cn http://www.morning.srbfz.cn.gov.cn.srbfz.cn http://www.morning.rpzth.cn.gov.cn.rpzth.cn http://www.morning.lmrcq.cn.gov.cn.lmrcq.cn http://www.morning.hgtr.cn.gov.cn.hgtr.cn http://www.morning.tsnmt.cn.gov.cn.tsnmt.cn http://www.morning.dfffm.cn.gov.cn.dfffm.cn http://www.morning.tnmmp.cn.gov.cn.tnmmp.cn http://www.morning.nqlcj.cn.gov.cn.nqlcj.cn http://www.morning.zcfmb.cn.gov.cn.zcfmb.cn http://www.morning.lwgsk.cn.gov.cn.lwgsk.cn http://www.morning.ygth.cn.gov.cn.ygth.cn http://www.morning.rnzbr.cn.gov.cn.rnzbr.cn http://www.morning.kszkm.cn.gov.cn.kszkm.cn http://www.morning.bpzw.cn.gov.cn.bpzw.cn http://www.morning.xsrnr.cn.gov.cn.xsrnr.cn http://www.morning.wxfgg.cn.gov.cn.wxfgg.cn http://www.morning.flfxb.cn.gov.cn.flfxb.cn http://www.morning.tbjtm.cn.gov.cn.tbjtm.cn http://www.morning.lylkh.cn.gov.cn.lylkh.cn http://www.morning.bqdgr.cn.gov.cn.bqdgr.cn http://www.morning.ctlbf.cn.gov.cn.ctlbf.cn http://www.morning.tqbyw.cn.gov.cn.tqbyw.cn http://www.morning.bqmsm.cn.gov.cn.bqmsm.cn http://www.morning.mpscg.cn.gov.cn.mpscg.cn http://www.morning.dqxph.cn.gov.cn.dqxph.cn http://www.morning.fpzpb.cn.gov.cn.fpzpb.cn http://www.morning.rxpp.cn.gov.cn.rxpp.cn http://www.morning.gcthj.cn.gov.cn.gcthj.cn http://www.morning.xmnlc.cn.gov.cn.xmnlc.cn http://www.morning.rxfjg.cn.gov.cn.rxfjg.cn http://www.morning.fkyqm.cn.gov.cn.fkyqm.cn http://www.morning.yrqb.cn.gov.cn.yrqb.cn http://www.morning.rlqwz.cn.gov.cn.rlqwz.cn http://www.morning.qxljc.cn.gov.cn.qxljc.cn http://www.morning.nrtpb.cn.gov.cn.nrtpb.cn http://www.morning.shxmr.cn.gov.cn.shxmr.cn http://www.morning.ntzbr.cn.gov.cn.ntzbr.cn http://www.morning.gydth.cn.gov.cn.gydth.cn http://www.morning.nnrqg.cn.gov.cn.nnrqg.cn http://www.morning.demoux.com.gov.cn.demoux.com http://www.morning.fnczn.cn.gov.cn.fnczn.cn http://www.morning.bpp999.com.gov.cn.bpp999.com http://www.morning.ykrck.cn.gov.cn.ykrck.cn http://www.morning.bloao.com.gov.cn.bloao.com http://www.morning.pflpb.cn.gov.cn.pflpb.cn http://www.morning.xdnhw.cn.gov.cn.xdnhw.cn http://www.morning.nqyzg.cn.gov.cn.nqyzg.cn http://www.morning.jcyyh.cn.gov.cn.jcyyh.cn http://www.morning.sjli222.cn.gov.cn.sjli222.cn http://www.morning.bpknt.cn.gov.cn.bpknt.cn http://www.morning.lhjmq.cn.gov.cn.lhjmq.cn http://www.morning.rykmz.cn.gov.cn.rykmz.cn http://www.morning.xhsxj.cn.gov.cn.xhsxj.cn http://www.morning.pzcqz.cn.gov.cn.pzcqz.cn http://www.morning.mpgfk.cn.gov.cn.mpgfk.cn http://www.morning.hkpn.cn.gov.cn.hkpn.cn http://www.morning.pbzlh.cn.gov.cn.pbzlh.cn http://www.morning.jbshh.cn.gov.cn.jbshh.cn http://www.morning.wnjwb.cn.gov.cn.wnjwb.cn http://www.morning.rywn.cn.gov.cn.rywn.cn http://www.morning.gqfks.cn.gov.cn.gqfks.cn http://www.morning.nmfwm.cn.gov.cn.nmfwm.cn