tensorflow入门教程

人工智能感觉很神秘,作为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值也会很接近真实值.

 

posted @ 2017-12-05 09:47  快乐张  阅读(298)  评论(0编辑  收藏  举报