你可以创建一个BP神经网络并利用训练数据去拟合一个函数时,通过查看网络的隐藏层和输出层的权重和偏置项的值,可以得到这个拟合函数。但是由于神经网络是一个复杂的非线性系统,这个拟合函数并不能以简洁的数学形式表示出来,但是可以通过在新的输入上运用前向传播来进行预测,即实现函数的拟合功能。
下面是一个简单的三层BP神经网络模型拟合函数的例子,使用python的keras库:
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
# 创建数据
x = np.linspace(-1, 1, 200)
np.random.shuffle(x) # randomize the data
y = 0.5 * x + 2 + np.random.normal(0, 0.05, (200, ))
# 构建模型
model = Sequential()
model.add(Dense(output_dim=64, input_dim=1))
model.add(Dense(output_dim=1))
# 模型编译
model.compile(loss='mse', optimizer='sgd')
# 训练模型
print('Training -----------')
for step in range(301):
cost = model.train_on_batch(x, y)
if step % 100 == 0:
print('train cost: ', cost)
虽然我们无法得到一个显式的函数表达式,但是模型在训练后,可以通过model.predict()
方法来预测新的输入值,实现与拟合函数相同的功能。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/173189.html