使用TensorFlow低级别的API进行编程

  Tensorflow的低级API要使用张量(Tensor)、图(Graph)、会话(Session)等来进行编程。虽然从一定程度上来看使用低级的API非常的繁重,但是它能够帮助我们更好的理解Tensorflow的,更加灵活的控制训练的过程。程序的构建分为两个步骤,第一个步骤是图的构建,第二个步骤是会话的运行。

Tensorflow中张量和变量

  Tensorflow中图包含一系列的节点还有边。这里的节点是各种指令(op),它负责进行张量的计算,边表示的是指令产生的结果,为张量。构建好一张图以后开始运行,图的结构不变,里面的数据不断的流动和更新。其中更新的数据是那些变量。虽然变量属于张量的一种,但是它们还是有很大的不同,可以理解为,张量的值是临时产生的,进行数据运算的时候使用的值,比如在深度学习当中的读入的数据以及计算的结果。而变量的值是我们用来更新的参数,比如W和b等参数。

求解线性模型的参数

import tensorflow as tf
import numpy as np

# 构建一些数据
x_true = np.linspace(-1, 1, 100).astype(np.float32)
y_true = 3*x_true + 1

# 定义W和b变量
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name='weights')
biases = tf.Variable(tf.zeros([1]), name='biases')

# 计算损失
y_pred = Weights * x_true + biases
loss = tf.reduce_mean(tf.square(y_pred - y_true), name='loss')

# 定义优化
optimizer = tf.train.GradientDescentOptimizer(0.1)
train = optimizer.minimize(loss, name='train')

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for i in range(100):
        sess.run(train)
        if i % 10 == 0:
            print('Weights', sess.run(Weights), 'biases', sess.run(biases), 'loss', sess.run(loss))

在Session之前都是对于图的构建,Session里面是进行的图的运行。

使用TensorBoard看一下这个图的结构:

 

posted @ 2018-06-12 16:36  小舔哥  阅读(785)  评论(0编辑  收藏  举报