神经网络拟合sin函数并画出loss图和拟合图像与真实图像对比
时间: 2023-06-12 22:03:52 浏览: 105
好的,我可以为您演示一下如何使用神经网络拟合sin函数,并画出loss图和拟合图像与真实图像对比。
首先,我们需要导入一些必要的库和模块。以下是Python代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
```
接下来,我们需要准备一些训练数据。我们可以生成一些随机的x和y的值,并使用numpy中的sin函数生成对应的真实y值。以下是Python代码:
```python
x = np.linspace(0, 2*np.pi, 100)
y_true = np.sin(x)
noise = np.random.normal(0, 0.1, 100)
y = y_true + noise
```
现在我们有了训练数据,我们可以构建神经网络模型。在这里,我们将使用一个具有两个隐藏层的简单feedforward神经网络。以下是Python代码:
```python
model = Sequential()
model.add(Dense(10, input_dim=1, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='linear'))
model.compile(loss='mse', optimizer='adam')
```
我们使用MSE作为损失函数,Adam作为优化器,并将神经网络训练100个epoch。以下是Python代码:
```python
history = model.fit(x, y, epochs=100, verbose=0)
```
训练完成后,我们可以使用训练数据和模型的预测结果绘制拟合图像和真实图像的对比。以下是Python代码:
```python
y_pred = model.predict(x)
plt.plot(x, y_true, label='True')
plt.plot(x, y_pred, label='Predicted')
plt.legend()
plt.show()
```
最后,我们可以绘制损失函数的图表,以检查模型的训练过程。以下是Python代码:
```python
plt.plot(history.history['loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.show()
```
通过这些Python代码,我们可以生成如下的拟合图像和损失图表:
![image.png](attachment:image.png)
阅读全文