深度学习框架之tensorflow基本用法

简述

TensorFlow的基本思想就是使用图(graph)来表示计算任务。在会话(session)的上下文(content)中执行图。TensorFlow程序通常被组织成一个构建阶段和一个执行阶段,在构建阶段,op的执行步骤被描述成一个图。在执行阶段,使用会话执行图中的操作(operation简称op)。例如:通常在构建阶段创建一个图来表示和训练神经网络,然后再执行阶段反复执行图中的训练op。

构建图

首先举一个简单的构建图的例子,使用tensorflow默认图,向其中加入简单的op

import tensorflow as tf
# 创建两个常量op,分别产生一个1 * 2 和 2 * 1矩阵。
# 这个op被作为一个节点加入到默认图中
# 构造器的返回值代表该常量op的返回值
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.], [2.]])
# 创建一个矩阵乘法 matmul op, 把 matrix1和matrix2作为输入
# 返回product代表矩阵乘法的结果
product = tf.matmul(matrix1, matrix2)

经过上面的代码我们就成功构建了一个拥有三个op的图,为了要计算矩阵乘法我们还必须通过session启动这个图

#  启动默认图
sess = tf.Session()
result = sess.run(product)
print(result)
sess.close()  
# 运行结束得到答案之后需要执行close()函数关闭session,以便资源回收。
# 也可以用with隐式关闭
with tf.Session() as sess:
	result = sess.run(product)
	print(result)

TensorFlow将图形定义转换成分布式执行的操作,以充分利用可用的计算资源(CPU或GPU)。一般情况你不需要显示指定使用CPU还是GPU,TensorFlow会自动检测。但是如果机器上有多块GPU,默认只尽可能使用第一块GPU,其它的不参与计算,需要手动指定GPU。

with tf.Session() as sess:
	with tf.device("/gpu:1"):  
		result = sess.run(product)
		print(result)

目前支持的设备包括:

  • “/cpu:0”:机器CPU;
  • “/gpu:0”:机器的第一个GPU,如果有的话
  • “/gpu:1”:机器的第二个GPU,以此类推
    在TensorFlow中图的概念非常重要,我们的神经网络都是用图来构建和训练的。
交互式使用

为了便于IPython之类的Python交互环境,可以使用InteractiveSession代替Session类,使用Tensor.eval()Operation.run()方法代替Session.run()。这样可以避免使用一个变量来持有会话。

# 进入一个交互式TensorFlow会话
import tenserflow as tf
sess = tf.InteractiveSession()
x = tf.Variable([1.0, 2.0])
a = tf.constant([3.0, 3.0])

#  使用初始化器 initializer op的 run()方法初始化 ‘x’
x.initializer.run()

# 增加一个减法sub op,从'x'减去 'a'。运行减法op,输出结果
sub = tf.sub(x, a)
print(sub.eval())  #  ==> [-2., -1.]
TensorFlow的数据结构

在TensorFlow中使用的数据结构是tensor,计算图中,操作间传递的数据都是tensor。相当于一个n维的数组。

TensorFlow的运作方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值