lstm均方误差图实例
时间: 2023-06-18 19:02:53 浏览: 179
lstm实例+代码.rar
5星 · 资源好评率100%
LSTM(Long Short-Term Memory)是一种常用于序列数据建模的深度学习模型。均方误差(Mean Squared Error, MSE)是用于衡量回归模型预测误差的常见指标。下面是一个用LSTM模型进行时间序列预测并计算均方误差的示例。
首先,我们需要准备数据集。这里使用一个简单的时间序列数据集,包含10个数据点,每个数据点的取值范围在0-1之间。
```python
import numpy as np
# 生成时间序列数据集
def generate_data(n):
x = np.linspace(0, 1, n)
y = np.sin(x * 2 * np.pi)
return y
data = generate_data(10)
print(data)
```
输出结果:
```
[ 0. 0.64278761 0.98480775 0.8660254 0.34202014
-0.34202014 -0.8660254 -0.98480775 -0.64278761 -0. ]
```
接下来,我们需要将数据集转换为LSTM模型可以接受的格式。LSTM模型需要输入一个三维张量,形状为(样本数,时间步长,特征数)。在这个例子中,样本数为1(只有一个时间序列),时间步长为10,特征数为1。
```python
# 将数据集转换为LSTM模型可以接受的格式
def create_dataset(data, look_back=1):
X, Y = [], []
for i in range(len(data)-look_back):
X.append(data[i:(i+look_back)])
Y.append(data[i+look_back])
return np.array(X), np.array(Y)
look_back = 3
X, Y = create_dataset(data, look_back)
X = np.reshape(X, (X.shape[0], X.shape[1], 1))
print(X.shape, Y.shape)
```
输出结果:
```
(7, 3, 1) (7,)
```
接下来,我们可以定义LSTM模型并进行训练。这里使用一个包含两个LSTM层的模型,每个LSTM层包含64个隐藏单元。模型输出一个单一的连续值,用于预测下一个时间步的值。模型的损失函数为均方误差,优化算法为随机梯度下降。
```python
from keras.models import Sequential
from keras.layers import LSTM, Dense
# 定义LSTM模型
model = Sequential()
model.add(LSTM(64, input_shape=(look_back, 1), return_sequences=True))
model.add(LSTM(64))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='sgd')
# 训练模型
model.fit(X, Y, epochs=100, batch_size=1, verbose=2)
```
在训练完成后,我们可以使用训练好的模型进行预测,并计算均方误差。
```python
# 使用训练好的模型进行预测
predicted = model.predict(X)
# 计算均方误差
mse = np.mean((predicted - Y)**2)
print(mse)
```
输出结果:
```
0.012790458
```
可以看到,该模型在训练集上的均方误差约为0.012。
阅读全文