Flatten()
运算符将展开从最后一个维度开始的值(至少对于Theano,这是“通道优先”,而不是像TF的“通道最后”。我无法在我的环境中运行TensorFlow)。这等效于numpy.reshape
'排序:
“ C”表示使用类似C的索引顺序读取/写入元素,最后一个轴索引更改最快,回到第一个轴索引更改最慢。
这是一个使用Keras Functional API的Flatten
运算符的独立示例。您应该能够轻松适应您的环境。
import numpy as np
from keras.layers import Input, Flatten
from keras.models import Model
inputs = Input(shape=(3,2,4))
# Define a model consisting only of the Flatten operation
prediction = Flatten()(inputs)
model = Model(inputs=inputs, outputs=prediction)
X = np.arange(0,24).reshape(1,3,2,4)
print(X)
#[[[[ 0 1 2 3]
# [ 4 5 6 7]]
#
# [[ 8 9 10 11]
# [12 13 14 15]]
#
# [[16 17 18 19]
# [20 21 22 23]]]]
model.predict(X)
#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.]], dtype=float32)
0
我正在使用TensorFlow后端。
我依次应用卷积,最大池化,展平和密集层。卷积需要3D输入(高度,宽度,color_channels_depth)。
卷积后,该值变为(高度,宽度,Number_of_filters)。
应用最大池化后,高度和宽度会发生变化。但是,在应用平坦层之后,究竟会发生什么?例如,如果扁平化之前的输入为(24,24,32),那么如何扁平化呢?
它是按顺序(24 * 24)顺序排列还是按其他方式按顺序排列每个过滤器编号的高度,重量?实际值将是一个示例。