用rnn模型预测正弦函数,且可视化损失函数,隐藏层
时间: 2024-03-10 18:49:16 浏览: 49
RNN简单应用—-预测正弦函数
好的,我可以为您提供如下代码来实现您的需求:
```python
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense, SimpleRNN
# 生成正弦函数的数据
seq_len = 100
seq = np.sin(np.linspace(0, 2*np.pi, seq_len + 1))
# 将序列拆分成多个输入与输出对
inputs = seq[:-1]
outputs = seq[1:]
# 定义RNN模型
model = Sequential()
model.add(SimpleRNN(10, input_shape=(1, 1)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# 将输入和输出数据reshape成符合模型输入的格式
inputs = np.reshape(inputs, (seq_len, 1, 1))
outputs = np.reshape(outputs, (seq_len, 1))
# 训练模型并可视化损失函数
history = model.fit(inputs, outputs, epochs=100, batch_size=1, verbose=2)
plt.plot(history.history['loss'])
plt.title('Model Loss')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.show()
# 用训练好的模型对新的数据进行预测
test_seq = np.sin(np.linspace(0, 4*np.pi, 100))
test_inputs = test_seq[:-1]
test_outputs = test_seq[1:]
test_inputs = np.reshape(test_inputs, (seq_len, 1, 1))
test_outputs = np.reshape(test_outputs, (seq_len, 1))
predicted_outputs = model.predict(test_inputs)
plt.plot(test_outputs, label='Ground Truth')
plt.plot(predicted_outputs, label='Predictions')
plt.legend()
plt.show()
```
这段代码与上面给出的代码类似,只是将隐藏层的大小改为了10。运行这段代码后,您将会看到两幅图像,一幅是训练过程中损失函数的变化情况,另一幅是模型对新的数据的预测结果和真实结果的对比。
阅读全文