zoukankan      html  css  js  c++  java
  • 使用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看一下这个图的结构:

  • 相关阅读:
    USACO Broken Necklace 通过了
    USACO Broken Necklace
    推荐顺序ACM
    usaco暂时无法访问
    格式
    稳定排序
    归并排序
    浅析Struts1和Struts2的Action线程安全问题
    判别式模型与生成式模型的区别
    远景能源一面
  • 原文地址:https://www.cnblogs.com/jiaxin359/p/9173781.html
Copyright © 2011-2022 走看看