直接看代码

import tensorflow as tf

# tf.Variable生成的变量,每次迭代都会变化,
# 这个变量也就是我们要去计算的结果,所以说你要计算什么,你是不是就把什么定义为Variable
'''
TensorFlow程序可以通过tf.device函数来指定运行每一个操作的设备。 

这个设备可以是本地的CPU或者GPU,也可以是某一台远程的服务器。
TensorFlow会给每一个可用的设备一个名称,tf.device函数可以通过设备的名称,来指定执行运算的设备。比如CPU在TensorFlow中的名称为/cpu:0。 

在默认情况下,即使机器有多个CPU,TensorFlow也不会区分它们,所有的CPU都使用/cpu:0作为名称。 

–而一台机器上不同GPU的名称是不同的,第n个GPU在TensorFlow中的名称为/gpu:n。
–比如第一个GPU的名称为/gpu:0,第二个GPU名称为/gpu:1,以此类推。
–TensorFlow提供了一个快捷的方式,来查看运行每一个运算的设备。
–在生成会话时,可以通过设置log_device_placement参数来打印运行每一个运算的设备。 

–除了可以看到最后的计算结果之外,还可以看到类似“add: /job:localhost/replica:0/task:0/cpu:0”这样的输出
–这些输出显示了执行每一个运算的设备。比如加法操作add是通过CPU来运行的,因为它的设备名称中包含了/cpu:0。
–在配置好GPU环境的TensorFlow中,如果操作没有明确地指定运行设备,那么TensorFlow会优先选择GPU
'''
with tf.device('/cpu:0'):
    x = tf.Variable(3, name='x')
y = tf.Variable(4, name='y')
f = x*x*y + y + 2

# 创建一个计算图的一个上下文环境
# 配置里面是把具体运行过程在哪里执行给打印出来
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# 碰到session.run()就会立刻去调用计算
sess.run(x.initializer)
sess.run(y.initializer)
result = sess.run(f)
print(result)
sess.close()

通常session操作

import tensorflow as tf

x = tf.Variable(3, name='x')
y = tf.Variable(4, name='y')
f = x*x*y + y + 2

# 在with块内部,session被设置为默认的session
with tf.Session() as sess:
    x.initializer.run()     # 等价于 tf.get_default_session().run(x.initializer)
    y.initializer.run()
    result = f.eval()       # 等价于 tf.get_default_session().run(f)
    print(result)

全局变量初始化

import tensorflow as tf

x = tf.Variable(3, name='x')
y = tf.Variable(4, name='y')
f = x*x*y + y + 2

# 可以不分别对每个变量去进行初始化
# 并不立即初始化,在run运行的时候才初始化
init = tf.global_variables_initializer()

with tf.Session() as sess:
    init.run()
    result = f.eval()

print(result)
import tensorflow as tf

x = tf.Variable(3, name='x')
y = tf.Variable(4, name='y')
f = x*x*y + y + 2

init = tf.global_variables_initializer()

# InteractiveSession和常规的Session不同在于,自动默认设置它自己为默认的session
# 即无需放在with块中了,但是这样需要自己来close session,但在Jupyter可方便使用
sess = tf.InteractiveSession()
init.run()
result = f.eval()
print(result)
sess.close()

# TensorFlow程序会典型的分为两部分,第一部分是创建计算图,叫做构建阶段,
# 这一阶段通常建立表示机器学习模型的的计算图,和需要去训练模型的计算图,
# 第二部分是执行阶段,执行阶段通常运行Loop循环重复训练步骤,每一步训练小批量数据,
# 逐渐的改进模型参数

图的管理

import tensorflow as tf

# 任何创建的节点会自动加入到默认的图
x1 = tf.Variable(1)
print(x1.graph is tf.get_default_graph())

# 大多数情况下上面运行的很好,有时候或许想要管理多个独立的图
# 可以创建一个新的图并且临时使用with块是的它成为默认的图
graph = tf.Graph()
x3 = tf.Variable(3)
with graph.as_default():
    x2 = tf.Variable(2)

print(x2.graph is graph)
print(x2.graph is tf.get_default_graph())

print(x3.graph is tf.get_default_graph())

图的生命周期

import tensorflow as tf

# 当去计算一个节点的时候,TensorFlow自动计算它依赖的一组节点,并且首先计算依赖的节点
w = tf.constant(3)
x = w + 2
y = x + 5
z = x * 3

with tf.Session() as sess:
    print(y.eval())
    # 这里为了去计算z,又重新计算了x和w,除了Variable值,tf是不会缓存其他比如contant等的值的
    # 一个Variable的生命周期是当它的initializer运行的时候开始,到会话session close的时候结束
    print(z.eval())

