举一个三维张量吧
# 3行4列深度为2
const3 = tf.constant([
[[1,2],[3,4],[5,6],[7,8]],
[[11, 12], [13, 14], [15, 16], [17, 18]],
[[21, 22], [23, 24], [25, 26], [27, 28]]
],tf.float16)
shape = (3,4,2)
--借鉴博主奶油松果的图和代码
分析形状 (3, 4, 2)
-
最外层的括号(第一个维度):
const3
包含了三个子列表:[[1, 2], [3, 4], [5, 6], [7, 8]]
[[11, 12], [13, 14], [15, 16], [17, 18]]
[[21, 22], [23, 24], [25, 26], [27, 28]]
- 因此,第一个维度的大小是
3
,这代表张量的行数。
-
第二层的括号(第二个维度):
- 每个子列表又包含四个小列表:
[1, 2]
,[3, 4]
,[5, 6]
,[7, 8]
[11, 12]
,[13, 14]
,[15, 16]
,[17, 18]
[21, 22]
,[23, 24]
,[25, 26]
,[27, 28]
- 因此,第二个维度的大小是
4
,这代表每行的列数。
- 每个子列表又包含四个小列表:
-
最内层的括号(第三个维度):
- 每个小列表包含两个元素:
[1, 2]
[11, 12]
[21, 22]
- 因此,第三个维度的大小是
2
,这代表每个元素的深度。 可以看上边引用的图 的确是这样的哦
- 每个小列表包含两个元素:
形象化理解
可以把这个张量想象成一本书:
- 书本有3页(行数 = 3)
- 每页有4个段落(列数 = 4)
- 每个段落有2个句子(深度 = 2)
所以,整个张量的形状是 (3, 4, 2)
。
TRM
理解TRM中的 unsqueeze(1)了没,第二个维度(维度1)加上一列,那就是每个子列表里 又包含1个小列表
最外层的括号(第一个维度):
const3
包含了2个子列表: 那就是每个子列表里 又包含1个小列表 每个小列表包含5个元素