Tensorflow:实战Google深度学习框架 ---学习笔记——第三章 TensorFlow入门

3.1 TensorFlow计算模型——计算图

两个重要概念——Tensor和Flow。在TensorFlow中,张量可以被理解为多维数组。Flow,直观表达了张量之间通过计算相互转化的过程。TensorFlow是一个通过计算图的形式来表述计算 的编程系统,其中的每一个计算都是计算图上的一个节点,节点之间的边描述了计算图之间的依赖关系。

TF程序一般分两个阶段,第一个阶段需要定义计算图中所有的计算;第二个阶段为执行计算。

#!usr/bin/python
# -*- coding: utf-8 -*-

import tensorflow as tf
a = tf.constant([1.0, 2.], name='a')
b = tf.constant([2.0, 3.], name='b')
result = a + b

在TF中,系统会自动维护一个默认的计算图,通过tf.get_default_graph函数可以获取当前默认的计算图。

TF还支持通过tf.Graph函数来生成新的计算图。不同计算图上的张量和运算都不会共享。

import tensorflow as tf

g1 = tf.Graph()
with g1.as_default():
    # 在计算图g1中定义变量"V",并设置初始值为0
    V = tf.get_variable(
        "V", shape=[1], initializer=tf.zeros_initializer
    )

g2 = tf.Graph()
with g2.as_default():
    # 在计算图g2中定义变量"V",并设置初始值为1
    V = tf.get_variable(
        "V", shape=[1], initializer=tf.ones_initializer
    )

# 在计算图g1中读取变量"V"的取值
with tf.Session(graph=g1) as sess:
    tf.global_variables_initializer().run()
    with tf.variable_scope("", reuse=True):
        # 在计算图g1中,变量"V"的取值应该为0,所以下面这行运行输出[0.]
        print(sess.run(tf.get_variable("V")))

# 在计算图g2中读取变量"V"的取值
with tf.Session(graph=g2) as sess:
    tf.global_variables_initializer().run()
    with tf.variable_scope("", reuse=True):
        # 在计算图g2中,变量"V"的取值应该为0,所以下面这行运行输出[1.]
        print(sess.run(tf.get_variable("V")))

TF中的计算图不仅仅可以用来隔离张量和计算,它还可以提供管理张量和计算的机制。计算图可以通过tf.Graph.device函数来指定运行计算的设备。

import tensorflow as tf

g = tf.Graph()
# 指定计算运行的设备
with g.device('/gpu:0'):
    result = a + b

在一个计算图中,可以通过集合(collection)来管理不同类别的资源。如通过tf.add_to_collection函数可以将资源加入一个或多个集合中,然后通过tf.get_collection函数获取一个集合里面的所有资源。

TF中维护的集合列表
集合名称集合内容使用场景
tf.GraphKeys.VARIABLES所有变量持久化TF模型
tf.GraphKeys.TRAINABLE_VARIABLES可学习的变量型训练、生成模型可视化内容
tf.GraphKeys.SUMMARIES日志生成相关的张量TF计算可视化
tf.GraphKeys.QUEUE_RUNNERS处理输入的QueueRuuner输入处理
tf.GraphKeys.MOVING_AVERAGE_VARIABLES所有计算了滑动平均值的变量计算变量的滑动平均值

 

 

 

 

 

 

 

3.2TensorFlow数据模型——张量

在TF中所有数据都通过张量的形式来表示。张量可以理解为多维数组。

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

# tf.constant是一个计算,这个计算的结果为一个张量,保存在变量a中
a = tf.constant([1.0, 2.0], name='a')
b = tf.constant([2.0, 3.0], name='b')
result = tf.add(a, b, name='add')
print(result)

'''
Tensor("add:0", shape=(2,), dtype=float32)
'''

一个张量中主要保存了三个属性:名字(name)、维度(shape)和类型(type)

TF支持14种不同的类型,主要包括了实数(tf.float32、tf.float64)、整数(tf.int8、tf.int16、tf.int32、tf.int64、tf.uint8)、布尔型(tf.bool)和复数(tf.complex64、tf.complex128)。

张量用途:1、对中间计算结果的引用。2、当计算图构造完之后,张量可以用来获得计算结果,就是得到真实的值。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值