1.目的
神经网络中对数据处理一般有求和,求均值等操作,这就需要用到sum、softmax和mean等函数,而这些函数中一般都有设置处理维度axis的参数选择。
2.设置
1.不作axis设置sum和mean等函数会对整个数据做相应操作,具体如下:
import numpy as np
import keras.backend as k
constant = np.array([[1, 2, 3], [2, 2, 3], [3, 2, 3]])
print(constant)
constant = k.constant(constant, dtype='float32')
constant_sum = k.sum(constant, keepdims=True)
print(k.eval(constant_sum))
结果如下:
2.axis=0,这里以二维数据为例,那么对每一列上的数据作该函数操作,如下
constant = np.array([[1, 2, 3], [2, 2, 3], [3, 2, 3]])
print(constant)
constant = k.constant(constant, dtype='float32')
constant_mean = k.mean(constant, axis=0, keepdims=True)
print(k.eval(constant_mean))
可以明显看到其对每一列做了求均值操作,这里的keepdims参数设置为True会使结果以二维数据的形式返回,否则会以一维向量的形式返回。
3.axis=1,在每一行上做操作,如下:
4.总结一下小技巧
一般在做些操作时,都是使处理后数据的维度不可变,即keepdims=True.那么举一个例子,对于二维数据(2,3)如果axis=0,即在第一维度上做相应的操作,那么操作完后的数据维度一定是(1,3),即你在哪一维度上做操作,该维度的shape=1,其他维度不变。同理对于一个三维数据(2,2,3),axis=1,keepdims=True,那么操作后的维度为(2,1,3)。