卷积神经网络模型不学习喀拉拉语

时间:2018-10-24 13:02:08

标签: python keras conv-neural-network

我在Keras中有一个卷积神经网络:

storefeaturesInfo = Input(shape=(21,), name='storefeatures')
storefeaturesInfo_x=Dense(64,activation='relu')(storefeaturesInfo)

next48additionalInfo=Input(shape=(None, 8), name='next48additionalInfo')
x_next48additionalInfo=GRU(32)(next48additionalInfo)
next48additionalInfo_x=Dense(64,activation='relu')(x_next48additionalInfo)

input1 = Input(shape=(None, 10), name='firstfewtimesteps')    
x=Conv1D(24, 3, activation='relu', padding="causal")(input1)
x=BatchNormalization()(x)
x=Conv1D(32, 3, activation='relu', padding="causal")(x)
x=BatchNormalization()(x)
x=Conv1D(64, 3, activation='relu', padding="causal")(x)
x=BatchNormalization()(x)
x=Conv1D(128, 3, activation='relu', padding="causal")(x)
x=BatchNormalization()(x)
x=Conv1D(256, 3, activation='relu', padding="causal")(x)
x=BatchNormalization()(x)
x=Conv1D(512, 3, activation='relu', padding="causal")(x)
x=BatchNormalization()(x)
x=GlobalMaxPool1D()(x)
x=Dropout(0.25)(x)
x=Dense(512,activation='relu')(x)
x=Dense(256,activation='relu')(x)
x=Dense(128,activation='relu')(x)
x=Dense(64,activation='relu')(x)
x=Dropout(0.25)(x)

output_48=[]
finalInput = keras.layers.concatenate([x,storefeaturesInfo_x, next48additionalInfo_x])
for i in range(48):
    target=Dense(1, activation="relu", name=str(i))(finalInput)
    output_48.append(target)

model = Model([input1,storefeaturesInfo,next48additionalInfo], output_48)
model.compile(optimizer=adam,loss=mse,loss_weights=z)

我正试图以此挑战来预测销售量(https://www.kaggle.com/c/rossmann-store-sales)。第一个Input storefeaturesInfo由21个值的向量组成,总共1100个形状为(1100,21)的商店,第二层描述了该模型要尝试预测的日期的附加信息,例如商店是否为打开或关闭。我将所有这些输入连接起来并堆叠48个密集层,因为这是我将来需要的预测数。我使用48个不同的图层,因为我对它们的加权不同。

鉴于过去12周的数据预测未来48天,我将使用滑动窗口机制训练模型。我滑动此窗口的总时间为900天。但是,该模型根本无法捕获任何信息,其性能仅比预测历史平均值差一点。学习曲线如下所示:

Trained with different learning rates

这些曲线所显示的是倒数第二个48点的验证错误,然后目标是预测这些点之后的48个点并将解决方案提交给Kaggle。 我发布此问题是有原因的。

0 个答案:

没有答案