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

Keras稠密层的输入不是平坦的

淳于涛
2023-03-14
问题内容

This is my test code:

from keras import layers
input1 = layers.Input((2,3))
output = layers.Dense(4)(input1)
print(output)

The output is:

<tf.Tensor 'dense_2/add:0' shape=(?, 2, 4) dtype=float32>

但是发生了什么?
文件上说:

注意:如果层的输入的秩大于2,则为
在初始点积之前先展平带核。
当输出被重塑时?


问题答案:

目前,与文件中所述相反的是,密集'
层[应用在输入张量的最后一个轴上](网址:keras.com/https://github-
团队/KERA/问题/10736#问题建议-406589140):

与文档相反,我们实际上并没有将其展平。它适用于
最后一个独立轴。
换言之,如果对输入应用一个单位为“m”的“密集”层
形状(n\u dim1,n\u dim2,…,n\u dimk)的张量将有一个输出形状
(n\u dim1,n\u dim2,…,m)

作为旁注:这使得“TimeDistributed(densed(…)”和“densed(…)`
彼此相等。

另一个旁注:请注意,这具有共享权重的效果。
例如,考虑这个玩具网络:

model = Sequential()
model.add(Dense(10, input_shape=(20, 5)))

model.summary()

The model summary:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_1 (Dense)              (None, 20, 10)            60        
=================================================================
Total params: 60
Trainable params: 60
Non-trainable params: 0
_________________________________________________________________

如您所见,“稠密”层只有60个参数。怎样?每个单元`稠密层用相同的权重,因此“10*5+10(单位偏差参数)=60”。

更新。以下是上述示例的直观说明:
[![对具有两个或多个输入的输入应用密集层的直观说明]
尺寸单位



 类似资料:
  • 在模型中添加LSTM层之前,我不确定是否需要添加密集输入层。例如,使用以下模型: LSTM层是否为输入层,密集层是否为输出层(即无隐藏层)?或者Keras是否创建了一个输入层,这意味着LSTM层将是一个隐藏层?

  • 我正在构建一个模型,该模型使用递归层(GRU)将一个字符串转换为另一个字符串。我试过将稠密层和时间分布(稠密)层作为最后一层,但当使用return\u sequences=True时,我不理解这两个层之间的区别,尤其是因为它们似乎具有相同数量的参数。 我的简化模型如下: 网络的总结是: 这对我来说是有意义的,因为我对时间分布的理解是它在所有时间点应用相同的层,因此密集层有16*15 15=255参

  • 问题内容: 我拥有的代码(我无法更改)将Resnet与input_tensor一起使用。 研究源代码,ResNet50函数使用创建一个新的keras输入层,然后创建模型的其余部分。这是我要用自己的模型复制的行为。我从h5文件加载我的模型。 由于此模型已经具有输入层,因此我想用定义的新输入层替换它。 如何替换输入层? 问题答案: 使用以下方法保存模型时: 它将保存以下内容: 模型的体系结构,允许创建

  • 我正在训练一个神经网络来计算3x3矩阵的逆。我使用的是一个具有1层和9个神经元的Keras密集模型。第一层上的激活函数为“relu”,输出层上的激活函数为线性。我正在使用10000个行列式1的矩阵。我得到的结果不是很好(RMSE有数百个)。我一直在尝试更多的层次、更多的神经元和其他激活功能,但收获很小。代码如下: 我在网上查过,似乎有关于逆矩阵近似问题的论文。然而,在更改模型之前,我想知道是否还有

  • 问题内容: 我正在尝试构建LSTM模型,以解决https://keras.io/layers/recurrent/中的文档示例 以下三行代码(加上注释)直接来自上面的文档链接: ValueError:输入0与层lstm_2不兼容:预期ndim = 3,找到的ndim = 2 在执行第二个model.add()语句之后,但在将模型暴露给我的数据甚至编译它之前,我在上面得到了该错误。 我在这里做错了什

  • 问题内容: 在Keras中创建顺序模型时,我知道您在第一层中提供了输入形状。然后,此输入形状会构成 隐式 输入层吗? 例如,下面的模型明确指定了2个密集层,但这实际上是一个3层模型,即由输入形状隐含的一个输入层,一个具有32个神经元的隐藏密集层,然后一个具有10个可能输出的输出层组成的模型吗? 问题答案: 好吧,实际上它实际上 是 一个隐式输入层,即您的模型是一个具有三层“输入,隐藏和输出”的“老