[source]

TimeDistributed

keras.layers.TimeDistributed(layer)

该包装器将一层应用于输入的每个时间片.

输入至少应为3D,索引一的维度将被视为时间维度.

考虑一批32个样本,其中每个样本都是10个16维向量的序列. 该层的批输入形状则为(32, 10, 16) input_shape ,不包括样本尺寸的input_shape(10, 16) input_shape (10, 16) .

然后,您可以使用TimeDistributedDense图层分别应用于10个时间步长中的每一个:

# as the first layer in a model
model = Sequential()
model.add(TimeDistributed(Dense(8), input_shape=(10, 16)))
# now model.output_shape == (None, 10, 8)

输出将具有形状(32, 10, 8) .

在随后的层中,不需要input_shape

model.add(TimeDistributed(Dense(32)))
# now model.output_shape == (None, 10, 32)

然后,输出将具有形状(32, 10, 32) .

TimeDistributed可以用于任意层,而不仅限于Dense ,例如可以用于Conv2D层:

model = Sequential()
model.add(TimeDistributed(Conv2D(64, (3, 3)),
                          input_shape=(10, 299, 299, 3)))

Arguments

  • layer :一个图层实例.

[source]

Bidirectional

keras.engine.base_layer.wrapped_fn()

RNN的双向包装.

Arguments

  • layer: Recurrent instance.
  • merge_mode :前向和后向RNN的输出将被组合的模式. {'sum','mul','concat','ave',None}中的一个. 如果为None,则将不合并输出,它们将作为列表返回.
  • 权重 :双向模型中要加载的初始权重

Raises

  • ValueError :如果无效的merge_mode参数.

Examples

model = Sequential()
model.add(Bidirectional(LSTM(10, return_sequences=True),
                        input_shape=(5, 10)))
model.add(Bidirectional(LSTM(10)))
model.add(Dense(5))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')