欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

tensorflow基本使用

程序员文章站 2022-07-13 13:10:06
...

理解tensorflow
  • 使用图(graph)来表示计算任务
  • 在被称为会话(session)的上下文(context)中执行图
  • 使用tensor(张量)表示数据
  • 通过变量(variable)维护状态
  • 使用feed和fetch可以为任意的操作(arbitrary operation)赋值或者从其中获取数据

tensorflow是一个编程系统,使用图来表示计算任务。图中的节点被称作op(opreation),op可以获得0个或多个tensor,产生0个或多个tensor。每个tensor是一个类型化的多维数组。
图描述了计算的过程。为了进行计算,图必须在会话中启动,会话负责将图中的op分发到CPU或GPU上进行计算,然后将产生的tensor返回。在python中,tensor就是numpy.ndarray对象。

tensorflow程序阶段

一般被组织成两个阶段:构建阶段和执行阶段

  • 构建阶段:op的执行顺序被描述成一个图
  • 执行阶段:使用会话执行图中的op
tensorflow使用实例
import tensorflow as tf  #导入tensorflow库
mat1 = tf.constant([[3.,3.]]) #创建一个1*2矩阵
mat2 = tf.constant([[2.],[2.]]) #创建一个2*1矩阵
product = tf.matmul(mat1,mat2)  #创建op执行两个矩阵的乘法
sess = tf.Session()  #启动默认图
res = sess.run(product)  #在默认图中执行op操作
print(res)  #输出乘积结果
sess.close()  #关闭session
交互式会话(interactivesession)

为了方便使用ipython之类的python交互环境,可以使用交互式会话来代替session。使用类似Tensor.run()和Operation.eval()来代替Session.run(),避免使用一个变量来持有会话。

import tensorflow as tf
sess = tf.InteractiveSession() #创建交互式对话
a = tf.Variable([1.0,2.0]) #创建变量数组
b = tf.constant([3.0,4.0]) #创建常量数组
sess.run(tf.global_variables_initializer()  #变量初始化
res = tf.add(a,b)  #创建加法操作
print(res,eval())  #执行操作并输出结果
Feed操作

Feed机制可以临时代替图中任意操作中的tensor,最常见的用例是使用tf.placeholder()创建占位符,相当于是作为图中的输入,然后使用Feed机制向图中占位符提供数据进行计算。

import tensorflow as tf
sess = tf.InteractiveSession()
input1 = tf.placeholder(tf.float32)#创建占位符
input2 = tf.placeholder(tf.float32)#创建占位符
res = tf.mul(input1,input2)#创建乘法操作
res.eval(feed_dict{input1:[7.],input2:[2.]}) #求值