TensorFlow实战之TensorFlow入门

3.1 TensorFlow计算模型–计算图

  • 这是我第一次写博客,这学期有在上《机器学习》课程,现在上到深度学习方面了,刚好借此机会学习Google的深度学习框架TensorFlow。
  • 我电脑上安装的是TensorFlow-gpu2.0版本,但本书用的v1.4版本。

主要书目:TensorFlow实战Google深度学习框架(第2版)
书籍百度云链接:https://pan.baidu.com/s/1JEZY4OOzr4qGpncPO26NOA
提取码:f0il

  • 由于第一第二章是深度学习简介和TensorFlow环境搭建,就不再赘述了,环境搭建我推荐用Anaconda傻瓜式安装。主要从第三章TensorFlow入门开始开始记录和学习,而且我个人偏向于记录主要的内容,要用到的时候也方便来查。
  • 重要的代码我尽量每条都给上注释,方便读者和自己查看,有疑问或错误的欢迎在评论区留言。

计算图

  • TensorFlow中最重要的概念就是Tensor和Flow,Tensor的意思是张量,可以简单理解成多维数组。而Flow的意思是流,表明了张量之间通过计算的相互转换。
  • TensorFLow是一种通过计算图的形式来表述计算的编程系统,计算图中的每一个节点表示一个计算,节点之间的边表示相互的依赖关系。
  • 如果没有手动创建,TensorFlow会自动创建一个默认的graph。

代码

import tensorflow.compat.v1 as tf			# 由于我的版本是v2,为了使用v1语法这样导入
from tensorflow.python.client import device_lib		# 方便查看cpu、gpu设备信息
tf.disable_eager_execution()	# 取消v2版本中的动态图

print('设备信息:\n' + str(device_lib.list_local_devices()))  # 打印设备信息

g = tf.Graph()		# 手动创建一个图
g1 = tf.Graph()		# 创建另一个图,两个图相互独立

with g.as_default():		# 指定g这个图,graph.as_default()用于有多个图的时候
	a = tf.Variable(tf.constant([1.0], dtype = 'float'))	# 定义a的初始化方式,但未对其初始化
    b = tf.Variable(tf.constant([2.0], dtype = 'float'))
    result = a + b
with g1.as_default():
	v = tf.Variable(tf.constant([1.0, 2.0], dtype = 'float'))
	
with g.device('/gpu:0'):			# 指定图g在gpu:0上运行
    with tf.Session(graph = g) as sess:		# 在图g上创建会话
        sess.run(tf.global_variables_initializer())		# 初始化所有变量
        print(tf.get_default_graph())		# 打印当前的图
        print(sess.run(result))		# 打印result运行的结果
with g1.device('/cpu:0'):
	with tf.Session(graph = g1) as sess:		# 在图g上创建会话
		sess.run(tf.global_variables_initializer())	
		print(tf.get_default_graph())	
	    print(sess.run(v))		

运行结果:

设备信息:
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 3556329453418332334
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 3188470579
locality {
  bus_id: 1
  links {
  }
}
incarnation: 3685845405683417136
physical_device_desc: "device: 0, name: GeForce GTX 950M, pci bus id: 0000:01:00.0, compute capability: 5.0"
]
<tensorflow.python.framework.ops.Graph object at 0x00000142900B06A0>
3
<tensorflow.python.framework.ops.Graph object at 0x000001428FFF7FD0>
[1. 2.]

从结果可以看出,两个Graph object的地址不同,是两个不同的、独立的图。

结语:以上内容和代码加入了自己的想法和验证,如有不当之处还请指正。
欢迎转载,标明出处。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值