最快的TensorFlow入门32行代码

TensorFlow是基于python的,因此得首先具备python基础。最好的学习方式,莫过于举

例。TensorFlow官网更新非常快,曾经领自己入门的例子如今已在官网找不见踪影了。

例子非常简单,给出一系列二维的点,通过线性回归,找到最优函数。代码如下:

import tensorflow as tf
import time

# 模型参数【W是斜率,b是截距】
W = tf.Variable(0, dtype=tf.float32)
b = tf.Variable(0, dtype=tf.float32)

# 输入的点(x,y)和预测的函数pre_y
x = tf.placeholder(dtype=tf.float32)
y = tf.placeholder(dtype=tf.float32)
pre_y = W * x + b

# 用于训练的数据
x_train = [1, 2, 3, 4]
y_train = [1, 2, 3, 4]

# 损失函数和求梯度下降求损失函数极值
loss = tf.reduce_sum(tf.square(y - pre_y))
optimizer = tf.train.GradientDescentOptimizer(0.01)#0.01称为学习率
train = optimizer.minimize(loss)

# 参数初始化【所有变量使用前必须初始化】
init_ops = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init_ops)#初始化变量
    for i in range(1, 1001):
        sess.run([train], feed_dict={x: x_train, y: y_train})#训练数据
        if i % 10 == 0:
            curW, curb, curLoss = sess.run([W, b, loss], feed_dict={x: x_train, y: y_train})#观察每10步的斜率,截距,损失函数
            print ("curW  = %s, curb = %s, curLoss = %s, after %s steps." % (curW, curb, curLoss, i))
            time.sleep(2) # 每个2秒打印训练情况

这是一个比较简单的线性回归,可以看到在100步后斜率和截距就比较准确了。

curW  = 0.908066, curb = 0.270248, curLoss = 0.0487921, after 10 steps.
curW  = 0.918514, curb = 0.239578, curLoss = 0.0383445, after 20 steps.
curW  = 0.927763, curb = 0.212385, curLoss = 0.0301339, after 30 steps.
curW  = 0.935962, curb = 0.188278, curLoss = 0.0236815, after 40 steps.
curW  = 0.943231, curb = 0.166908, curLoss = 0.0186107, after 50 steps.
curW  = 0.949674, curb = 0.147963, curLoss = 0.0146257, after 60 steps.
curW  = 0.955387, curb = 0.131169, curLoss = 0.011494, after 70 steps.
curW  = 0.96045, curb = 0.116281, curLoss = 0.00903281, after 80 steps.
curW  = 0.964939, curb = 0.103082, curLoss = 0.00709867, after 90 steps.
curW  = 0.968919, curb = 0.091382, curLoss = 0.00557866, after 100 steps.

这就是一个比较简单直观的入门例子。

猜你喜欢

转载自blog.csdn.net/androidchanhao/article/details/79573199