如何在 Keras 顺序模型中连接三层?
How can I concatenate three layers in a Keras sequential model?
我想在我的 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'))
顺序模型无法管理串联,因为串联的层是根据其输入并行计算的。
在顺序模型中,一层的输出成为下一层的输入,而级联需要对多个层使用相同的输入。
在这种情况下,您应该使用 Functional API or Model 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
您的代码与预期的不一致。
我想在我的 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'))
顺序模型无法管理串联,因为串联的层是根据其输入并行计算的。
在顺序模型中,一层的输出成为下一层的输入,而级联需要对多个层使用相同的输入。
在这种情况下,您应该使用 Functional API or Model 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
您的代码与预期的不一致。