python神经网络拟合代码
时间: 2023-09-02 21:07:18 浏览: 101
Python实现bp神经网络做拟合
好的,关于神经网络的拟合代码,Python提供了很多第三方库可以使用,比如说tensorflow、keras、pytorch等等。以下是一个基础的tensorflow神经网络拟合代码示例:
```
import tensorflow as tf
import numpy as np
# 初始化输入和输出数据
x_data = np.linspace(-1, 1, 300)[:, np.newaxis]
noise = np.random.normal(0, 0.05, x_data.shape)
y_data = np.square(x_data) - 0.5 + noise
# 定义输入和输出的placeholder
x_input = tf.placeholder(tf.float32, [None, 1])
y_output = tf.placeholder(tf.float32, [None, 1])
# 定义网络结构,包含一个有10个神经元的隐藏层和一个输出层
Weights_L1 = tf.Variable(tf.random_normal([1, 10]))
biases_L1 = tf.Variable(tf.zeros([1, 10]))
Wx_plus_b_L1 = tf.matmul(x_input, Weights_L1) + biases_L1
L1 = tf.nn.tanh(Wx_plus_b_L1)
Weights_Output = tf.Variable(tf.random_normal([10, 1]))
biases_Output = tf.Variable(tf.zeros([1, 1]))
Wx_plus_b_Output = tf.matmul(L1, Weights_Output) + biases_Output
# 定义损失函数和优化器
loss = tf.reduce_mean(tf.square(y_output - Wx_plus_b_Output))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
# 初始化变量
init = tf.global_variables_initializer()
# 启动计算图
with tf.Session() as sess:
sess.run(init)
# 训练1000次
for i in range(1000):
sess.run(train_step, feed_dict={x_input: x_data, y_output: y_data})
# 打印损失和预测结果
print(sess.run(loss, feed_dict={x_input: x_data, y_output: y_data}))
prediction = sess.run(Wx_plus_b_Output, feed_dict={x_input: x_data})
# 绘制拟合曲线
import matplotlib.pyplot as plt
plt.figure()
plt.scatter(x_data, y_data)
plt.plot(x_data, prediction, 'r-', lw=5)
plt.show()
```
以上代码实现了对一个一元非线性函数的拟合,其中包含有一个10个神经元的隐藏层和一个输出层,用了tanh作为激活函数,使用了梯度下降算法来优化损失函数,最终绘制出了拟合曲线。
阅读全文