本文简介了怎么用tensorflow训练参数
(更多的)完整代码请看https://github.com/Code-0x00/tensorflow_cnn
本文使用的软件及软件库版本为:Python 3.6
、tensorflow 1.8.0
、matplotlib 2.2.2
本文以拟合平面
y=0.1x1+0.2x2+0.3
y
=
0.1
x
1
+
0.2
x
2
+
0.3
为例:
首先生成100个训练样本
x_data = np.float32(np.random.rand(2, 100)) # 随机输入
y_data = np.dot([0.100, 0.200], x_data) + 0.300
然后构建图并定义优化函数
b = tf.Variable(tf.zeros([1]))
w = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(w, x_data) + b
loss = tf.reduce_mean(tf.square(y - y_data)) # 预测值与标准值的均方差
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss) # 训练目标是最小化loss的值
最后启动训练程序就可以了,这里用matplotlib绘制了投影面上直线的拟合过程
with tf.Session() as sess:
# 初始化所有变量
tf.global_variables_initializer().run()
for step in range(200):
sess.run(train)
if step % 20 == 0:
k = sess.run(w)[0]
d = sess.run(b)[0]
print(step, k, d)
x_p = [[-1, -1], [1, 1]]
k_label = [0.100, 0.200]
y_label = [
np.dot(k_label, x_p[0]) + 0.300,
np.dot(k_label, x_p[1]) + 0.300
]
y_p = [
np.dot(k, x_p[0]) + d,
np.dot(k, x_p[1]) + d
]
plt.cla()
plt.plot([-10, 10], y_label)
plt.plot([-10, 10], y_p)
plt.pause(0.9)
完整的代码请看这里