TensorFlow核心

部署运行你感兴趣的模型镜像

一、核心

数据模型:张量;

张量:

n维数据集合,由秩、形状和类型标识。

秩:张量维数(0-标量,1-矢量,2-矩阵);形状:每维长度的列表;类型:tf.float16/32/64,tf.(u)int8/16/32,tf.bool/string

编程模型:数据流图、计算图;

执行模型:初始节点,触发(firing)节点。

二、会话

1.Session与InteractiveSession

InteractiveSession创建的为默认对话,不需要指定会话上下文来确定稍后执行的命令,既不需要with sess或sess.obj.eval()来执行,在with语句中创建、使用会话可确保会话在块执行完时自动关闭。

2.sess.run(tensor/operation)与tensor.eval

eval() 其实就是tf.Tensor的Session.run() 的另外一种写法,但两者有差别

  • eval(): 将字符串string对象转化为有效的表达式参与求值运算返回计算结果
  • eval()也是启动计算的一种方式。基于Tensorflow的基本原理,首先需要定义图,然后计算图,其中计算图的函数常见的有run()函数,如sess.run()。同样eval()也是此类函数,
  • eval()只能用于tf.Tensor类对象,也就是有输出的Operation。对于没有输出的Operation, 可以用.run()或者Session.run();Session.run()没有这个限制。

三、张量的创建方式

  1. 创建常量:tf.constant(value,dtype=,shape=,name=)
  2. 创建操作(!张量形式):算术运算(tf.add,tf.subtract,tf.multiply,tf.div/divide),数学操作(tf.abs/negative/sign/cos/sin/acos/squared_difference),矩阵运算(tf.diag_trace/eye/transpose/norm),张量运算(tf.tensor_dot),字符串操作(tf.encode_base64/decode_base64/string_join)
  3. 占位符tf.place_holder(dtype,shape,name),使用feeddict传入操作数,sess.run(op4,feed_dict={p1:2,p2:3})
  4. Python(numpy)对象转换:tf.convert_to_tensor(value,shape,name),
  5. 创建变量(与placeholder区别:定义时需赋初值&输入值会随时间改变pholder不会):tf.Variable(init_value,dtype,name)。

