tensorflow维度理解

tensor维度本质就是逐层脱去括号。

脱第一层括号后,紧挨着的一层整体只有一个元素,故为1

脱掉第二层括号后,里面整体有三个元素,即三行

脱掉第四层,里面整体依然有三个元素,比如[1],[2],[3]

再往里面看,只有一个元素

故最后得到的是1*3*3*1。

越高层的维度在越里面,具体到深度学习里,如tf.nn.embedding_lookup(itememb, batchitem)。在embedding这一层的数据维度是最高的。在batch这一层的数据维度是最低的(axis=0)。举例:如果一个人有多个兴趣tag(最大个数为100),每个tag的embedding维度为32,训练时batch大小为1000,则tf.nn.embedding_lookup(itempref, batchpref)的维度shape为(1000,100,32)

关于reduce_xxx的维度问题

对于k维tensor,

tf.reduce_xxx(x, axis=k-1)的结果是对最里面一维所有元素进行求和。

tf.reduce_xxx(x, axis=k-2)是对倒数第二层里的向量对应的元素进行求和。

tf.reduce_xxx(x, axis=k-3)把倒数第三层的每个向量对应元素相加

拿reduce_mean做验证

[[[ 1. 1.]

  [ 2. 2.]]

 [[ 3. 3.]

  [ 4. 4.]]]

axis=2,做最内层计算,我们的最内层就是(1,1),(2,2),(3,3),(4,4),计算出来的就是

[[ 1. 2.] [ 3. 4.]]

axis=1,做倒数第二层计算

[[ 1.5 1.5] [ 3.5 3.5]]

axis=0,做倒数第三层计算

[[ 2. 2.] [ 3. 3.]]

发布了32 篇原创文章 · 获赞 8 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/lipku/article/details/103169833