axis用来为超过一维的数组定义属性。二维数据拥有两个轴:第0轴沿着行的方向垂直向下,第1轴沿着列的方向水平延申。1表示横轴,方向从左到右;0表示纵轴,方向从上到下。当axis=1时,数组的变化是横向的,体现出列的增加或者减少。反之,当axis=0时,数组的变化是纵向的,体现出行的增加或减少。
在这里补充axis = 2的情况,不讲解基础的概念,直接举例:
例如代码片段中,
```python
self.y_first_order = tf.nn.embedding_lookup(self.weights['feature_bias'], self.feat_index)
self.y_first_order = tf.reduce_sum(tf.multiply(self.y_first_order, feat_value), 2) #删除维度
self.y_first_order = tf.nn.dropout(self.y_first_order, self.dropout_keep_fm[0])
tf.reduce_sum便是在第三个维度上作乘法,其中self.y_first_orde和self.y_first_order的维度均是(batch_size、field_size、1),第三个维度相加是针对最深层的数字相加,由于第三个维度本身的维度就是1,因为不改变数据,同时维度减1,变为[(batch_size, field_size], 达到删除维度的作用
补充:
理解tf.reduce_sum中的reduce的含义,可以译为【归纳】
axis = 0是针对最浅层,也就是最外层3维数据的元素:二维矩阵的运算
axis = 1是针对中间层的二维矩阵中的一维列表做出的运算,
tf.sun_reduce函数可以引入到其他类似的函数