目的,给定一堆(本博客为100个)离散的点,通过单层的神经网络进行学习,工具tensorflow,下面开始具体教程:
首先创造数据:
import tensorflow as tf
import nump as np
**create data**
x_data = np.random.randn(100).astype(float32)
y_data = x_data*0.3 + 0.7
这个数据是我们自己生成的,x轴上是100个离散的点,对应为二维坐标系里一条线性直线,具体代码为:
import matplotlib.pyplot as plt
plt.title("scatter diagram.")
plt.xlabel("x_data")
plt.ylabel("y_data")
plt.xlim(xmax=1, xmin=0)
plt.ylim(ymax=1,ymin=0)
plt.plot(x_data,y_data,'ro')
plt.show()
具体图为:
大致形状如图,我们就要构建一个单层的神经网络去描述这些散点图。
下面开始创建tensorflow 结构:
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
biases = tf.Variable(tf.zeros([1]))
y = Weights*x_data + biases
下面构建损失函数和优化器
loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
init = tf.initialize_all_variables()
此时结构已经创建结束,先初始化所有变量。
sess = tf.Session()
sess.run(init)
然后训练,并且每二十次迭代显示一次权重和偏置:
for step in range(201):
sess.run(train)
if step % 20 ==0:
print (step, sess.run(Weights), sess.run(biases))
结果如下图: