利用Python语言实现神经网络拟合sin(x)函数
时间: 2023-11-27 18:51:45 浏览: 125
下面是一个简单的 Python 代码,可以使用神经网络拟合 sin(x) 函数。
首先,我们需要导入必要的库:
```python
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
```
接下来,我们生成一些训练数据。这里我们使用 numpy 库生成从 0 到 2π 的一些等间隔的数值:
```python
x_train = np.arange(0, 2*np.pi, 0.1)
y_train = np.sin(x_train)
```
然后,我们定义一个简单的神经网络模型。这个模型只有一个输入层、一个隐藏层和一个输出层,每个层都有 10 个神经元。
```python
model = Sequential()
model.add(Dense(10, input_dim=1, activation='sigmoid'))
model.add(Dense(10, activation='sigmoid'))
model.add(Dense(1, activation='linear'))
```
接下来,我们编译模型并开始训练:
```python
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(x_train, y_train, epochs=1000, batch_size=10)
```
最后,我们使用训练好的模型对 sin(x) 函数进行预测,并将预测结果绘制成图表:
```python
x_test = np.arange(0, 2*np.pi, 0.1)
y_test = np.sin(x_test)
y_predict = model.predict(x_test)
plt.plot(x_test, y_test, 'b')
plt.plot(x_test, y_predict, 'r')
plt.show()
```
完整的代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
x_train = np.arange(0, 2*np.pi, 0.1)
y_train = np.sin(x_train)
model = Sequential()
model.add(Dense(10, input_dim=1, activation='sigmoid'))
model.add(Dense(10, activation='sigmoid'))
model.add(Dense(1, activation='linear'))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(x_train, y_train, epochs=1000, batch_size=10)
x_test = np.arange(0, 2*np.pi, 0.1)
y_test = np.sin(x_test)
y_predict = model.predict(x_test)
plt.plot(x_test, y_test, 'b')
plt.plot(x_test, y_predict, 'r')
plt.show()
```
阅读全文