使用 Theano 后端的 Keras Flatten() 层行为不一致
Inconsistency in Keras Flatten() layer behavior using Theano Backend
我正在尝试了解 Keras
中 Flatten()
层与 Theano
后端的行为。我在两个不同的 Conda
环境中安装了两个不同版本的 Keras
。使用 Flatten()
展开 4D 张量的方式在这两个版本中有所不同,我完全不知道哪个是正确的。
我编写了以下两个代码片段来说明问题:
上面的代码首先沿 channels
轴展平输入矩阵
然而,在另一个版本中,结果是不同的:
以上代码首先沿 columns
轴展平输入矩阵。
有人可以解释一下吗?谢谢!
两者都是正确的。不同之处在于 image_data_format 设置。这可以在 keras.json 中或通过后端 API 设置。
>>> from keras import backend as K
>>> K.image_data_format()
'channels_first'
当格式为'channels_first'时,输出为
array([[ 0., 9., 18., 27., 1., 10., 19., 28., 2., 11., 20., 29., 3.,
12., 21., 30., 4., 13., 22., 31., 5., 14., 23., 32., 6., 15.,
24., 33., 7., 16., 25., 34., 8., 17., 26., 35.]], dtype=float32)
当格式为'channels_last'时,输出为
array([[ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 25.,
26., 27., 28., 29., 30., 31., 32., 33., 34., 35.]], dtype=float32)
我正在尝试了解 Keras
中 Flatten()
层与 Theano
后端的行为。我在两个不同的 Conda
环境中安装了两个不同版本的 Keras
。使用 Flatten()
展开 4D 张量的方式在这两个版本中有所不同,我完全不知道哪个是正确的。
我编写了以下两个代码片段来说明问题:
上面的代码首先沿 channels
轴展平输入矩阵
然而,在另一个版本中,结果是不同的:
以上代码首先沿 columns
轴展平输入矩阵。
有人可以解释一下吗?谢谢!
两者都是正确的。不同之处在于 image_data_format 设置。这可以在 keras.json 中或通过后端 API 设置。
>>> from keras import backend as K
>>> K.image_data_format()
'channels_first'
当格式为'channels_first'时,输出为
array([[ 0., 9., 18., 27., 1., 10., 19., 28., 2., 11., 20., 29., 3.,
12., 21., 30., 4., 13., 22., 31., 5., 14., 23., 32., 6., 15.,
24., 33., 7., 16., 25., 34., 8., 17., 26., 35.]], dtype=float32)
当格式为'channels_last'时,输出为
array([[ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 25.,
26., 27., 28., 29., 30., 31., 32., 33., 34., 35.]], dtype=float32)