如何解决使用LSTM和SGD MAE卡在最后一个时代
这是我的总体数据,形状为(10000,)。我正在尝试使用SGD创建LSTM模型,但是无论我如何调整图层的单位,在最后一个时期,MAE都停留在0.13。我应该如何调整?以及如何确定我需要的层数?如何获得较少的MAE?我在调整keras参数时有些困惑。我不知道为什么它停留在0.13。我试图添加更多的图层,但它几乎没有改变MAE。
Global_active_power
count 2.049280e+06
mean 1.091615e+00
std 1.057294e+00
min 7.600000e-02
25% 3.080000e-01
50% 6.020000e-01
75% 1.528000e+00
max 1.112200e+01
def windowed_dataset(series,window_size,batch_size,shuffle_buffer):
series = tf.expand_dims(series,axis=-1)
ds = tf.data.Dataset.from_tensor_slices(series)
ds = ds.window(window_size + 1,shift=1,drop_remainder=True)
ds = ds.flat_map(lambda w: w.batch(window_size + 1))
ds = ds.shuffle(shuffle_buffer)
ds = ds.map(lambda w: (w[:-1],w[1:]))
return ds.batch(batch_size).prefetch(1)
active_power = consum.Global_active_power.values
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0,1))
scaled = scaler.fit_transform(active_power.reshape(-1,1))
import numpy as np
for i in range(len(scaled)):
if np.isnan(scaled[i]) == True:
scaled[i] = np.nanmean(scaled)
from sklearn.model_selection import train_test_split
active_power_train,active_power_test = train_test_split(scaled.flatten(),test_size=0.2)
from keras.layers import Dense,LSTM,Dropout
import tensorflow as tf
train_set = windowed_dataset(active_power_train,window_size=60,batch_size=100,shuffle_buffer=1000)
test_set = windowed_dataset(active_power_test,shuffle_buffer=1000)
model = tf.keras.models.Sequential([
tf.keras.layers.LSTM(60,return_sequences=True,dtype='float64'),tf.keras.layers.LSTM(60,dtype ='float64'),tf.keras.layers.Dense(30,activation="relu",tf.keras.layers.Dense(0.2,tf.keras.layers.Dense(10,# tf.keras.layers.Dense(30,# tf.keras.layers.Dense(0.2,tf.keras.layers.Dense(1,])
optimizer = tf.keras.optimizers.SGD(lr=1.0000e-04,momentum=0.9)
model.compile(loss=tf.keras.losses.Huber(),optimizer=optimizer,metrics=['mae'])
history = model.fit(train_set,epochs=20,callbacks = callback,validation_data= test_set)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。