Tensorflow学习杂记(持续更新)

说明

  • 接触TF时已经是2.0的版本了,一上手就是Keras的框架。随着了解深入发现自己欠缺太多基本的知识。
  • 目前学习方法, 看着官方的教程+别人博文(笔记)。
  • 以时间顺序记录。

Week 1

Part 1 :执行模式

TF2.0默认的是即时执行模式,如果你输入:print("Eager execution: {}".format(tf.executing_eagerly())) 默认是为True。

如果在tf 1.x版本你想要打开:tf.compat.v1.enable_eager_execution()

这里就涉及到几个概念:Eager execution、Graph execution、@tf.function

具体看这个:图执行模式下的Tensorflow

尽管 TensorFlow 2 建议以即时执行模式(Eager Execution)作为主要执行模式,然而,图执行模式(Graph Execution)作为 TensorFlow 2 之前的主要执行模式,依旧对于我们理解 TensorFlow 具有重要意义。尤其是当我们需要使用 tf.function 时,对图执行模式的理解更是不可或缺。

简单来说,之前执行分为两部分。构建图+执行图。

构建图就是将定义的tensor作为节点保存,并没有实际的值。执行就是将固定好的图进行指定操作。
个人理解所谓tensorflow就是定义的tensor在构建的图上流动。

更为详细看这篇:对于tensorflow的理解【这篇写的实在太好了,必须转载保存】

@tf.function 内在机制
当被 @tf.function 修饰的函数第一次被调用的时候,进行以下操作:
①在 Eager Execution 模式关闭的环境下,函数内的代码依次运行。也就是说,每个 tf. 方法都只是定义了计算节点,而并没有进行任何实质的计算。这与 TensorFlow 1.X 的 Graph Execution 是一致的;
②使用 AutoGraph 将函数中的 Python 控制流语句转换成 TensorFlow 计算图中的对应节点(比如说 while 和 for 语句转换为 tf.while , if 语句转换为 tf.cond 等等;
③基于上面的两步,建立函数内代码的计算图表示(为了保证图的计算顺序,图中还会自动加入一些 tf.control_dependencies 节点);
④运行一次这个计算图;
⑤基于函数的名字和输入的函数参数的类型生成一个哈希值,并将建立的计算图缓存到一个哈希表中。
⑥在被 @tf.function 修饰的函数之后再次被调用的时候,根据函数名和输入的函数参数的类型计算哈希值,检查哈希表中是否已经有了对应计算图的缓存。如果是,则直接使用已缓存的计算图,否则重新按上述步骤建立计算图。

Part 2:数据集

数据集的操作,在tf官方教程中专门有一部分针对pandas、numpy、csv等各种格式数据如何处理。

总结下自己实现demo接触到的:

·对于CSV文件,用tf.data.experimental.make_csv_dataset方法,得到原始数据集,可以自定Batch_size。
返回的是(features, label) 。对构建的 tf.data.Dataset ,其中 features 是一个字典: {'feature_name': value}

·接着,用tf.stack方法,将数据整合成(batch,num_features)的张量形式
【tf.stack是矩阵拼接的方法,用axis可以定义不同维度的拼接】

·用map方法,将定义的函数映射到整个数据集。

在给的demo中,会用iter+next查看数据。

·我们首先要知道什么是可迭代的对象(可以用for循环的对象)Iterable:

·一类:list,tuple,dict,set,str

·二类:generator,包含生成器和带yield的generatoe function

·而生成器不但可以作用于for,还可以被next()函数不断调用并返回下一个值,可以被next()函数不断返回下一个值的对象称为迭代器:Iterator

·生成器都是Iterator对象,但list,dict,str是Iterable,但不是Iterator,要把list,dict,str等Iterable转换为Iterator可以使用iter()函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值