自己做网站的方法,公众号文章存储wordpress,代码如诗 wordpress,wordpress网址插件LSTM复现笔记和问题记录 1 LSTM复现记录1.1 复现环境配置1.2 LSTM_Fly文件夹1.2.1 LSTM回归网络(1→1).py1.2.1.1 加载数据1.2.1.2 数据处理1.2.1.3 输入模型维度 1.2.2 移动窗口型回归(3→1).py1.2.2.1 数据处理1.2.2.2 输入模型维度 1.2.3 时间步长型回归(3→1).py1.2.3.1 数… LSTM复现笔记和问题记录 1 LSTM复现记录1.1 复现环境配置1.2 LSTM_Fly文件夹1.2.1 LSTM回归网络(1→1).py1.2.1.1 加载数据1.2.1.2 数据处理1.2.1.3 输入模型维度 1.2.2 移动窗口型回归(3→1).py1.2.2.1 数据处理1.2.2.2 输入模型维度 1.2.3 时间步长型回归(3→1).py1.2.3.1 数据处理1.2.3.2 输入模型维度 1.3 LSTM系列文件夹1.3.1 LSTM单变量41.3.1.1 输入模型维度1 1.3.2 LSTM多变量31.3.2.1 输入模型维度 1.3.3 Multi-Step LSTM预测21.3.3.1 输入模型维度 1.4 stock_predict1.4.1 stock_predict_1.py1.4.1.1 输入模型维度 1.5 洗发水销量(单步预测)1.5.1 6.LSTM模型实例.py 总结 1 LSTM复现记录
复现github链接https://github.com/yangwohenmai/LSTM.git
1.1 复现环境配置
采用cuda10.11050ti显卡; python版本3.8.20
absl-py2.1.0
astunparse1.6.3
cachetools4.2.4
certifi2025.1.31
charset-normalizer3.4.1
contourpy1.1.1
cycler0.12.1
fonttools4.56.0
gast0.3.3
google-auth1.35.0
google-auth-oauthlib0.4.6
google-pasta0.2.0
grpcio1.70.0
h5py2.10.0
idna3.10
importlib_metadata8.5.0
importlib_resources6.4.5
joblib1.4.2
Keras-Preprocessing1.1.2
kiwisolver1.4.7
Markdown3.7
MarkupSafe2.1.5
matplotlib3.3.4
numpy1.18.5
oauthlib3.2.2
opt_einsum3.4.0
packaging24.2
pandas1.1.5
pillow10.4.0
protobuf3.20.0
pyasn10.6.1
pyasn1_modules0.4.1
pyparsing3.1.4
python-dateutil2.9.0.post0
pytz2025.1
PyYAML6.0.2
requests2.32.3
requests-oauthlib2.0.0
rsa4.9
scikit-learn0.24.2
scipy1.4.1
six1.17.0
tensorboard2.2.2
tensorboard-data-server0.7.2
tensorboard-plugin-wit1.8.1
tensorflow-gpu2.2.0
tensorflow-gpu-estimator2.2.0
termcolor2.4.0
Theano1.0.5
threadpoolctl3.5.0
tzdata2025.1
urllib32.2.3
Werkzeug3.0.6
wrapt1.17.2
zipp3.20.2注这个版本得tensorflow中自带keras后面keras.xxx相关模块得导入修改成tensorflow.keras.xxx
vscode配置
{version: 1.95.2,configurations: [{name: Python Debugger: Current File,type: debugpy,request: launch,program: ${file},console: integratedTerminal,cwd:${fileDirname},}]
}1.2 LSTM_Fly文件夹
1.2.1 LSTM回归网络(1→1).py
将数据截取成1-1的监督学习格式即用前一个数据预测后一个数据
1.2.1.1 加载数据
加载数据时未考虑第一列的时间序列故命名未回归网络
# 加载数据
dataframe read_csv(airline-passengers.csv, usecols[1], enginepython)1.2.1.2 数据处理
look_back参数设置为1实现前一个值预测后一个值
# 将数据截取成1-1的监督学习格式
def create_dataset(dataset, look_back1):dataX, dataY [], []for i in range(len(dataset)-look_back-1):a dataset[i:(ilook_back), 0]dataX.append(a)dataY.append(dataset[i look_back, 0])return numpy.array(dataX), numpy.array(dataY)# 预测数据步长为1,一个预测一个1-1
look_back 1
trainX, trainY create_dataset(train, look_back)
testX, testY create_dataset(test, look_back)1.2.1.3 输入模型维度
# 重构输入数据格式 [samples, time steps, features] [93,1,1]
trainX numpy.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
testX numpy.reshape(testX, (testX.shape[0], 1, testX.shape[1]))# 构建 LSTM 网络
model Sequential()
model.add(LSTM(4, input_shape(1, look_back)))
model.add(Dense(1))
model.compile(lossmean_squared_error, optimizeradam)model.fit(trainX, trainY, epochs100, batch_size1, verbose2)1.2.2 移动窗口型回归(3→1).py
用重构的长度为3的数据预测一个数据相当于进行了特征重构前三个时间步作为特征进行变换预测后一个值。
1.2.2.1 数据处理
# 将数据截取成3个一组的监督学习格式
def create_dataset(dataset, look_back1):dataX, dataY [], []# 这里没有充分利用数据若修改为len(dataset)-look_back,然后加上dataset[i look_back, 0]才刚好遍历到最后一个数据# 如果没有加上Y则是len(dataset)-look_back1for i in range(len(dataset)-look_back-1): a dataset[i:(ilook_back), 0]dataX.append(a)dataY.append(dataset[i look_back, 0])return numpy.array(dataX), numpy.array(dataY)1.2.2.2 输入模型维度
# 预测数据步长为3,三个预测一个3-1
look_back 3
trainX, trainY create_dataset(train, look_back)
testX, testY create_dataset(test, look_back)
# 重构输入数据格式 [samples, time steps, features] [93,1,3]
trainX numpy.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
testX numpy.reshape(testX, (testX.shape[0], 1, testX.shape[1]))
# 构建 LSTM 网络
model Sequential()
model.add(LSTM(4, input_shape(1, look_back)))
model.add(Dense(1))
model.compile(lossmean_squared_error, optimizeradam)
model.fit(trainX,trainY, epochs100, batch_size1, verbose2)
# 对训练数据的Y进行预测
trainPredict model.predict(trainX)1.2.3 时间步长型回归(3→1).py
用时间步长为3特征维度为1的数据预测后一个数据前三个时间步里的一个元素作为特征用于预测后一个值。
1.2.3.1 数据处理
# 将数据截取成3个一组的监督学习格式
def create_dataset(dataset, look_back1):dataX, dataY [], []for i in range(len(dataset)-look_back-1):a dataset[i:(ilook_back), 0]dataX.append(a)dataY.append(dataset[i look_back, 0])return numpy.array(dataX), numpy.array(dataY)1.2.3.2 输入模型维度
# 重构输入数据格式 [samples, time steps, features] [93,3,1]
trainX numpy.reshape(trainX, (trainX.shape[0], trainX.shape[1], 1))
testX numpy.reshape(testX, (testX.shape[0], testX.shape[1], 1))
# 构建 LSTM 网络
model Sequential()
# model.add(LSTM(4, input_shape(1, look_back)))
model.add(LSTM(4, input_shape(look_back, 1)))
model.add(Dense(1))
model.compile(lossmean_squared_error, optimizeradam)
model.fit(trainX, trainY, epochs100, batch_size1, verbose2)
# 对训练数据的Y进行预测
trainPredict model.predict(trainX)1.3 LSTM系列文件夹
1.3.1 LSTM单变量4
使用前面1个步长里的一个特征元素的数据预测后一个值。
1.3.1.1 输入模型维度1
这里代码中可以看出是使用的前一个时间步的一个特征元素的值来预测后一个值。
# fit LSTM来训练数据
def fit_lstm(train, batch_size, nb_epoch, neurons):X, y train[:, 0:-1], train[:, -1]X X.reshape(X.shape[0], 1, X.shape[1]) # 注意这个reshape一般会需要reshape从二维变成三维因为这里time_step为1所以中间的值为1model Sequential()# 添加LSTM层model.add(LSTM(neurons, batch_input_shape(batch_size, X.shape[1], X.shape[2]), statefulTrue))model.add(Dense(1)) # 输出层1个node# 编译损失函数mse优化算法adammodel.compile(lossmean_squared_error, optimizeradam)for i in range(nb_epoch):# 按照batch_size一次读取batch_size个数据model.fit(X, y, epochs1, batch_sizebatch_size, verbose0, shuffleFalse)model.reset_states()print(当前计算次数str(i))return model1.3.2 LSTM多变量3
使用前面1个时间步长里的多个特征元素的数据预测后一个值。
1.3.2.1 输入模型维度
这里代码中可以看出是使用的前一个时间步的多个特征元素的值来预测后一个值。
#拆分输入输出 split into input and outputs
train_X, train_y train[:, :-1], train[:, -1]
test_X, test_y test[:, :-1], test[:, -1]
#reshape输入为LSTM的输入格式 reshape input to be 3D [samples, timesteps, features]
train_X train_X.reshape((train_X.shape[0], 1, train_X.shape[1]))
test_X test_X.reshape((test_X.shape[0], 1, test_X.shape[1]))
print (train_x.shape, train_y.shape, test_x.shape, test_y.shape)
print(train_X.shape, train_y.shape, test_X.shape, test_y.shape)##模型定义 design network
model Sequential()
model.add(LSTM(50, input_shape(train_X.shape[1], train_X.shape[2]))) # 注意这段input_shape的前一个元素表示前面步长reshape时变为1后一个元素表示每个时间步长里的元素特征数量
model.add(Dense(1))
model.compile(lossmae, optimizeradam)
#模型训练 fit network
history model.fit(train_X, train_y, epochs5, batch_size72, validation_data(test_X, test_y), verbose2,shuffleFalse)1.3.3 Multi-Step LSTM预测2
使用前面1个时间步长里的单个特征元素的数据预测后面多个时间步长的单个特征元素值。
1.3.3.1 输入模型维度
具体数据变换维度见代码。
1.4 stock_predict
1.4.1 stock_predict_1.py
用时间步长为20特征维度为1的数据预测后20数据前20个时间步里的一个元素作为特征用于预测后20个时间步里的单个元素值。
1.4.1.1 输入模型维度
具体数据变换维度见代码。
#———————————————————形成训练集—————————————————————
time_step 20 #时间步
rnn_unit 10 #hidden layer units
lstm_layers 2 #每一批次训练多少个样例
batch_size 60 #输入层维度 #每一批次训练多少个样例
input_size 1 #输入层维度
output_size 1 #输出层维度
lr 0.0006 #学习率
train_x, train_y [], []#训练集
for i in range(len(normalize_data) - time_step - 1):x normalize_data[i:i time_step]y normalize_data[i 1:i time_step 1]train_x.append(x.tolist())train_y.append(y.tolist())1.5 洗发水销量(单步预测)
1.5.1 6.LSTM模型实例.py
用前面lag步长的数据特征维度为1预测后面特征维度为1的数据 … …
总结
总之使用前面列的数据预测最后一个列大多是时间步长为1每个时间步长都包括变量X和预测值y另外一种时间步长为n每个时间步长都包括变量X特征维度可能为1维或多维另外一个位置时间步长为n对应一个y。 文章转载自: http://www.morning.syhwc.cn.gov.cn.syhwc.cn http://www.morning.kmbgl.cn.gov.cn.kmbgl.cn http://www.morning.sjsfw.cn.gov.cn.sjsfw.cn http://www.morning.hwcln.cn.gov.cn.hwcln.cn http://www.morning.rkmhp.cn.gov.cn.rkmhp.cn http://www.morning.kfstq.cn.gov.cn.kfstq.cn http://www.morning.mgzjz.cn.gov.cn.mgzjz.cn http://www.morning.wjtxt.cn.gov.cn.wjtxt.cn http://www.morning.vtbtje.cn.gov.cn.vtbtje.cn http://www.morning.kongpie.com.gov.cn.kongpie.com http://www.morning.fgkrh.cn.gov.cn.fgkrh.cn http://www.morning.lyhry.cn.gov.cn.lyhry.cn http://www.morning.jfch.cn.gov.cn.jfch.cn http://www.morning.rnmyw.cn.gov.cn.rnmyw.cn http://www.morning.xqltq.cn.gov.cn.xqltq.cn http://www.morning.jwlmm.cn.gov.cn.jwlmm.cn http://www.morning.rcjyc.cn.gov.cn.rcjyc.cn http://www.morning.npmcf.cn.gov.cn.npmcf.cn http://www.morning.rshkh.cn.gov.cn.rshkh.cn http://www.morning.cjxqx.cn.gov.cn.cjxqx.cn http://www.morning.qngcq.cn.gov.cn.qngcq.cn http://www.morning.hmnhp.cn.gov.cn.hmnhp.cn http://www.morning.wwsgl.com.gov.cn.wwsgl.com http://www.morning.bpwfr.cn.gov.cn.bpwfr.cn http://www.morning.ymwrs.cn.gov.cn.ymwrs.cn http://www.morning.dzqr.cn.gov.cn.dzqr.cn http://www.morning.zwdrz.cn.gov.cn.zwdrz.cn http://www.morning.rysmn.cn.gov.cn.rysmn.cn http://www.morning.fflnw.cn.gov.cn.fflnw.cn http://www.morning.jqlx.cn.gov.cn.jqlx.cn http://www.morning.bpmdr.cn.gov.cn.bpmdr.cn http://www.morning.gywfp.cn.gov.cn.gywfp.cn http://www.morning.bdgb.cn.gov.cn.bdgb.cn http://www.morning.ghxsn.cn.gov.cn.ghxsn.cn http://www.morning.gglhj.cn.gov.cn.gglhj.cn http://www.morning.sdhmn.cn.gov.cn.sdhmn.cn http://www.morning.sgqw.cn.gov.cn.sgqw.cn http://www.morning.wwklf.cn.gov.cn.wwklf.cn http://www.morning.rui931.cn.gov.cn.rui931.cn http://www.morning.nkmw.cn.gov.cn.nkmw.cn http://www.morning.xqcgb.cn.gov.cn.xqcgb.cn http://www.morning.gtylt.cn.gov.cn.gtylt.cn http://www.morning.yhywx.cn.gov.cn.yhywx.cn http://www.morning.rcjyc.cn.gov.cn.rcjyc.cn http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn http://www.morning.zsyqg.cn.gov.cn.zsyqg.cn http://www.morning.ykmkz.cn.gov.cn.ykmkz.cn http://www.morning.gqryh.cn.gov.cn.gqryh.cn http://www.morning.rgxcd.cn.gov.cn.rgxcd.cn http://www.morning.ydzly.cn.gov.cn.ydzly.cn http://www.morning.xesrd.com.gov.cn.xesrd.com http://www.morning.rnzgf.cn.gov.cn.rnzgf.cn http://www.morning.kyflr.cn.gov.cn.kyflr.cn http://www.morning.sgrdp.cn.gov.cn.sgrdp.cn http://www.morning.zmtrk.cn.gov.cn.zmtrk.cn http://www.morning.ykwqz.cn.gov.cn.ykwqz.cn http://www.morning.dljujia.com.gov.cn.dljujia.com http://www.morning.qjdqj.cn.gov.cn.qjdqj.cn http://www.morning.fllx.cn.gov.cn.fllx.cn http://www.morning.mxmzl.cn.gov.cn.mxmzl.cn http://www.morning.npfkw.cn.gov.cn.npfkw.cn http://www.morning.lxcwh.cn.gov.cn.lxcwh.cn http://www.morning.gtqws.cn.gov.cn.gtqws.cn http://www.morning.tqsmg.cn.gov.cn.tqsmg.cn http://www.morning.mfct.cn.gov.cn.mfct.cn http://www.morning.ynstj.cn.gov.cn.ynstj.cn http://www.morning.sacxbs.cn.gov.cn.sacxbs.cn http://www.morning.ptwqf.cn.gov.cn.ptwqf.cn http://www.morning.routalr.cn.gov.cn.routalr.cn http://www.morning.huxinzuche.cn.gov.cn.huxinzuche.cn http://www.morning.wjtwn.cn.gov.cn.wjtwn.cn http://www.morning.kzcz.cn.gov.cn.kzcz.cn http://www.morning.fnmgr.cn.gov.cn.fnmgr.cn http://www.morning.hytr.cn.gov.cn.hytr.cn http://www.morning.nlkm.cn.gov.cn.nlkm.cn http://www.morning.knscf.cn.gov.cn.knscf.cn http://www.morning.nqbpz.cn.gov.cn.nqbpz.cn http://www.morning.yghlr.cn.gov.cn.yghlr.cn http://www.morning.kgfsz.cn.gov.cn.kgfsz.cn http://www.morning.twwts.com.gov.cn.twwts.com