变量使用前必须先初始化:某变量var.initializer();tf.variables_initializer()初始化一组变量;tf.global_variables_initializer().run()全局。

           6.生成函数(用在Variable内)

  • 相同值填充:tf.zeros(shape,dtype,name);tf.zeros_like(tensor,dtype,name,optimize=True)创建于参数形状相同值全为0的张量;ones();ones_like,fill(dims,value,name)按给定维数创建张量并将元素填充为value,dims为一tuple。
  • 序列填充:tf.lin_space(start,stop,num,name);tf.range(start,limit,delta=1,dtype,name)start可省默认0,delta为增量,limit不包含。
  • 随机分布填充:tf.random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None)生成指定形状的张量用正态分布值填充;tf.truncated_normal(shape,mean,stddev,seed,name)截断正态分布填充(所有值的偏差小于两个标准差);random_uniform(shape,minval=0,maxval,dtype,seed,name)均匀分布7.random_gamma(shape,alpha,beta,stype,seed,nameget_variable(name,shape,dtype,initializer)获取变量:若该名称变量已定义则返回,否则创建。Tf.get_local_variable()用于分布式tf获取局部变量。

四、计算图

计算图(与数据流图) :由节点和边组成,节点代表操作(tf.Operation),边代表传递的张量(tf.Tensor)

  • 默认计算图:tf.get_default_graph()
  • 节点依赖&顺序执行&延迟加载(节点本身或依赖于其的节点被请求执行时,该节点才会执行)。

Tf.Graph.control_dependencies()函数控制节点执行顺序: with graph_variable.control_dependecies([节点列表]):  #块中节点仅在列表中节点执行后执行

  • 计算图可以分成多个部分由不同设备(CPU&GPU)执行:tf.python.client.device_lib.list_local_devices()列出可执行计算图的所有设备
  • 设置执行设备:with tf.device('/device:CPU:0'):定义节点等。

    默认放置:简单放置规则,顺序为之前放置的设备>通过tf.device()设置的设备>GPU>CPU。

  • 运行时输出执行设备:config=tf.ConfigProto(),config.log_device_placement=True. With tf.Session(config=config) as sess: #
  • 软放置:config.allow_soft_placement=True,tf不具有设置的GPU的操作实现(内核)或设备不存在时,允许自动放置。
  • GPU内存处理config.gpu_options.per_process_gpu_memory_fraction=0.5;config.gpu_options.allow_growth=True.
  • 创建计算图&计算子图   g=tf.Graph()      with g.as_default(): #定义节点       with tf.Session(graph=g) as sess: sess.run(节点)

五、TensorBoard

TensorBoard:可视化计算图结构,绘制执行摘要

步骤:创建图节点-添加节点摘要tf.Summary()-合并摘要tf.summary.merge_all(),生成序列化的Summary ProtocalBuffers对象-创建tf.summary.FileWriter(save_dir,sess.graph)记录SBP对象-命令tensorboard --logdir=save_dir启动tensorboard。

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

TensorFlow核心架构设计旨在支持灵活的机器学习模型开发和高效的计算执行。其架构主要由以下几个核心组件构成: - **计算图(Computational Graph)**:TensorFlow 使用数据流图(Data Flow Graph)来表示计算任务。图中的节点代表操作(如加法、乘法等),边表示数据(如张量)在操作之间的流动。这种设计使得计算任务可以被优化并行化,从而提高执行效率 [^1]。 - **会话(Session)**:会话是执行计算图的环境。通过会话,用户可以启动计算图并在指定的设备上执行操作。会话还负责管理资源(如 CPU 和 GPU)以及执行图中的操作 [^1]。 - **张量(Tensor)**:张量是 TensorFlow 中的基本数据结构,用于表示多维数组。所有的数据在计算图中以张量的形式流动,并在操作之间传递 [^1]。 - **变量(Variable)**:变量用于存储和更新模型的参数。与常量不同,变量在计算图的多次执行中保持状态,并且可以通过优化算法(如梯度下降)进行更新 [^1]。 - **操作(Operation)**:操作是计算图中的基本执行单元,负责执行具体的计算任务。每个操作都有输入和输出,这些输入和输出通常是张量 。 - **运行时核心**:运行时核心负责实现 TensorFlow 中的各种算法操作,如卷积、激活函数等。它是 TensorFlow核心执行引擎,负责在 CPU、GPU 等设备上执行操作 [^4]。 - **设备层**:TensorFlow 支持多种计算设备,包括 CPU 和 GPU。设备层负责执行具体的运算操作,并利用硬件加速来提高计算性能 [^4]。 - **网络层**:TensorFlow 的网络层使用远程过程调用(gRPC)和远程直接数据存取(RDMA)技术,负责在分布式环境中传递神经网络算法的参数 [^4]。 - **分布式运行时**:在分布式环境中,TensorFlow 使用主机(Master)和工作节点(Worker)的架构。主机负责构建子图并将其切分为多个分片,分发到不同的工作节点上执行。工作节点负责调度执行子图操作,并与其他执行器交换计算结果 。 TensorFlow 的这些核心组件共同构成了一个强大的机器学习框架,支持从研究到生产的各种应用场景。通过灵活的架构设计,TensorFlow 能够在多种平台和设备上高效运行,满足不同用户的需求 [^1]。 ```python import tensorflow as tf # 定义两个常量 a = tf.constant(3) b = tf.constant(4) # 定义一个加法操作 c = tf.add(a, b) # 创建一个会话 with tf.Session() as sess: # 执行计算图并输出结果 result = sess.run(c) print("结果:", result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值