第33个方法
torch.hstack(tensors, *, out=None) → Tensor
此方法应该和前面的torch.dstack()对照起来看,前面的是在深度方向上进行叠加,而这个方法是在水平方向上进行叠加,首先看一下使用参数。
tensors
:要拼接的tensor序列。out
:输出tensor。
此方法对一维的tensor沿着第一维进行拼接,而对其它维度的tensor沿着第二维进行拼接。
首先来看一个例子:
>>> a = torch.tensor([1, 2, 3])
>>> b = torch.tensor([4, 5, 6])
>>> torch.hstack((a,b))
tensor([1, 2, 3, 4, 5, 6])
>>> a = torch.tensor([[1],[2],[3]])
>>> b = torch.tensor([[4],[5],[6]])
>>> torch.hstack((a,b))
tensor([[1, 4],
[2, 5],
[3, 6]])
可以看到,对于一维的tensor,确实是在水平方向直接进行了拼接。而在二维的tensor上是在第二个维度进行了拼接,接下里我们看在三维上的情况。
-
可以看到确实是对第二维进行了拼接,例如c中的
[[0.9646, 0.6254, 0.5185, 0.3193],
[0.3248, 0.8872, 0.1793, 0.6818],
[0.6927, 0.9157, 0.2554, 0.0317],
[0.3084, 0.6268, 0.0684, 0.9537],
[0.1824, 0.1292, 0.9219, 0.2265],
[0.0826, 0.5043, 0.2404, 0.3039]]
直接等于a中的第二维中的第一个元素:
[[0.9646, 0.6254, 0.5185, 0.3193],
[0.3248, 0.8872, 0.1793, 0.6818],
[0.6927, 0.9157, 0.2554, 0.0317]]
与b中的第二维中的第一个元素:
[[0.3084, 0.6268, 0.0684, 0.9537],
[0.1824, 0.1292, 0.9219, 0.2265],
[0.0826, 0.5043, 0.2404, 0.3039]]
直接进行拼接,以此类推。 -
所以此方法要求被拼接的tensors必须在第二个维度的长度相等,其余可以并且,并且在第二个维度上结果tensor的长度等于拼接tensors长度之和。
而在torch.dstack()
中,这个是在第三维进行的。