第三章 Tensorflow入门(一)

# -*- coding: utf-8 -*-
"""
Created on Mon Jan  7 21:52:56 2019
@author公众号: 呦呦信息
"""
'''
第三章 Tensorflow入门
3.1 TensorFlow计算模型--计算图
计算图是TensorFlow中最基本的一个概念,TensorFlow中的所有计算都会被转化为计算图上的节点。
3.1.1计算图的使用
'''
import tensorflow as tf
a = tf.constant([1.0, 2.0], name = 'a')
b = tf.constant([3.0, 4.0], name = 'b')
result = a + b
'''
在TensorFlow程序中,系统会自动维护一个默认的计算图,通过tf.get_default_graph函数可以获取
当前默认的计算图。
'''
print(a.graph is tf.get_default_graph()) #True; a.graph查看张量所属的计算图
'''
TensorFlow通过tf.Graph()函数来生成新的计算图,不同计算图上的张量和运算都不会共享。
'''
g1 = tf.Graph()
with g1.as_default():
    v = tf.get_variable("v", initializer = tf.zeros_initializer()(shape = [1]))
    v1 = tf.get_variable("v1", initializer = tf.ones_initializer()(shape = [1,2]))
#在计算图g1中读取变量“v”的取值
with tf.Session(graph = g1) as sess:
    tf.initialize_all_variables().run()
    with tf.variable_scope("", reuse = True):
        print(sess.run(tf.get_variable("v")))#[0.];在算图g1中,v取值为0
        print(sess.run(tf.get_variable("v1")))#[[1. 1.]]
'''
Tensorflow中的计算图不仅可以用于隔离张量和计算,还提供了管理张量和计算的机制。计算图可以通过tf.Graph.devices
函数来指定运行计算的设备。这为TensorFlow使用GPU提供了机制。
在一个计算图中,可以通过集合(collection)来管理不同类别的资源。

tf.add_to_collection()#将资源加入一个或者多个集合中
tf.get_collection() #获取一个集合里的所有资源

#TensorFlow中维护的常用的集合列表
tf.GraphKeys.TRAINABLE_VARIABLES #可学习的变量,用于模型的训练,生成模型可视化内容
tf.GraphKeys.VARIABLES #所有变量,用于持久化TensorFlow模型
tf.GraphKeys.SUMMARIES #日志生成相关的张量,用于TensorFlow计算可视化
tf.GraphKeys.QUEUE_RUNNERS #处理输入的QueueRunner,用于输入处理
tf.GraphKeys.MOVING_AVERAGE_VARIABLES#所有计算了滑动平均值的变量,用于计算变量的滑动平均值
'''

'''
3.2 TensorFlow数据模型---张量
3.2.1张量的概念
张量可以被简单理解为多维数组,但是张量在TensorFlow中的实现并不是采用数组的形式,他只是对TensorFlow中运算结果的引用。
在张量中并没有真正的保存数字,它保存的是如何得到这些数字的计算过程。
'''
result1 = tf.add(a, b, name = "add")
print(result1) #Tensor("add_12:0", shape=(2,), dtype=float32)
#可以看出一个Tensor中主要保存了三个属性,name,shape和type。
#name的命名方式为node:src_output,node为节点,src_output表示当前张量来自节点的第几个输出。
'''
3.2.2张量的使用
张量的使用可以总结为两大类:
一、对中间计算结果的引用
使用张量保存中间结果可以大大提高代码的可读性。
二、当计算图构造完成之后,张量可以用来获取计算结果,也就是得到真实的数字。
虽然张量本身没有存储具体的数字,但是通过session就可以得到这些真实的数字。
'''
print(result.get_shape()) #(2,);获取tensor的shape,(2,)表示result是一个一维数组,长度为2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机视觉与OpenCV

客官,,打赏是什么意思?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值