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

问题描述

我正在训练CNN来检测我的输入数据上的某些模式,如果找到了模式,则返回1。 输入均为形状(200,),标签为(1,)。我的资料有限,所以我需要找到方法来协助训练。

当输入最初来自较早的时间时,图案和峰往往更圆。当它们最初来自较晚的时间时,它们往往会变得嘈杂而尖刻。

我认为,如果我将所有数据根据它们来自的时间(从取整器到加长脉冲器,可能是0到2)分成3个bin,我可以提供它,这可以帮助CNN更好地理解模式,但是我我不确定如何提供这些信息。

到目前为止,这是我的代码

model_m5 = Sequential()
model_m5.add(Reshape((200,1),input_shape=(200,)))
model_m5.add(Conv1D(60,4,activation='relu',1)))
model_m5.add(Conv1D(60,activation='relu'))
model_m5.add(MaxPooling1D(pool_size=5))
model_m5.add(Conv1D(80,10,activation='relu'))
model_m5.add(Conv1D(80,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 满足了我的要求。

一旦有了深层模型(from django.contrib import admin class CommentInlineAdmin(admin.TabularInline): model = Comment class UploadedAdmin(admin.ModelAdmin): inlines = [CommentInlineAdmin] admin.register(Uploaded,UploadedAdmin) ),就可以轻松包含线性分量(linear_model);这样,您可以在组合模型中一起训练它们:

dnn_model

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