【问题标题】:How can I concatenate three layers in a Keras sequential model? [duplicate]如何在 Keras 顺序模型中连接三层? [复制]
【发布时间】:2021-07-08 04:10:51
【问题描述】:

我想在我的 Keras 顺序模型中连接三层。有没有办法这样做?我想将它们与axis=2 连接起来。

Here is how the model summary looks like for now.

这里是代码。

model = Sequential()
model.add(keras.layers.InputLayer(input_shape=(seq_len, n_inputs)))
model.add(keras.layers.Conv1D(input_shape=(None, n_inputs,seq_len), filters=N_CONV_A, padding='same',kernel_size=F_CONV_A, strides=1, activation='relu'))
model.add(keras.layers.Conv1D(input_shape=(None, n_inputs,seq_len), filters=N_CONV_B, padding='same',kernel_size=F_CONV_B, strides=1, activation='relu'))
model.add(keras.layers.Conv1D(input_shape=(None, n_inputs,seq_len), filters=N_CONV_C, padding='same',kernel_size=F_CONV_C, strides=1, activation='relu'))

【问题讨论】:

  • “连接图层”是什么意思。你的意思是要把三层的输出串联起来?
  • 嗨,Aditya,是的,我愿意。很抱歉没有早点澄清。
  • 简单的顺序模型,仅限于一个输入和一个输出,顾名思义,您可以按顺序排列层。如果您有 3 层并行且输入相同,则应使用功能 API 或模型子类化。

标签: python tensorflow keras concatenation


【解决方案1】:

顺序模型无法管理连接,因为连接的层是相对于其输入并行计算的。

在顺序模型中,一层的输出成为下一层的输入,而连接需要对许多层使用相同的输入。

在这种情况下,您应该使用Functional APIModel subclassing

例如使用函数式 API 代码变成了

inputs = keras.layers.Input(shape=(n_inputs, seq_len))
convA = keras.layers.Conv1D(input_shape=(None, n_inputs, seq_len),filters=N_CONV_A, padding='same',kernel_size=F_CONV_A, strides=1, activation='relu')
convB = keras.layers.Conv1D(input_shape=(None, n_inputs, seq_len),filters=N_CONV_B, padding='same',kernel_size=F_CONV_B, strides=1, activation='relu')
convC = keras.layers.Conv1D(input_shape=(None, n_inputs, seq_len),filters=N_CONV_C, padding='same',kernel_size=F_CONV_C, strides=1, activation='relu')
concat = keras.layers.Concatenate(axis=-1)
out = concat([convA(inputs), convB(inputs), convC(inputs)])

注意:您的代码中的input_shape与预期的不一致。

【讨论】:

    猜你喜欢
    • 2021-07-31
    • 2017-09-30
    • 1970-01-01
    • 2019-05-27
    • 2019-05-11
    • 2019-12-16
    • 2017-08-29
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多