下面这段Python代码生成了一些三维数据 然后用一个平面拟合
import tensorflow as tf
import numpy as np
# 生成2*100的数据
x = np.float32(np.random.rand(2, 100)) # 生成2*100的输入数据
y_ = np.dot([0.1, 0.2], x) + 0.3 # 标准结果
# 使用variable默认加入要训练的参数
# random_uniform 生成均匀分布的数据 第一个参数是矩阵shape 后两个参数是数据范围
w = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
# 生成一个全0的集合 长度为1
b = tf.Variable(tf.zeros([1])) # 偏置项
# 前向传播
# matmul两个矩阵相乘 结果每一项加b中对应的项
y = tf.matmul(w, x) + b
# 反向传播
# 定义losss函数 最小化方差
loss = tf.reduce_mean(tf.square(y-y_))
# 使用梯度下降进行参数优化
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
with tf.Session() as sess:
# 初始化变量
sess.run(tf.initialize_all_variables())
# 进行200次迭代训练
for step in range(200):
sess.run(train_step)
# 打印训练后的参数值
# 结果应该近似于 w: [[0.1 0.2]], b: [0.3]
print("reslut: w: ", sess.run(w), ", b: ", sess.run(b) )