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

How to manage extra input of a different type and shape to a CNN

我正在训练 CNN 来检测输入数据中的特定模式,return 1 如果找到该模式。 输入都是形状(200,),标签是(1,)。我的数据有限,所以我需要想办法辅助训练。

当输入最初来自较早的时间时,图案和峰值往往更圆。当它们最初来自较晚的时间时,它们往往更嘈杂和尖锐。

我认为如果我根据数据的来源时间将我所有的数据分成 3 个 bin(从 rounder 到 spikier 可能是 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_model),这使得包含线性组件 (linear_model) 变得很容易;这样,您可以在组合模型中一起训练它们:

tf.keras.experimental.WideDeepModel(
    linear_model, dnn_model, activation=None, **kwargs
)

可在此处找到文档和示例: https://www.tensorflow.org/api_docs/python/tf/keras/experimental/WideDeepModel#example_5