Keras 如何管理CNN的不同类型和形状的额外输入

Keras 如何管理CNN的不同类型和形状的额外输入,keras,cnn,sequential,Keras,Cnn,Sequential,我正在训练一个CNN来检测我输入数据上的特定模式,如果发现模式,则返回1。 输入都是形状(200,),标签是(1,)。我的数据有限,因此我需要找到帮助培训的方法 当输入最初来自更早的时间时,模式和峰值往往更圆。当它们最初来自较晚的时间时,它们往往更吵闹、更刺耳 我想如果我把我所有的数据按照它们来自的时间分成3个箱子(从圆到尖,可能是0到2),我可以提供这些数据,这可以帮助CNN更好地理解这种模式,但我不确定如何提供这些信息 这是我目前的代码: model_m5 = Sequential() mo

我正在训练一个CNN来检测我输入数据上的特定模式,如果发现模式,则返回1。 输入都是形状(200,),标签是(1,)。我的数据有限,因此我需要找到帮助培训的方法

当输入最初来自更早的时间时,模式和峰值往往更圆。当它们最初来自较晚的时间时,它们往往更吵闹、更刺耳

我想如果我把我所有的数据按照它们来自的时间分成3个箱子(从圆到尖,可能是0到2),我可以提供这些数据,这可以帮助CNN更好地理解这种模式,但我不确定如何提供这些信息

这是我目前的代码:

model_m5 = Sequential()
model_m5.add(Reshape((200, 1), input_shape=(200,)))
model_m5.add(Conv1D(60, 4, activation='relu', input_shape=(200, 1)))
model_m5.add(Conv1D(60, 4, activation='relu'))
model_m5.add(MaxPooling1D(pool_size=5))
model_m5.add(Conv1D(80, 10, activation='relu'))
model_m5.add(Conv1D(80, 10, activation='relu'))
model_m5.add(GlobalAveragePooling1D())
model_m5.add(Dropout(0.5))
model_m5.add(Dense(1, activation='sigmoid'))
print(model_m5.summary())

TensorFlow的WideDeepModel满足了我的要求

这使得在拥有深层模型(
dnn_模型
)后,可以很容易地包含线性组件(
linear_模型
);通过这种方式,您可以在组合模型中一起训练它们:

tf.keras.experimental.WideDeepModel(
    linear_model, dnn_model, activation=None, **kwargs
)
文档和示例可在此处找到:

你为什么要和CNN一起训练时间序列?CNN是图像和视频。我知道它主要是图像。我之所以尝试Conv1D,是因为模式非常复杂,但如果性能相同,可能会返回到更简单的体系结构。将Conv1用于模式很有趣。但是你应该尝试时间序列的特定库,而不是从头开始。你能给我一个特定库的例子吗?谢谢你!