TensorFlow,tf.one_hot为什么输出的形状由轴的值定义?
我读了这本书,发现 。新轴是在尺寸轴处创建的(默认值:新轴附加在末端) 新轴是什么 如果索引是长度特征向量,则输出形状为: 如果轴==-1,特征x深度 如果轴==0,深度x特征 如果索引是具有形状[批次,特征]的矩阵(批次),则输出形状为: 如果轴==-1,批次x特征x深度 如果轴==1,则批次x深度x特征 如果轴==0,深度x批次x特征 为什么输出的形状由轴定义TensorFlow,tf.one_hot为什么输出的形状由轴的值定义?,tensorflow,Tensorflow,我读了这本书,发现 。新轴是在尺寸轴处创建的(默认值:新轴附加在末端) 新轴是什么 如果索引是长度特征向量,则输出形状为: 如果轴==-1,特征x深度 如果轴==0,深度x特征 如果索引是具有形状[批次,特征]的矩阵(批次),则输出形状为: 如果轴==-1,批次x特征x深度 如果轴==1,则批次x深度x特征 如果轴==0,深度x批次x特征 为什么输出的形状由轴定义 tf.one_hot()转换索引列表(例如[0,2,1])并将其转换为长度深度的一个热向量列表 例如,如果depth=3 输入中的
tf.one_hot()
转换索引列表(例如[0,2,1]
)并将其转换为长度深度
的一个热向量列表
例如,如果depth=3
- 输入中的索引0将替换为[1,0,0]
- 输入中的索引1将替换为[0,1,0]
- 输入中的索引2将替换为[0,0,1]
[0,2,1]
将被编码为[[1,0,0],[0,0,1],[0,1,0]]
如您所见,输出比输入多了一个维度(因为每个索引都被一个向量替换)
默认情况下(和您通常需要的,),新维度将作为最后一个维度创建,因此如果您的输入是形状(d1,d2,…,dn)
,您的输出将是形状(d1,d2,…,dn,depth)
。但如果更改输入参数轴,则可以选择将新尺寸标注放在其他位置,例如,如果轴=0
,则输出的形状将为(深度,d1,d2,…,dn)
更改维度的顺序基本上是n维版本的转置:您拥有相同的数据,但切换索引的顺序以访问它们(相当于切换2D矩阵中的列和行)。因为
如果输入索引为秩n,则输出将为秩n+1。
,轴的值是输出深度的索引