tensorflow—图,会话,常量,变量

tensorflow基础篇
图(graphs),会话(session),张量(tensor),变量(Variable),节点(operation)
1.在会话中执行任务
2.在图中表示计算任务
3.张量(tensor)表示数据
4.变量(Variable)来维护数据
5.节点(operation)表示一次计算结果

tensorflow是一个编程系统,使用图graphs来表示计算任务,图graphs中的节点称之为op,一个op获得0或多个tensor,执行计算,产生0或多个tensor,tensor看作是一个n维的数组或列表,图必须在session里被启动。

如图关系如下:
在这里插入图片描述
一个session会话中有 graph1和graph2两个图,图中的流程控制如上。

1.创建图,启动图
代码如下:

# import tensorflow as tf
# #创建一个常量
# m=tf.constant([[3,3]])
# #创建一个常量
# x=tf.constant([[2],[3]])
# #创建一个矩阵乘法op,把m和x传入
# res=tf.matmul(m,x)
# #print(res)


# #定义一个会话,启动默认图
# sess=tf.Session()
# #调用sess的run方法执行矩阵乘法op
# #run(res)触发了图中3个op
# reslt=sess.run(res)
# print(reslt)
# sess.close()

op类似于一个方法,例如上述乘法,在会话中调用。
上述中,创建的图为:

# import tensorflow as tf
# m=tf.constant([[3,3]])
# x=tf.constant([[2],[3]])
# res=tf.matmul(m,x)
# #print(res)

此段代码即创建了一个图

在会话中:

# #定义一个会话,启动默认图
# sess=tf.Session()
# #调用sess的run方法执行矩阵乘法op
# #run(res)触发了图中3个op
# reslt=sess.run(res)
# print(reslt)
# sess.close()

上述代码,调用上述op,启动了图。这个就是一个完整的会话,与图。

2.变量
变量用法如下:

# import tensorflow as tf
# x=tf.Variable([1,2])#变量    在使用变量前得初始化
# a=tf.constant([3,3])#常量
# #减法op
# sub=tf.subtract(x,a)
# #加法op
# add=tf.add(x,sub)
# init=tf.global_variables_initializer()#全局变量得初始化
# #定义一个会话
# #会话使用前得初始化
# with tf.Session()as sess:#一个会话
#     sess.run(init)#会话中首先进行变量初始化
#     print(sess.run(sub))
#     print(sess.run(add))

使用变量时,在会话中,必须将变量初始化:

 init=tf.global_variables_initializer()#全局变量得初始化
 .
 .
  sess.run(init)#会话中首先进行变量初始化

例如:写一段累加的tensorflow代码:

import tensorflow as tf
state=tf.Variable(0)
add_op=tf.add(state,1)

updata_op=tf.assign(state,add_op)

init=tf.global_variables_initializer()
with tf.Session()as sess:
    sess.run(init)
    print(sess.run(state))
    print(sess.run(add_op))

    for i in range(2):
        sess.run(updata_op)
        #print(sess.run(updata_op))
        print(sess.run(state))

运行如下:

0
1
1
2

同学们自己探究其原因。

3.张量
Tensor(张量)是Tensorflow中最重要的数据结构,用来表示Tensorflow程序中的所有数据。Tensor本是广泛应用在物理、数学领域中的一个物理量。
实际上,我们可以把Tensor理解成N维矩阵(N维数组)。其中零维张量表示的是一个标量,也就是一个数;一维张量表示的是一个向量,也可以看作是一个一维数组;二维张量表示的是一个矩阵;同理,N维张量也就是N维矩阵。

import tensorflow as tf
m=tf.constant([3,5])
x=tf.constant([2,4])
res=tf.add(m,x)
with tf.Session()as sess:
    print(sess.run(res))
print(res)

输出为:

Tensor("Add:0", shape=(2,), dtype=int32)

上述输出结果表明:构建图的运算过程输出的结果是一个Tensor,且其主要由三个属性构成:Name、Shape和TypeName代表的是张量的名字,也是张量的唯一标识符,我们可以在每个op上添加name属性来对节点进行命名,Name的值表示的是该张量来自于第几个输出结果(编号从0开始),上例中的“Add:0”说明是第一个结果的输出。Shape代表的是张量的维度,上例中shape的输出结果(2,)说明该张量result是一个一维数组,且每个维度数组的长度是2。最后一个属性表示的是张量的类型,每个张量都会有唯一的类型

常用op如下:

1.算术操作符:+ - * / % tf.add(x, y, name=None)
2.加法(支持 broadcasting)tf.subtract(x, y, name=None)
3.减法tf.multiply(x, y, name=None)
4.乘法tf.divide(x, y, name=None)
5.浮点除法, 返回浮点数(python3 除法)tf.mod(x, y, name=None)
6.幂指对数操作符:^ ^2 ^0.5 e^ ln tf.pow(x, y, name=None)
7.幂次方tf.square(x, name=None)
8.平方tf.sqrt(x, name=None)
9.开根号,必须传入浮点数或复数tf.exp(x, name=None)
10.计算 e 的次方tf.log(x, name=None)
11. 以 e 为底,必须传入浮点数或复数 # 取符号、负、倒数、绝对值、近似、两数中较大/小tf.negative(x, name=None)
12. 取负(y = -x).tf.sign(x, name=None)
13.返回 x 的符号tf.reciprocal(x, name=None)
14.取倒数tf.abs(x, name=None)
15.求绝对值tf.round(x, name=None)
16.四舍五入tf.ceil(x, name=None)
17.向上取整tf.floor(x, name=None)
18.向下取整tf.rint(x, name=None)
19.取最接近的整数 tf.maximum(x, y, name=None)
20.返回两tensor中的最大值 (x > y ? x : y)tf.minimum(x, y, name=None)
21.返回两tensor中的最小值 (x < y ? x : y)
22.三角函数和反三角函数tf.cos(x, name=None) tf.sin(x, name=None) tf.tan(x, name=None)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值