【TensorFlow基础知识】概念入门:Graph Session Tensor

本系列根据模型训练的整个流程,基于TensorFlow(后文统一简写为tf)的源码,对tf中的实际运行进行讲解。开发者不仅需要熟练使用tf,通过了解tf源码中的流程,可以根据tf的bug信息快速定位bug。
由于tf的中英文官方文档解释较为简洁,同时,不同bug的报错位置可能存在相同的情况,因此建议读者直接下载tf的源码,阅读注释效率更高。此外,除tf源码外,还需要对第三方包进行下载,例如estimator项目等,本系列后续会对相关包进行讲解。
本系列力图直观的对tf进行讲解,而不是官方文档的翻译,如果有未解释清楚的地方,可以直接评论或私信。

【TensorFlow基础知识】概念入门:Graph Session Tensor

TF vs. PyTorch

本系列在最开始进行tf和PyTorch的比较,只是让读者有一个感官的理解,不必深究其中的概念。(随着本系列的撰写,这部分会逐渐完善相关链接等,两者的比较会直接穿插到文章中。)

Graph

tf的一个运算,就是一个数据流的运算图。与传统机器学习中直接数据传参不同的是,tf的运算图中并没有实际的数据,可以理解成只是管道,即tensor。也就是说,tensor并不是实际的数值。图中的节点就是operation,即操作,只有在节点进行实际计算的时候,计算图中才有数据流流动,当有数据流动的时候,开发者才可以进行数据的可视化,以及debug操作。

开发者实际搭建的模型,对于tf而言,就是一个graph。因此,整个项目在开发完成后,可以使用tensorboard对模型结构进行查看,具体的代码见下。使用tenboard进行可视化比model.summary()的效果更好。如果开发者在创建模型时,未指定模型保存路径,tf会提供临时存储路径,并且会在terminal对路径进行输出。

tensorboard —logdir model_path

模型(即图)在创建的时候,可以使用placeholder(占位符)或者variable(变量)进行实际数据流的代替。

  • tf.placeholder():占位符,可以理解成实际变量的载体,可以只指定tensor的shape,运行时才是实际的数据流。
  • tf.Variable():变量,可以直接定义成常数指,可以变化,常用的包括模型的参数等。

Session

在模型创建完成后,即graph已经搭建成功,以tf.estimator为例,在实际运行tf.estimator.train(inpuf_fn=train_input_fn),graph中并没有数据的实际流动(换言之,声明的变量中并没有实际的值)。这时,开启session,才会有实际的计算。上面的例子,tf.estimator.train中已经进行了session的开启,开发者如果需要调试自己的模型,可以声明session进行运行。常见的代码例子如下。

with tf.Session() as sess:
    print(x_variable.eval(seas))

需要提醒的是,开发者在运行下述代码时候,需要判定自己是否处于eager模式

Tensor

参考
[TensorFlow学习(三):Graph和Session](

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值