Python Keras:一个层输出与输入完全相同的东西

Posted

技术标签:

【中文标题】Python Keras:一个层输出与输入完全相同的东西【英文标题】:Python Keras: An layer output exactly the same thing as input 【发布时间】:2018-04-28 02:38:01 【问题描述】:

我正在使用 Keras 构建网络。在这个过程中,我需要一个层,它接受一个 LSTM 输入,什么都不做,只是输出与输入完全相同。即如果LSTM的每条输入记录都像[[A_t1, A_t2, A_t3, A_t4, A_t5, A_t6]],我正在寻找一个层:

model.add(SomeIdentityLayer(x))

SomeIdentityLayer(x) 将[[A_t1, A_t2, A_t3, A_t4, A_t5, A_t6]] 作为输入和输出[[A_t1, A_t2, A_t3, A_t4, A_t5, A_t6]]。 Keras 中有这样的层/结构吗?谢谢!

【问题讨论】:

【参考方案1】:

对于像身份这样更简单的操作,您可以使用 Lambda 层,例如:

model.add(Lambda(lambda x: x))

这将返回与您的输入完全相同的输出。

【讨论】:

您需要添加 input_shape=your_input_shape 例如model.add(Lambda(lambda x: x, input_shape=x)) 如果您希望这是网络中的唯一层 您知道这与使用 tf.identity() 之间的复杂性差异吗?【参考方案2】:

其实Layer中默认的call()实现是identity,所以你可以直接使用:

model.add(Layer()) 

【讨论】:

您知道两种解决方案(Lambda(lambda x: x)Layer())在运行时复杂性方面哪个更可取吗?

以上是关于Python Keras:一个层输出与输入完全相同的东西的主要内容,如果未能解决你的问题,请参考以下文章

Keras 2D输出

keras 中的输入形状(此损失期望目标具有与输出相同的形状)

模型输入必须来自 `tf.keras.Input` ...,它们不能是先前非输入层的输出

Keras 序列模型输入层

如何将 keras LSTM 层的输出输入到输入层?

Keras:SimpleRNN - 如何在每个时间步进入新输入(而不是使用输出)