# 如果我们想要有效的计算y和z,并且又不重复计算w和x两次,我们必须要求TensorFlow计算y和z在一个图里
with tf.Session() as sess:
    y_val, z_val = sess.run([y, z])
    print(y_val)
    print(z_val)

TensorFlow代码初识的更多相关文章

  1. tensorflow 代码阅读

    具体实现: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/framework 『深度长文』Tensorflo ...

  2. 关于使用实验室服务器的GPU以及跑上TensorFlow代码

    连接服务器 Windows - XShell XFtp SSH 通过SSH来连接实验室的服务器 使用SSH连接已经不陌生了 github和OS课设都经常使用 目前使用 192.168.7.169 使用 ...

  3. 条件随机场(crf)及tensorflow代码实例

    对于条件随机场的学习,我觉得应该结合HMM模型一起进行对比学习.首先浏览HMM模型:https://www.cnblogs.com/pinking/p/8531405.html 一.定义 条件随机场( ...

  4. 如何高效的学习 TensorFlow 代码? 以及TensorFlow相关的论文

    https://www.zhihu.com/question/41667903 源码分析 http://www.cnblogs.com/yao62995/p/5773578.html 如何贡献Tens ...

  5. TensorFlow --- 01初识

    由于博客园对Markdown支持不够友好,阅读此文请前往云栖社区:TensorFlow --- 01初识

  6. Transformer解析与tensorflow代码解读

    本文是针对谷歌Transformer模型的解读,根据我自己的理解顺序记录的. 另外,针对Kyubyong实现的tensorflow代码进行解读,代码地址https://github.com/Kyuby ...

  7. 深度学习之卷积神经网络CNN及tensorflow代码实例

    深度学习之卷积神经网络CNN及tensorflow代码实例 什么是卷积? 卷积的定义 从数学上讲,卷积就是一种运算,是我们学习高等数学之后,新接触的一种运算,因为涉及到积分.级数,所以看起来觉得很复杂 ...

  8. 深度学习之卷积神经网络CNN及tensorflow代码实现示例

    深度学习之卷积神经网络CNN及tensorflow代码实现示例 2017年05月01日 13:28:21 cxmscb 阅读数 151413更多 分类专栏: 机器学习 深度学习 机器学习   版权声明 ...

  9. 运行TensorFlow代码时报错

    运行TensorFlow代码时报错 错误信息ImportError: libcublas.so.10.0: cannot open shared object file 原因:TensorFlow版本 ...

随机推荐

  1. 【Spring】文件上传

    一:引入所需jar包 // https://mvnrepository.com/artifact/commons-fileupload/commons-fileuploadcompile group: ...

  2. PHP为什么有人学不会

    互联网进入到人们生活中的方方面面了,世界首富比尔盖茨多次提到青少年编程,而编程是一种思维习惯的转化. 作为写了10几年程序的人,我听到过一些说编程不好学的抱怨. 从目前见到的数据统计,主要是因为在大学 ...

  3. Power BI 关注博客更新

    原本当你访问你常用的数据库时候,该库的新增,修改,删除,通过PowerBI都很容易发现,但是在Web上面,通过PowerBI来发现Web修改就没那么容易了. 现在,我想通过PowerBI的报告来显示某 ...

  4. 安装vmware tools问题

    我爱破解的xp虚拟机,之前没有装vmware tools,用起来非常不方便.因此,决定安装,但安装时出现了一些问题,特此记录: * 点击虚拟机的安装VMWARE TOOLS ,出现错误提示: 虚拟机需 ...

  5. linux安装postgresql

    第一步在编译安装postgresql源码的时候,需要用到以下依赖,若本机没有的话,需要提前安装依赖环境,执行以下命令:yum install gcc gcc-c++yum install zlib-d ...

  6. webpack前端开发环境搭建

    要搭建webpack开发环境,首先要安装NodeJS,后面的过程均在NodeJS已经安装的基础上进行. 1. 首先建立一个工程目录,命名为,其目录结构如下: 其中dist目录用于存放生成的文件,src ...

  7. 微信小程序之跳转、请求、带参数请求小例子

    wx.request(OBJECT) wx.request发起的是 HTTPS 请求.一个微信小程序,同时只能有5个网络请求连接. 具体参数说明参看微信小程序官方文档-发起请求. 例: //当页面加载 ...

  8. Spock - Document - 03 - Data Driven Testing

    Data Driven Testing Peter Niederwieser, The Spock Framework TeamVersion 1.1 Oftentimes, it is useful ...

  9. https://www.cnblogs.com/yudanqu/p/9467803.html

    https://www.cnblogs.com/yudanqu/p/9467803.html

  10. C语言学习笔记之位运算求余

    我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注意:该方法只对除数是2的N次方幂时才有效. ...