Keras官方中文文档:包装器Wrapper

Posted 5rjscn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keras官方中文文档:包装器Wrapper相关的知识,希望对你有一定的参考价值。

包装器Wrapper

TimeDistributed包装器

keras.layers.wrappers.TimeDistributed(layer)

该包装器可以把一个层应用到输入的每一个时间步上

参数

  • layer:Keras层对象

输入至少为3D张量,下标为1的维度将被认为是时间维

例如,考虑一个含有32个样本的batch,每个样本都是10个向量组成的序列,每个向量长为16,则其输入维度为(32,10,16),其不包含batch大小的input_shape(10,16)

我们可以使用包装器TimeDistributed包装Dense,以产生针对各个时间步信号的独立全连接:

# 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)

# subsequent layers: no need for input_shape
model.add(TimeDistributed(Dense(32)))
# now model.output_shape == (None, 10, 32)

程序的输出数据shape为(32,10,8)

使用TimeDistributed包装Dense严格等价于layers.TimeDistribuedDense。不同的是包装器TimeDistribued还可以对别的层进行包装,如这里对Convolution2D包装:

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

Bidirectional包装器

keras.layers.wrappers.Bidirectional(layer, merge_mode=‘concat‘, weights=None)

双向RNN包装器

参数

  • layer:Recurrent对象
  • merge_mode:前向和后向RNN输出的结合方式,为sum,mul,concat,aveNone之一,若设为None,则返回值不结合,而是以列表的形式返回

例子

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‘)

艾伯特(http://www.aibbt.com/)国内第一家人工智能门户

以上是关于Keras官方中文文档:包装器Wrapper的主要内容,如果未能解决你的问题,请参考以下文章

Wrapper 包装器

试图理解 Python 包装器

Keras 使用真实值作为训练目标的 LSTM 分类器的官方示例?

使用 pyjnius java wrapper 的 Python 蓝牙设备扫描

C# - 如何使用 Tesseract 3.0 Wrapper 获取每个字符的边界框?

对象的 C# 包装器