使用tensorflow解决XOR问题示例

  1. 导入包:
import tensorflow as tf
import numpy as np

#定义输入与目标值
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
Y = np.array([[0], [1], [1], [0]])
  1. 设置tensorflow神经网络(包含一层隐藏网络)
#定义占位符,从输入或目标中按行取数据
x = tf.placeholder(tf.float32, [None, 2])
y = tf.placeholder(tf.float32, [None, 1])
#初始化权重,使权重满足正态分布
#w1是输入层到隐含层间的权重矩阵,w2是隐含层到输出层的权重
w1 = tf.Variable(tf.random_normal([2,2]))
w2 = tf.Variable(tf.random_normal([2,1]))
#定义偏移量,b1为隐含层上偏移量,b2是输出层上偏移量。
b1=tf.Variable([0.1,0.1])
b2=tf.Variable(0.1)

#利用激活函数就隐含层的输出值
h=tf.nn.relu(tf.matmul(x,w1)+b1)
#计算输出层的值
out=tf.matmul(h,w2)+b2
  1. 损失函数定义,学习率,优化算法选用
#定义损失函数或代价函数
loss = tf.reduce_mean(tf.square(out - y))
#利用Adam自适应优化算法,学习率0.1
train = tf.train.AdamOptimizer(0.1).minimize(loss)
  1. 运行调参
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for i in range(2000):
        sess.run(train, feed_dict={x: X, y: Y})
        loss_ = sess.run(loss, feed_dict={x: X, y: Y})
        if i%200==0 :
            print("step: %d, loss: %.3f"%(i, loss_))
    print("X: %r"%X)
    print("pred: %r"%sess.run(out, feed_dict={x: X}))
  1. 运行结果(迭代10000次,每500次打印一次损失值)
    使用tensorflow解决XOR问题示例_第1张图片

你可能感兴趣的:(深度学习,tensorflow,机器学习)