输入形状如何改变模型架构?

问题描述 投票:0回答:1

以下两种情况我得到不同的结果:

示例 1:训练数据具有形状(batch_size,n_steps),模型为:

model_dense = tf.keras.Sequential([
   tf.keras.layers.Dense(1)
])

示例 2:我的训练数据具有形状 (batch_size, n_steps, 1) 并且模型具有形状

model_dense = tf.keras.Sequential([
    tf.keras.layers.Flatten(input_shape=[n_steps, 1]),
    tf.keras.layers.Dense(1)
])

示例 2 的训练效果要好得多。两个模型都有 n_steps+1 个可训练参数,我认为示例 2 的展平层会简单地展平通道尺寸,因此使其等同于示例 1。我认为我错过了一些简单的东西。

python tensorflow machine-learning keras
1个回答
0
投票

在示例 1 中,数据直接输入密集层,没有任何指定的输入形状,这意味着模型将从训练数据推断输入形状。在这里,每个时间步都被视为一个单独的特征。

在示例 2 中,您显式定义了输入形状并在 Dense 层之前包含 Flatten 层。该层将数据从 3D 张量重塑为 2D 张量,其中第一个维度是批量大小。尽管展平操作使数据在结构上与示例 1 相似,但显式的 input_shape 可能会使模型初始化和训练略有不同。

© www.soinside.com 2019 - 2024. All rights reserved.