TensorFlow 基础概念
初识TensorFlow,看了几天教程后有些无聊,决定写些东西,来夯实一下基础,提供些前进动力。
一、Session.run()和Tensor.eval()的区别:
最主要的区别就是可以使用sess.run()一步获取多个Tensor值,而tensor.eval()只能获取当前tensor值。
比如:
labels = [1,2,3]
x = tf.expand_dims(labels, 0)
y = tf.expand_dims(labels, 1)
z = tf.expand_dims(labels, -1)
print(sess.run([x,y,z]))
注:对于tensor t,在使用t.eval()时,等价于:tf.get_default_session().run(t)。
此外,还有一个用法,operation.run(),等价于:tf.get_default_session().run(op)。operation是什么呢,就是计算图中的一个计算节点,定义一个计算的公式。
比如:
train_step=tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
train_step.run(feed_dict={x:batch_xs,y_:batch_ys,keep_prob:0.5})
注:调用operation.run()和Tensor.eval()时,其参数是session,但该参数可选,默认是None,标示进程中默认的Session。那么如何设置默认session呢?两种方式:
1、with tf.Session():
2、 sess = tf.Session()
with sess.as_default():
print(sess.run([x,y,z]))
sess.close()
此外,还可以设置默认图
graph = tf.Graph()
with graph.as_default():
二、graph和session的必要性
Python的计算效率比较低,而深度学习需要大量的迭代计算。所以,通常会使用函数库,如Numpy,把类似矩阵乘法这样的复杂运算使用其他外部语言(比如C++)来实现。但计算完成后从外部切换回Python仍然开销很大。所以,先把所有的计算操作公式定义好(这个用图描述,只是初级都用默认图),然后全部一次性在Python外运行计算(这个在定义的会话session中完成)。这是graph和session的由来及用处。
session有三种定义方式:
1、该方式需要调用sess.close()来关掉sess。
sess=tf.Session()
init=tf.global_variables_initializer()
sess.run(init)
sess.close()
2、该方式创建context,当上下文退出时自动释放,不需要手动关掉session。
with tf.Session() as sess:
init=tf.global_variables_initializer()
sess.run(init)
3、该方式可以在sess中定义operation。
sess = tf.InteractiveSession()
session可以有多个,graph也可以有多个,具体如下:
Session类的构造函数:tf.Session.__init__(target='',graph=None,config=None)
如果创建Session时没有指定Graph,则Session会加载默认的Graph。如果在一个进程中创建了多个Graph(这是会的,可能有多层,多个结构,或分布式处理),则需要创建不同的Session来加载每个Graph,而每个Graph也可以加载在多个Session中进行计算。一个session中只能有一个图,而一个图可以放在多个session中。
g1 = tf.Graph()
with g1.as_default():
c1 = tf.constant([1.0,1.0])
with tf.Graph().as_default() as g2:
c2 = tf.constant([2.0,2.0])
with tf.Session(graph=g1) as sess1:
print sess1.run(c1)
with tf.Session(graph=g2) as sess2:
print sess2.run(c2)
Graph中的operation定义好之后,看sess.run()要运行哪个,运行哪个就触发哪个。
TensorFlow 基础概念的更多相关文章
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- TCP/IP基础概念及通信过程举例
TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...
- Jmeter基础之---jmeter基础概念
Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...
- 快速入门系列--WCF--01基础概念
转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...
- 理解 angular2 基础概念和结构 ----angular2系列(二)
前言: angular2官方将框架按以下结构划分: Module Component Template Metadata Data Binding Directive Service Dependen ...
- JavaBean 基础概念、使用实例及代码分析
JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...
- RabbitMQ基础概念详细介绍
http://blog.csdn.net/column/details/rabbitmq.html 转至:http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多 ...
- linux设备驱动归纳总结(二):模块的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...
- linux设备驱动归纳总结(一)内核的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...
随机推荐
- PHP 的$server变量
PHP中$_SERVER["QUERY_STRING"]函数 详解PHP中$_SERVER函数的QUERY_STRING和 $_SERVER存储当前服务器信息,其中有几个值 如 ...
- git 常用命令 command 1.0(本地 local repository 对远程仓库 remote repository 的操作)
输入 q 退出 日志界面
- Proxy:简单小巧又强大好用的代理系统
之前的文章介绍了许多我们在用的DevOps相关的工具系统,例如:方便创建多套运行环境的Alodi,对运维友好的配置中心Kerrigan,强大的自定义任务引擎Probius以及专注于数据库自动化的ove ...
- 算法——最长上升子序列(DP和二分)
给定一个无序的整数数组,找到其中最长上升子序列的长度. 输入: [10,9,2,5,3,7,101,18] 输出: 4 纯DP 解体思路:利用动态规划的方法,从一个方向遍历数组,每次获取以该位置为子序 ...
- redis学习之——主从复制(replication)
准备:拥有linux环境,并安装redis mater:主机,进行写操作 slave:从机,进行读操作 一.配置 继续前边的学习.我们是拷贝redis.conf,文件到了/root /redis 下. ...
- EditPlus各个版本的注册码,亲测可用
原文链接:https://www.cnblogs.com/shihaiming/p/6422441.html EditPlus4注册码 注册名:host1991 序列号:14F50-CD5C8- ...
- Vulnhub实战靶场:ME AND MY GIRLFRIEND: 1
一.环境搭建 1.官网下载连接:https://www.vulnhub.com/entry/me-and-my-girlfriend-1,409/ 2.下载之后,使用Oracle VM Virtual ...
- Vagrant批量安装CentOS7
环境准备 下载virtualbox https://download.virtualbox.org/virtualbox/6.1.10/VirtualBox-6.1.10-138449-Win.exe ...
- 实验4 汇编应用编程和c语言程序反汇编分析
1. 实验任务1 教材「实验9 根据材料编程」(P187-189)编程:在屏幕中间分别显示绿色.绿底红色.白底蓝色的字符串'welcome to masm!'. 解题思路:根据学习的知识,我知道该页在 ...
- [日常摸鱼]HDU1724 Ellipse-自适应Simpson法
模板题~ QAQ话说Simpson法的原理我还是不太懂-如果有懂的dalao麻烦告诉我~ 题意:每次给一个椭圆的标准方程,求夹在直线$x=l$和$x=r$之间的面积 Simpson法 (好像有时候也被 ...