我无法理解我正在尝试创建的模型。
我有几个问题,所以我将首先解释我的模型以及我正在尝试做的事情:
我已经创建了数据序列(模型的输入和输出)每个 7 个时间步长,因此输入将是某一周的天的值,输出是下一周天的值(** 所以我的输入 1模型的输入形状为 (7,1) 与输出**) 相同。
我还准备了另一个输入列表,其中包含一些额外的功能,例如**下周**的假期标志和天气状况,因此模型的第二个 input2 具有每个示例的形状 (7,7)。
这是完整的模型摘要:
在 lstm 层和完全连接的 NN 之后,我尝试将两个输入连接在一起,基本上,我想连接input2到 layer 的输出dense_1。所以我将 (7,1) 形状与input_2形状 (7,7) 的第二个输入“”连接起来
我的问题:
1-密集层的输出让我感到困惑,我认为它们的形状是(无,单位数),但它们似乎是(无,7,单位数)总是有第二维“7”,我不明白。
2-对于连接部分,由于我将 7x7 输入添加到 7x1 输入中,因此我期望有 49+7=56 个单元连接到下一个密集层,但参数的数量告诉我情况并非只有 14 个*120+120=1800
3-我想在最后一层有 7 个单位(每天预测 1 个),但必须将其设为 1,以便输出 (7,1) 并使其工作,我显然缺少一些东西.
这是模型定义的代码:
input1 = tf.keras.layers.Input(shape=(7,1),name="input_1")
x = tf.keras.layers.Conv1D(120, kernel_size=5,strides=1,activation="relu",
padding="causal",input_shape=[7, 1])(input1)
x = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(210, return_sequences=True),name="LSTM_1")(x)
x = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(210, return_sequences=True,name="LSTM_2"))(x)
x = tf.keras.layers.Dense(60,activation="relu",name="dense_1_1")(x)
x = tf.keras.layers.Dense(30,activation="relu",name="dense_1_2")(x)
x = tf.keras.layers.Dense(7,name="dense_1_3")(x)
input2 = tf.keras.layers.Input(shape=(7,7),name="input_2")
concat = tf.keras.layers.concatenate([x, input2],name="concat_1")
x = tf.keras.layers.Dense(120,activation="selu",name="dense_2_1")(concat)
x = tf.keras.layers.Dense(90,activation="selu",name="dense_2_2")(x)
x = tf.keras.layers.Dense(60,activation="selu",name="dense_2_3")(x)
output = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model([input1, input2], output)
这些是输入(输入 1 和输入 2)和输出的维度




