机器学习(一)TensorFlow训练参数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kmsj0x00/article/details/80697062

本文简介了怎么用tensorflow训练参数
(更多的)完整代码请看https://github.com/Code-0x00/tensorflow_cnn
本文使用的软件及软件库版本为:Python 3.6tensorflow 1.8.0matplotlib 2.2.2
本文以拟合平面 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)

完整的代码请看这里

猜你喜欢

转载自blog.csdn.net/kmsj0x00/article/details/80697062