当前位置: 首页 > 面试题库 >

在Keras中,TimeDistributed层的作用是什么?

洪永长
2023-03-14
问题内容

我试图了解TimeDistributed包装器在Keras中的作用。

我得到了TimeDistributed“将层应用于输入的每个时间片”。

但是我做了一些实验,却得到了我无法理解的结果。

简而言之,对于LSTM层,TimeDistributed和Just Dense层的结果相同。

model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add(TimeDistributed(Dense(1)))
print(model.output_shape)

model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add((Dense(1)))
print(model.output_shape)

对于这两个模型,我得到的输出形状为 (None,10,1)

在RNN层之后,谁能解释TimeDistributed和Dense层之间的区别?


问题答案:

keras-建立顺序模型时-通常是第二维(一个样本维之后)与一个time维相关。这意味着,例如,如果您的数据5-dim(sample, time, width, length, channel)您在一起,则可以沿时间维度使用TimeDistributed(适用于4-dimwith
(sample, width, length, channel))应用卷积层(将相同的层应用于每个时间片)以获得5-d输出。

随着案情Dense的是,在keras2.0版本Dense默认情况下只应用于最后一个维度(例如,如果你申请Dense(10)输入与形状(n, m, o, p),你会得到与形状输出(n, m, o, 10)),所以你的情况DenseTimeDistributed(Dense)是等价的。



 类似资料:
  • 我正在试图理解Keras中扁平化功能的作用。下面是我的代码,这是一个简单的两层网络。它接收形状(3,2)的二维数据,输出形状(1,4)的一维数据: 这将打印出y具有形状(1,4)。但是,如果我删除展平线,则它会打印出y具有形状(1、3、4)。 我不明白这一点。根据我对神经网络的理解,这个模型。add(Dense(16,input\u shape=(3,2)))函数正在创建一个具有16个节点的隐藏完

  • 我正在使用TensorFlow后端。 我正在按顺序应用卷积、最大池、展平和密集层。卷积需要3D输入(高度、宽度、color\u channels\u深度)。 在卷积之后,它变为(高度、宽度、过滤器的数量)。 在应用最大池化高度和宽度变化之后。但是,在应用展平层之后,到底会发生什么?例如,如果展平之前的输入是(24, 24, 32),那么它是如何展平的? 对于每个过滤器号的高度、重量,它是像(24*

  • 假设我有一个简单的神经网络,其中包含一个输入层和一个用张量流编程的单个卷积层: 我省略了功能的网络定义的任何其他部分。 如果我想在这个卷积层之后添加一个LSTM层,我必须使卷积层为时间分布(在keras语言中),然后将时间分布层的输出放入LSTM。 Tensorflow提供了进入tf中keras层的通道。凯拉斯。图层。我可以在tensorflow代码中直接使用keras层吗?如果是,如何?我也可以

  • 我正在使用tensorflow。keras和API,我遇到了一种我不熟悉的语法,即在子模型的输出上应用层,如本教程中的以下示例所示: 在层的官方参考中。例如,我找不到将其应用于层的实际效果的解释。在keras中。图层参考我遇到过这样的解释: call(self、inputs、*args、**kwargs):在确保调用build()后在call中调用。call()执行将层应用于输入张量的逻辑(应该作

  • 问题内容: 我认为当输入值为0时将输出0,因此以下各层可能会跳过计算或其他操作。 如何运作? 例: 实际输出为:(数字是随机的) 但是,我认为输出将是: 问题答案: 实际上,设置嵌入层不会导致返回零向量。而是,嵌入层的行为不会改变,它将返回索引为零的嵌入向量。您可以通过检查Embedding层权重(即在您提到的示例中为)来确认这一点。取而代之的是,它将影响诸如RNN层之类的后续层的行为。 如果检查

  • 我在这里参考 Keras 文档:https://keras.io/guides/transfer_learning/ 演示了一个典型的迁移学习工作流程 首先,用预先训练的权重实例化一个基础模型。 然后,冻结基本模型。 在顶部创建一个新模型。 根据新数据训练模型。 我的问题是,为什么这个示例没有在密集层中应用sigmoid或softmax激活? 这里的这个密集层默认有线性激活,这不是让模型输出一个回