0 flatten neural-network keras keras-layer
我正在用顺序模型研究keras。
model = Sequential()
model.add(Embedding(max_features, 128, input_length=text_max_words))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
Run Code Online (Sandbox Code Playgroud)
Flatten在这里做什么?
看一下相关文档,其中包含一个很好的示例:
model = Sequential()
model.add(Conv2D(64, 3, 3,
border_mode='same',
input_shape=(3, 32, 32)))
Run Code Online (Sandbox Code Playgroud)
之前:model.output_shape == (None, 64, 32, 32)
model.add(Flatten())
Run Code Online (Sandbox Code Playgroud)
之后:model.output_shape == (None, 65536)
解释最终形状:
None 就像一个空的占位符,它将等待一批的大小65536是在输入尺寸上展平的结果:
`64 * 32 * 32 == 65536 # True`
Run Code Online (Sandbox Code Playgroud)它类似于flatten()NumPy 的功能。这是一个迷你示例:
In [1]: import numpy as np
In [2]: A = np.random.randint(low=0, high=10, size=(3, 3))
In [3]: A
Out[3]:
array([[9, 6, 5],
[3, 4, 6],
[6, 7, 9]])
Run Code Online (Sandbox Code Playgroud)
现在执行展平操作:
In [4]: A.flatten()
Out[4]: array([9, 6, 5, 3, 4, 6, 6, 7, 9])
Run Code Online (Sandbox Code Playgroud)
因此,我们可以看到矩阵(又称第二张量)已经变平,这里是逐行的。
| 归档时间: |
|
| 查看次数: |
1746 次 |
| 最近记录: |