ssg*_*ssg 16 neural-network keras tensorflow keras-layer
我正在使用tensorflow后端.
依次应用卷积,最大池化,展平和密集层.卷积需要3D输入(高度,宽度,color_channels_depth).
卷积后,它变为(高度,宽度,Number_of_filters).
应用最大池高后,宽度会发生变化.但在应用展平层后究竟发生了什么?例如.
如果在展平之前输入是(24,24,32)那么它如何变平呢?
对于高度,每个过滤器编号的重量是顺序还是以某种其他方式顺序(24*24)?一个例子将被实际值所赏识.
dhi*_*ley 32
该Flatten()运营商将展开在最后一个维度开始值(至少Theano,这是"渠道至上",而不是"渠道最后"像TF,我不能在我的环境中运行TensorFlow).这相当于numpy.reshape'C'排序:
"C"表示使用类似C的索引顺序读取/写入元素,最后一个轴索引变化最快,返回到第一个轴索引变化最慢.
这是一个独立的示例,用于说明 Flatten使用Keras Functional API的运算符.您应该能够轻松适应您的环境.
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)
Run Code Online (Sandbox Code Playgroud)
pro*_*sti 11
展平张量意味着删除除一个维度之外的所有维度。
Keras 中的 Flatten 层将张量重塑为与张量中包含的元素数量相等的形状。
这与制作一维元素数组相同。
例如在 VGG16 模型中,您可能会发现它很容易理解:
>>> model.summary()
Layer (type) Output Shape Param #
================================================================
vgg16 (Model) (None, 4, 4, 512) 14714688
________________________________________________________________
flatten_1 (Flatten) (None, 8192) 0
________________________________________________________________
dense_1 (Dense) (None, 256) 2097408
________________________________________________________________
dense_2 (Dense) (None, 1) 257
===============================================================
Run Code Online (Sandbox Code Playgroud)
注意 flatten_1 层的形状是 (None, 8192),其中 8192 实际上是 4*4*512。
PS,None 表示任何维度(或动态维度),但您通常可以将其读为 1。您可以在此处找到更多详细信息。
| 归档时间: |
|
| 查看次数: |
24039 次 |
| 最近记录: |