当前位置:网站首页>torch.tensor拼接与list(tensors)
torch.tensor拼接与list(tensors)
2022-06-25 12:10:00 【燕策西】
tensor&list[tensors]
Construct list(tensors)
创建一个包含张量的列表,以及2个张量如下:
import toroch
a = [torch.tensor([[0.7, 0.3], [0.2, 0.8]]),
torch.tensor([[0.5, 0.9], [0.5, 0.5]])]
b = torch.tensor([[0.1, 0.9], [0.3, 0.7]])
c = torch.tensor([[0.1, 0.9, 0.5], [0.3, 0.7, 0.0]])
To stack list(tensors)
堆叠之前对stack函数做一点说明。Stack操作,先升维,再扩增。参考stack与cat。对张量进行堆叠操作,要求张量的shape一致:
stack1 = torch.stack(a) # default: dim=0, [2, 2, 2]
print(stack1)
stack2 = torch.stack((stack1, b), 0)
print(stack2)
output:
tensor([[[0.7000, 0.3000],
[0.2000, 0.8000]],
[[0.5000, 0.9000],
[0.5000, 0.5000]]])
RuntimeError:
stack expects each tensor to be equal size, but got [2, 2, 2] at entry 0 and [2, 2] at entry 1
To concatenate list(tensors)
c = torch.cat([torch.stack(a), b[None]], 0)
# (2, 2, 2), (1, 2, 2) ⇒ (3, 2, 2)
print(c)
Output:
tensor([
[[0.7000, 0.3000],
[0.2000, 0.8000]],
[[0.5000, 0.9000],
[0.5000, 0.5000]],
[[0.1000, 0.9000],
[0.3000, 0.7000]]])
但是,如果要使用stack替代上述cat操作,则会报错,因为stack要求两个输入的shape完全相同,而cat允许非拼接部分不同。除了torch.cat以外,也可以使用list.append完成以上操作。
a.append(b)
print(a)
a.append(c)
print(a)
[tensor([[0.7000, 0.3000],[0.2000, 0.8000]]),
tensor([[0.5000, 0.9000], [0.5000, 0.5000]]),
tensor([[0.1000, 0.9000], [0.3000, 0.7000]])]
[tensor([[0.7000, 0.3000], [0.2000, 0.8000]]),
tensor([[0.5000, 0.9000], [0.5000, 0.5000]]),
tensor([[0.1000, 0.9000], [0.3000, 0.7000]]),
tensor([[0.1000, 0.9000, 0.5000],
[0.3000, 0.7000, 0.0000]])]
注意到,list.append()不仅可以堆叠同形状的tensors,而且可以容纳不同shape的tensor,是一个tensor容器!但是本人在使用过程中出现了以下 low-level 错误,请读者谨防:
d = []
d.append(a), d.append(b)
print(d)
e = a.append(b)
print(e) # 空的!
Output:
[[tensor([[0.7000, 0.3000],
[0.2000, 0.8000]]), tensor([[0.5000, 0.9000],
[0.5000, 0.5000]])], tensor([[0.1000, 0.9000],
[0.3000, 0.7000]])]
None
list_x.append 过程中不会返回新的东西,只能从list_x中获取。
完结,撒花。
边栏推荐
- Installation and removal of MySQL under Windows
- Record a debugging when curl has no return value
- Go novice exploration road 2
- Common software numerical filtering methods (I) have been applied
- 2022 Baidu collection batch automatic push assistant
- Navicat premium view password scheme
- ECSHOP commodity wholesale multi attribute multi specification multi inventory batch purchase ECSHOP wholesale plug-in ECSHOP multi attribute order
- Slice and slice methods of arrays in JS
- Slice() and slice() methods of arrays in JS
- Polling and long polling
猜你喜欢

QT TCP UDP network communication < theory >

Go novice exploration road 2

Guess Tongyuan B

Three jobs! You can learn this from me (attached with graduation vlog)

为何数据库也云原生了?

顺序表的折半查找法

Navicat premium view password scheme

(3) Pyqt5 tutorial -- > signal and slot preliminary test

架构师必备的七种能力

Today, I will explain to you what is DFI and its development prospects
随机推荐
Render values to corresponding text
Execution order of MySQL query statements join, on and where
Laravel echart statistical chart line chart
Navicat premium view password scheme
3+1保障:高可用系统稳定性是如何炼成的?
JS function exercises
High imitation blue playing network disk file sharing to make money network disk PHP system source code
JS uses the for loop in the function to insert and delete the array at the specified position
Figure explanation of fiborache sequence
JQ dynamic setting radio does not take effect when selected
ECSHOP product attribute color specification size stock item No. automatic combination
Penetration tool environment - Installation of sqlmap
When MySQL queries fields in JSON format, it takes a property value of JSON data
Slice and slice methods of arrays in JS
Go from 0 to 1. Obtain the installation package, get, post request, params, body and other parameters
三入职场!你可以从我身上学到这些(附毕业Vlog)
Fun pocket mall -- sharing the development source code of fun pocket app system
Install MySQL client
Installation and removal of MySQL under Windows
Go defer little knowledge