Keras规范化轴参数是什么意思?

6
我是一名深度学习的初学者,目前正在使用Keras处理mnist数据集。
我采用了标准化方法:
tf.keras.utils.normalize(x_train, axis = 1)

我不理解轴参数的含义。你能帮我解释一下吗?
2个回答

6
normalize函数只是执行常规的标准化以提高性能:
标准化是将数据从原始范围重新缩放,使所有值都在0和1的范围内。
另一篇文章中有一个很好的关于axis参数的解释:
令人愉快的是:keras.argmax中axis=-1的含义是什么? 例如:
您的数据具有某种形状(19,19,5,80)。这意味着:
轴=0-19个元素
轴=1-19个元素
轴=2-5个元素
轴=3-80个元素
此外,对于那些想要深入了解的人,Keras作者François Chollet在GitHub上进行了解释。
对于密集层、所有RNN层以及大多数其他类型的层,默认的axis=-1是您应该使用的;对于dim_ordering="th"(默认值)的Convolution2D层,请使用axis=1;对于dim_ordering="tf"的Convolution2D层,请使用axis=-1(即默认值)。 https://github.com/fchollet/keras/issues/1921

快速跟进一下,我正在尝试使用两个通道对频谱图进行深度学习。我有一个形状为(50, 50, 60, 2)的张量。我想要归一化每个频谱图和每个通道(所以沿着(:,50,60,:)轴)。当我执行normalize(tens[: , :, :, 0], axis=0)[0][0] == normalize(tens[0, :, :, 0])[0]时,我得到了所有False。为什么会这样?它们不应该是相同的吗? - Travasaurus

3

keras.utils.normalize() 函数调用 numpy.linalg.norm() 来计算范数并对输入数据进行归一化处理。给定的 axis 参数因此被传递到 norm() 函数中,以沿着给定轴计算范数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接