keras 中关于时间序列预测的损失与纪元图
Loss vs epoch plot in keras on time series forecasting
epoch vs loss plot
在 keras 2.2.4 中进行时间序列预测训练时,我得到了超过 epoch vs loss 图。模型配置 1 个 lstm 层,1 个密集层,num epochs - 64。在某些配置上,我得到了正确的图,只有两条曲线,一条用于验证集,一条用于训练损失数据集,而在某些配置上,我得到了这个荒谬的图在图像中。我不明白为什么会这样?
我的代码 --
def train(trainingData, config):
inputShape, numNode, numEpoch, batchSize = config
if nDiff > 0:
trainingData = np.array(difference(trainingData))
trainX, trainY = trainingData[:, :-1], trainingData[:, -1]
trainX = trainX.reshape((trainX.shape[0], trainX.shape[1], 1))
model = Sequential()
model.add(LSTM(numNode, activation = 'relu', input_shape = (inputShape, 1)))
#model.add(Dense(4, activation = 'relu'))
model.add(Dense(1))
model.compile(loss = 'mse' , optimizer = 'adam')
history = model.fit(trainX, trainY, validation_split = 0.2, epochs = numEpoch, batch_size = batchSize, verbose = 0, shuffle = True)
# summarize history for loss
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.savefig(modelName + "ind")
return model
你 model.compile()
中是否有 metrics=['...']
?如果是这样,图表可能会显示除原始损失之外的其他指标。
做
plt.close('all')
在完成一个地块的绘图之后或开始每个绘图之前
即
替换
plt.savefig(modelName + "ind")
与
plt.savefig(modelName + "ind")
plt.close('all')
epoch vs loss plot
在 keras 2.2.4 中进行时间序列预测训练时,我得到了超过 epoch vs loss 图。模型配置 1 个 lstm 层,1 个密集层,num epochs - 64。在某些配置上,我得到了正确的图,只有两条曲线,一条用于验证集,一条用于训练损失数据集,而在某些配置上,我得到了这个荒谬的图在图像中。我不明白为什么会这样? 我的代码 --
def train(trainingData, config):
inputShape, numNode, numEpoch, batchSize = config
if nDiff > 0:
trainingData = np.array(difference(trainingData))
trainX, trainY = trainingData[:, :-1], trainingData[:, -1]
trainX = trainX.reshape((trainX.shape[0], trainX.shape[1], 1))
model = Sequential()
model.add(LSTM(numNode, activation = 'relu', input_shape = (inputShape, 1)))
#model.add(Dense(4, activation = 'relu'))
model.add(Dense(1))
model.compile(loss = 'mse' , optimizer = 'adam')
history = model.fit(trainX, trainY, validation_split = 0.2, epochs = numEpoch, batch_size = batchSize, verbose = 0, shuffle = True)
# summarize history for loss
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.savefig(modelName + "ind")
return model
你 model.compile()
中是否有 metrics=['...']
?如果是这样,图表可能会显示除原始损失之外的其他指标。
做
plt.close('all')
在完成一个地块的绘图之后或开始每个绘图之前
即
替换
plt.savefig(modelName + "ind")
与
plt.savefig(modelName + "ind")
plt.close('all')