tensorflow入门教程

作者: kuppo | 来源:发表于2017-12-05 09:45 被阅读23次

    人工智能感觉很神秘,作为google公司力推的人工智能框架tensorflow也受到很多人的关注.本文用一个最简单的例子,带领大家看看tensorflow是如何工作的.

    如果你对人工智能的原理不了解可以看这篇文章人工智能-神经网络原理

    首先导入tensorflow和numpy模块

    import tensorflow as tf

    import numpy as np

    我们知道tensorflow的学习是由一些正确的数据去训练,大量训练之后才会根据之前的经验进行预测.所以我们先构造一些正确的数据.

    x = np.random.rand(100).astype(np.float32)

    y = x * 0.3 + 0.4

    这里x是随机的数列,y是真实数据,也就是我们的训练样本.

    下面我们来构造tensorflow中x与y的关系

    Weights = tf.Variable(tf.random_uniform([1], -1, 1))

    biases = tf.Variable(tf.zeros([1]))

    y_prediction = Weights * x + biases

    x是输入值,y是tensorflow预测的值.由于不知道x与y是何种关系,所以用两个变量表示,也就是经常听到的权重Weights和偏置值biases.

    tf.Variable是tensorflow中的变量

    接下来我们要表示出来预测的值与真实值的误差

    loss = tf.reduce_mean(tf.square(y_prediction - y))

    用预测出来的值减去真实值再平方,再求平均值,得出的值loss就是真实值与预测值的误差.其实这就是我们中学里学的方差.

    tf.square是平方运算.tf.reduce_mean是求平均值.

    那么接下来如何让预测值更接近真实值呢,当然是让loss越来越小

    optimizer = tf.train.GradientDescentOptimizer(0.5)

    train = optimizer.minimize(loss)

    在这一步tensorflow会不断调整Weights和biases,去减少loss

    GradientDescentOptimizer是优化器的一种,tensorflow有很多种方法去减少loss

    接下来我们要初始化tensorflow的变量,这点与其他语言不一样,tensorflow的变量不会立刻分配内存,像先把设计图画完再开工

    init = tf.global_variables_initializer()

    激活神经网络

    sess = tf.Session()

    sess.run(init)

    开始训练,我们训练200次,每次都会调用优化器调整权重和偏置值

    我们每20步打印一次Weights,和biases的值

    for step in range(200):

    sess.run(train)

    if step % 20 == 0:

    print(step, sess.run(Weights), sess.run(biases))

    训练到最后,我们发现tensorflow调整出来的Weights和biases非常接近与我们给定的0.3和0.4了,所以如果现在给一个x让tensorflow做预期,得到的y值也会很接近真实值.

    本文链接:https://www.kupposhadow.com/post/5a22463ce717c51ff6741cf2

    相关文章

      网友评论

        本文标题:tensorflow入门教程

        本文链接:https://www.haomeiwen.com/subject/ntsqixtx.html