1。1TensorFlow介绍 深度学习框架TensorFlow一经发布,就受到了广泛的关注,并在计算机视觉、音频处理、推荐系统和自然语言处理等场景下都被大面积推广使用,现在已发布2。3。0版本,接下来我们深入浅出的介绍Tensorflow的相关应用。 TensorFlow的依赖视图如下所示: TF托管在github平台,有googlegroups和contributors共同维护。TF提供了丰富的深度学习相关的API,支持Python和CC接口。TF提供了可视化分析工具Tensorboard,方便分析和调整模型。TF支持Linux平台,Windows平台,Mac平台,甚至手机移动设备等各种平台。 TensorFlow2。0将专注于简单性和易用性,工作流程如下所示: 1、使用tf。data加载数据。使用tf。data实例化读取训练数据和测试数据 2、模型的建立与调试:使用动态图模式EagerExecution和著名的神经网络高层API框架Keras,结合可视化工具TensorBoard,简易、快速地建立和调试模型; 3、模型的训练:支持CPU单GPU单机多卡GPU多机集群TPU训练模型,充分利用海量数据和计算资源进行高效训练; 4、预训练模型调用:通过TensorFlowHub,可以方便地调用预训练完毕的已有成熟模型。 5、模型的部署:通过TensorFlowServing、TensorFlowLite、TensorFlow。js等组件,可以将TensorFlow模型部署到服务器、移动端、嵌入式端等多种使用场景;1。2TensorFlow的安装 安装TensorFlow在64位系统上测试这些系统支持TensorFlow:Ubuntu16。04或更高版本Windows7或更高版本macOS10。12。6(Sierra)或更高版本(不支持GPU) 进入虚拟环境当中再安装。推荐使用anoconda进行安装1、非GPU版本安装 ubuntu安装pipinstalltensorflow2。3。0ihttps:pypi。tuna。tsinghua。edu。cnsimple2、GPU版本安装pipinstalltensorflowgpu2。3。0ihttps:pypi。tuna。tsinghua。edu。cnsimple 注:如果需要下载GPU版本的(TensorFlow只提供windows和linux版本的,没有Macos版本的)。1。3张量及其操作1。3。1张量Tensor 张量是一个多维数组。与NumPyndarray对象类似,tf。Tensor对象也具有数据类型和形状。如下图所示: 此外,tf。Tensors可以保留在GPU中。TensorFlow提供了丰富的操作库(tf。add,tf。matmul,tf。linalg。inv等),它们使用和生成tf。Tensor。在进行张量操作之前先导入相应的工具包:importtensorflowastfimportnumpyasnp1。基本方法 首先让我们创建基础的张量:创建int32类型的0维张量,即标量rank0tensortf。constant(4)print(rank0tensor)创建float32类型的1维张量rank1tensortf。constant(〔2。0,3。0,4。0〕)print(rank1tensor)创建float16类型的二维张量rank2tensortf。constant(〔〔1,2〕,〔3,4〕,〔5,6〕〕,dtypetf。float16)print(rank2tensor) 输出结果为:tf。Tensor(4,shape(),dtypeint32)tf。Tensor(〔2。3。4。〕,shape(3,),dtypefloat32)tf。Tensor(〔〔1。2。〕〔3。4。〕〔5。6。〕〕,shape(3,2),dtypefloat16) 我们也可以创建更高维的张量:创建float32类型的张量rank3tensortf。constant(〔〔〔0,1,2,3,4〕,〔5,6,7,8,9〕〕,〔〔10,11,12,13,14〕,〔15,16,17,18,19〕〕,〔〔20,21,22,23,24〕,〔25,26,27,28,29〕〕,〕)print(rank3tensor) 该输出结果我们有更多的方式将其展示出来: 2。转换成numpy 我们可将张量转换为numpy中的ndarray的形式,转换方法有两种,以张量rank2tensor为例:np。arraynp。array(rank2tensor)Tensor。numpy()rank2tensor。numpy()3。常用函数 我们可以对张量做一些基本的数学运算,包括加法、元素乘法和矩阵乘法等:定义张量a和batf。constant(〔〔1,2〕,〔3,4〕〕)btf。constant(〔〔1,1〕,〔1,1〕〕)print(tf。add(a,b),)计算张量的和print(tf。multiply(a,b),)计算张量的元素乘法print(tf。matmul(a,b),)计算乘法 输出结果为:tf。Tensor(〔〔23〕〔45〕〕,shape(2,2),dtypeint32)tf。Tensor(〔〔12〕〔34〕〕,shape(2,2),dtypeint32)tf。Tensor(〔〔33〕〔77〕〕,shape(2,2),dtypeint32) 另外张量也可用于各种聚合运算:tf。reducesum()求和tf。reducemean()平均值tf。reducemax()最大值tf。reducemin()最小值tf。argmax()最大值的索引tf。argmin()最小值的索引 例如:ctf。constant(〔〔4。0,5。0〕,〔10。0,1。0〕〕)最大值print(tf。reducemax(c))最大值索引print(tf。argmax(c))计算均值print(tf。reducemean(c)) 输出为:tf。Tensor(10。0,shape(),dtypefloat32)tf。Tensor(〔10〕,shape(2,),dtypeint64)tf。Tensor(5。0,shape(),dtypefloat32)4。变量 变量是一种特殊的张量,形状是不可变,但可以更改其中的参数。定义时的方法是:myvariabletf。Variable(〔〔1。0,2。0〕,〔3。0,4。0〕〕) 我们也可以获取它的形状,类型及转换为ndarray:print(Shape:,myvariable。shape)print(DType:,myvariable。dtype)print(AsNumPy:,myvariable。numpy) 输出为:Shape:(2,2)DType:dtype:float32AsNumPy:boundmethodBaseResourceVariable。numpyoftf。VariableVariable:0shape(2,2)dtypefloat32,numpyarray(〔〔1。,2。〕,〔3。,4。〕〕,dtypefloat32)1。4tf。keras介绍 tf。keras是TensorFlow2。0的高阶API接口,为TensorFlow的代码提供了新的风格和设计模式,大大提升了TF代码的简洁性和复用性,官方也推荐使用tf。keras来进行模型设计和开发。 1。4。1常用模块 tf。keras中常用模块如下表所示: 模块 概述 activations 激活函数 applications 预训练网络模块 Callbacks 在模型训练期间被调用 datasets tf。keras数据集模块,包括bostonhousing,cifar10,fashionmnist,imdb,mnist layers Keras层API losses 各种损失函数 metircs 各种评价指标 models 模型创建模块,以及与模型相关的API optimizers 优化方法 preprocessing Keras数据的预处理模块 regularizers 正则化,L1,L2等 utils 辅助功能实现1。4。2常用方法 深度学习实现的主要流程:1。数据获取,2,数据处理,3。模型创建与训练,4模型测试与评估,5。模型预测 1。导入tf。keras 使用tf。keras,首先需要在代码开始时导入tf。kerasimporttensorflowastffromtensorflowimportkeras2。数据输入 对于小的数据集,可以直接使用numpy格式的数据进行训练、评估模型,对于大型数据集或者要进行跨设备训练时使用tf。data。datasets来进行数据输入。3。模型构建简单模型使用Sequential进行构建复杂模型使用函数式编程来构建自定义layers4。训练与评估配置训练过程:配置优化方法,损失函数和评价指标model。compile(optimizertf。train。AdamOptimizer(0。001),losscategoricalcrossentropy,metrics〔accuracy〕)模型训练指明训练数据集,训练epoch,批次大小和验证集数据model。fitfitgenerator(dataset,epochs10,batchsize3,validationdatavaldataset,)模型评估指明评估数据集和批次大小model。evaluate(x,y,batchsize32)模型预测对新的样本进行预测model。predict(x,batchsize32)5。回调函数(callbacks) 回调函数用在模型训练过程中,来控制模型训练行为,可以自定义回调函数,也可使用tf。keras。callbacks内置的callback: ModelCheckpoint:定期保存checkpoints。LearningRateScheduler:动态改变学习速率。EarlyStopping:当验证集上的性能不再提高时,终止训练。TensorBoard:使用TensorBoard监测模型的状态。6。模型的保存和恢复只保存参数只保存模型的权重model。saveweights(。mymodel)加载模型的权重model。loadweights(mymodel)保存整个模型保存模型架构与权重在h5文件中model。save(mymodel。h5)加载模型:包括架构和对应的权重modelkeras。models。loadmodel(mymodel。h5) 总结了解Tensorflow2。0框架的用途及流程1。使用tf。data加载数据2、模型的建立与调试3、模型的训练4、预训练模型调用5、模型的部署知道tf2。0的张量及其操作张量是多维数组。1、创建方法:tf。constant()2、转换为numpy:np。array()或tensor。asnumpy()3、常用函数:加法,乘法,及各种聚合运算4、变量:tf。Variable()知道tf。keras中的相关模块及常用方法常用模块:models,losses,application等常用方法:1、导入tf。keras2、数据输入3、模型构建4、训练与评估5、回调函数6、模型的保存与恢复 人工智能学习路线图最全自学路线 人工智能开发人工智能工程师AI人工智能