我的 LSTM 解决方案给出了预测的平均线,但 val_loss 的损失为 0.1 * e-5

问题描述

```

split = self.data['sold'].size - self.length

if (self.showGraph):

    self.data.plot()
    plt.show()


self.train = self.data[:split]

self.test = self.data[split:]

# trainDup = self.train 
# self.train = trainDup.append(self.train)


self.scaler = MinMaxScaler()
self.trainS = self.scaler.fit_transform(self.train)
self.testS = self.scaler.transform(self.test)

self.batch_size = 1
self.trainGen = TimeseriesGenerator(self.trainS,targets=self.trainS,length=self.length,batch_size=1)

self.testGen = TimeseriesGenerator(self.testS,targets=self.testS,length=self.length-1,batch_size=1)

self.data.isnull()

batches = int(self.data['sold'].size / self.batch_size)
self.input_shape = (self.length,self.train.columns.values.size)
self.batch_input_shape = (self.batch_size,self.length,self.train.columns.values.size)

self.model = Sequential()


self.model.add(SimpleRNN(
    12,return_sequences=False,input_shape=self.input_shape
))

self.model.add(Activation('relu'))

self.model.add(Dense(1))

self.model.add(Activation('relu'))

def loss(value,pred):
    from sklearn.metrics import mean_absolute_error
    return mean_absolute_error(value,pred)


self.model.compile(optimizer=Adam(learning_rate=0.001),loss='mse',metrics=['accuracy'])

print(self.model.summary())

```

预测是橙色的 真实结果是蓝色的 年图。

enter image description here

我尝试过 LSTM、RNNsimple:

以及我尝试过的许多不同的变种

1024-6 台 我尝试过辍学并且没有定标器 我已经改变了batch_size 使用 L2,L1 调节器进行拟合,I 已经改变了每周、每月、每年、每天的数据 我尝试了一种复制技术来拥有 10000 个数据行 我试过使用人工神经网络, 和 batch_input_shape 等等。但是我找不到soultion ATM。

我的数据统计

Daily = 1895
Yearly = 1895 / 365
Monthly = 1895 / 12
Weekly = 1895 / 7

Duplicated = 20100 AND I HAVE TRIED SHUFFLING.

解决方法

解决方案是长度和大量消失梯度,问题是 LSTM 只会减慢消失梯度,但我已更改为分类,因为数据太嘈杂。