Tensorflow 2.x入门教程,有哪些技巧分享?

摘要:前言 至于为什么写这个教程,首先是为了自己学习做个记录,其次是因为Tensorflow的API写的很好,但是他的教程写的太乱了,不适合新手学习。tensorflow 1 和tensorflow 2 有相似之处但是不兼容,tensorflow
前言   至于为什么写这个教程,首先是为了自己学习做个记录,其次是因为Tensorflow的API写的很好,但是他的教程写的太乱了,不适合新手学习。tensorflow 1 和tensorflow 2 有相似之处但是不兼容,tensorflow 2将keras融合了。TensorFlow™ 是一个采用 数据流图(data flow graphs),用于数值计算的开源软件库。图中得节点(Nodes)表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。 TensorFlow的主要优点: 灵活性:支持底层数值计算,C++自定义操作符 可移植性:从服务器到PC到手机,从CPU到GPU到TPU 分布式计算:分布式并行计算,可指定操作符对应计算设备 层次结构   TensorFlow的层次结构从低到高可以分成如下五层:硬件层,内核层,低阶API,中阶API,高阶API。 第一层:硬件层,TensorFlow支持CPU、GPU或TPU加入计算资源池。 第二层:内核层,为C++实现的内核,kernel可以跨平台分布运行。 第三层:低阶API,由Python实现的操作符,提供了封装C++内核的低级API指令。主要包括各种张量操作算子、计算图、自动微分。如tf.Variable,tf.constant,tf.function,tf.GradientTape,tf.nn.softmax... 第四层:中阶API,由Python实现的模型组件,对低级API进行了函数封装。主要包括数据管道(tf.data)、特征列(tf.feature_column)、激活函数(tf.nn)、模型层(tf.keras.layers)、损失函数(tf.keras.losses)、评估函数(tf.keras.metrics)、优化器(tf.keras.optimizers)、回调函数(tf.keras.callbacks) 等等。 第五层:高阶API,由Python实现的模型成品。主要为tf.keras.models提供的模型的类接口,主要包括:模型的构建(Sequential、functional API、Model子类化)、型的训练(内置fit方法、内置train_on_batch方法、自定义训练循环、单GPU训练模型、多GPU训练模型、TPU训练模型)、模型的部署(tensorflow serving部署模型、使用spark(scala)调用tensorflow模型)。 概述 创建张量 tf.constant(value, dtype=tf.float32) # 常数 tf.range(start, limit=None, delta=1) # 生成一个范围内间隔为delta的 张量 tf.linspace(start, stop, num) # 在一个间隔内生成均匀间隔的值 tf.zeros() # 创建全0张量 tf.ones() # 创建全1张量 tf.zeros_like(input) # 创建和input一样大小的张量 tf.fill(dims, value) # 创建shape为dim,全为value的张量 tf.random.uniform([5], minval=0, maxval=10) # 均匀分布随机 tf.random.normal([3, 3], mean=0.0, stddev=1.0) # 正态分布随机 tf.Variable(initial_value) # 变量 tf.Variable: name:变量的名字,默认情况下,会自动获得唯一的变量名 trainable:设置为 False 可以关闭梯度。例如,训练计步器就是一个不需要梯度的变量 tf.rank(a):求矩阵的秩 变量的设备位置 为了提高性能,TensorFlow 会尝试将张量和变量放在与其 dtype 兼容的最快设备上。这意味着如果有 GPU,那么大部分变量都会放置在 GPU 上,不过,我们可以重写变量的位置。
阅读全文