tensorflow入门与实战,tensorflow入门教程
tensorflow的运行机制属于“定义”和“运行”的分离。tensorflow定义的内容是在“graph”的容器中完成的。关于graph有几点需要理解。
1.一个“图”代表一个计算任务。
2.在模型运行过程中,"图形"是在会话中启动的。
3.session将图的节点操作发布给CPU GPU,并提供OP方法。也就是说,在tensorflow中定义图的时候,只定义了图。图是静态的,定义完成后不会运行* *如果要执行图中的节点操作,需要使用run函数tf。Session.run,然后才能开始运行* *
维护对象平台操作(示例):将张量流作为tf导入
导入操作系统
#忽略日志级别2以下的日志
OS . environ[ TF _ CPP _ MIN _ LOG _ LEVEL ]= 2
#上述代码用于忽略2级及以下级别的消息(1级是提示,2级是警告,3级是错误)。
定义init_Check():
#为temsor创建持久常数
message=TF . constant( running ~ )
#与一起使用以简化关闭流程
用tf。会话()作为会话:
#这里的输出是一个字节串。要删除字符串引号和“b”(意为byte,byte),只保留单引号内的内容,可以使用decode()方法。
print(sess . run(message)。解码( UTF-8 )
if __name__==__main__ :
Init_Check()计算图:是一个有节点和边的网络。本节定义了要使用的所有数据,即张量对象(常量、变量和占位符),以及要执行的所有计算,即运算对象(OP)。每个节点可以有零个或多个输入,但只有一个输出。网络中的节点表示对象(张量和操作),边表示操作之间流动的张量。该图定义了神经网络的蓝图,但其中没有张量的相关值。为了建立一个计算图表,你需要定义所有的常数,变量和要执行的操作。比如两个向量相加的计算图:demo1: def v _ add():
#定义图形的片段
v1=TF . constant([1,2,3,4,5])
v2=TF . constant([5,4,3,2,1])
v_all=tf.add(v_1,v_2)
用tf。会话()作为会话:
print(sess.run(v_all))
if __name__==__main__ :
#会话运行图
V_add()使用with而不手动关闭会话,隐式关闭demo 2:def v _ add _ interactive session():
# tf。InteractiveSession会比tf更方便。会话会话使自己成为默认会话,需要关闭会话。
sess=tf。交互式会话()
v1=TF . constant([1,2,3,4,5])
v2=TF . constant([5,4,3,2,1])
d=tf.add(v_1,v_2)
print(d.eval())
sess.close()
if __name__==__main__ :
V_add_InteractiveSession()使用InteractiveSession创建的默认会话,需要关闭,但比Session方便。
常量、变量和占位符
张量流通常支持的数据类型:
张量可以理解为一个N维矩阵。所有类型的数据,包括标量、向量和矩阵,都是张量的特殊类型。TensorFlow支持以下三种类型的tensorFlow:
常数:常数是一个值不能改变的张量。变量:当会话中的量值需要更新时,它由变量表示。例如,在神经网络中,需要在训练期间更新权重,这可以通过将权重声明为变量来实现。变量在使用前需要显示和初始化。另外需要注意的是,计算图形的定义中存储了常数,每次加载图形时都会加载相关变量。换句话说,它们占用内存。另一方面,变量是分开存储的。它们可以存储在参数服务器上。占位符:用于在张量流图中输入值。它们可以和feed_dict一起使用来输入数据。在训练神经网络时,它们通常用于提供新的训练样本。在会话中运行计算图表时,可以将值分配给占位符。这样在构造计算图时就不需要真的输入数据了。请注意,占位符不包含任何数据,因此不需要初始化它们。常数:
声明一个标量常数:t_1=tf.constant(4)可以用下面的代码声明一个[1,3]形式的常数向量:t_2=tf.constant([4,3,2])要创建一个所有元素为零的张量,可以使用tf.zeros()函数。该语句可以创建一个[M,N]形式的零元素矩阵。数据类型(dtype)可以是int32、float32等。TF . zeros([m,n],tf.dtype)例如:zero _ t=TF . zeros([2,3],tf.int32)也
sess=tf。交互式会话()
#生成初始值为1的矩阵,或初始值为0的矩阵
Matrix1=tf.ones([9,9],tf.int32)
Matrix4=tf.zeros([18,18],tf.int32)
#用相同的形状克隆1或0的矩阵
Matrix2=tf.ones_like(Matrix1)
Matrix3=tf.zeros_like(Matrix2)
print(sess.run(Matrix1))
打印(sess.run(Matrix2))
print(sess.run(Matrix3))
打印(sess.run(Matrix4))
sess.close()
if __name__==__main__ :
Matrix_likeMatrix()生成一个在一定范围内从初始值到终值排列的序列:对应的值是(stop-start)/(num-1)。示例:tf.linspace(开始、停止、数量)
#num设置步长# range _ t=tf.linspace (2.0,5.0,5) # weget: [2.2.75 3.5 4.25 5。]
从开始(默认值=0)以增量delta(默认值=1)生成一个数字序列,直到最终值(但不包括最终值):下面是一个示例:tf.range(start,limit,delta)示例:def Number_sequence():
#只有一个参数时,表示增量为1,从0到n,有两个参数时,表示m~n,增量为1。三个参数中的最后一个表示增量。
num_se=tf.range(10,50,4)
用tf。会话()作为会话:
print(sess.run(num_se))
if __name__==__main__ :
number _ sequence()转载请联系作者授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。