bp神经网络tensorflow代码
时间: 2023-09-01 21:12:56 浏览: 92
以下是一个基本的BP神经网络的TensorFlow代码示例:
```
import tensorflow as tf
# 定义输入和输出数据
x_data = [[0,0], [0,1], [1,0], [1,1]]
y_data = [[0], [1], [1], [0]]
# 定义输入和输出占位符
x = tf.placeholder(tf.float32, shape=[None, 2])
y = tf.placeholder(tf.float32, shape=[None, 1])
# 定义神经网络模型
W1 = tf.Variable(tf.random_normal([2, 2]), name='weight1')
b1 = tf.Variable(tf.random_normal([2]), name='bias1')
layer1 = tf.sigmoid(tf.matmul(x, W1) + b1)
W2 = tf.Variable(tf.random_normal([2, 1]), name='weight2')
b2 = tf.Variable(tf.random_normal([1]), name='bias2')
hypothesis = tf.sigmoid(tf.matmul(layer1, W2) + b2)
# 定义损失函数和优化器
cost = -tf.reduce_mean(y * tf.log(hypothesis) + (1 - y) * tf.log(1 - hypothesis))
train = tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(cost)
# 启动会话并运行优化器
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for step in range(10001):
_, cost_val = sess.run([train, cost], feed_dict={x: x_data, y: y_data})
if step % 1000 == 0:
print(step, cost_val)
# 训练结束后预测结果
predicted = tf.cast(hypothesis > 0.5, dtype=tf.float32)
accuracy = tf.reduce_mean(tf.cast(tf.equal(predicted, y), dtype=tf.float32))
h, c, a = sess.run([hypothesis, predicted, accuracy], feed_dict={x: x_data, y: y_data})
print("\nHypothesis: ", h, "\nCorrect: ", c, "\nAccuracy: ", a)
```
在这个例子中,我们使用了一个具有两个隐藏层的BP神经网络,输入是两个数字,输出是一个数字。我们使用了sigmoid函数作为激活函数,使用交叉熵作为损失函数,使用梯度下降优化器进行优化。在进行预测时,我们将预测结果转换为0或1,并计算准确率。
阅读全文