前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文读懂TensorFlow 2.0高阶API

一文读懂TensorFlow 2.0高阶API

作者头像
用户1682855
发布2019-11-19 15:46:13
1.4K0
发布2019-11-19 15:46:13
举报
文章被收录于专栏:前沿技墅

在TensorFlow 2.0中对大量的高阶API库进行了删减与合并,根据官方的解释,这一切的变化都是为了使TensorFlow2.0更加易用和简洁。本文以官方推荐的唯一高阶API库tf.keras为主,概括地介绍TensorFlow 2.0的高阶API。

tf.keras高阶API概览

在TensorFlow 2.0版本中完全移除了tf.contrib这个高阶API库,官方推荐的高阶API只有tf.keras。Keras是一个意在降低机器学习编程入门门槛的项目,其在业界拥有众多的拥护者和使用者。经过Keras社区的多年发展,Keras集成了很多符合工业和研究需求的高阶API,使用这些API只需要几行代码就可以构建和运行一个非常复杂的神经网络。TensorFlow官方社区首次宣布发布TensorFlow 2.0版本计划时就明确了Keras会深度融合到TensorFlow中,并且作为官方支持的高阶API。下面我们看看官方文档中提到的tf.keras下的接口模块。

  • activations:tf.keras.actibations中包含了当前主流的激活函数,可以直接通过该API进行激活函数的调用。
  • applications:tf.keras.applications中包含的是已经进行预训练的神经网络模型,可以直接进行预测或者迁移学习。目前该模块中包含了主流的神经网络结构。
  • backend:tf.keras.backend中包含了Keras后台的一些基础API接口,用于实现高阶API或者自己构建神经网络。
  • datasets:tf.keras.datasets中包含了常用的公开数据训练集,可以直接进行使用(需要访问外国网站),数据集有CIFAR-100、Boston Housing等。
  • layers:tf.keras.layers中包含了已经定义好的常用的神经网络层。
  • losses:tf.keras.losses中包含了常用的损失函数,可以根据实际需求直接进行调用。
  • optimizers:tf.keras.optimizers中包含了主流的优化器,可以直接调用API使用。比如Adm等优化器可以直接调用,然后配置所需要的参数即可。
  • preprocessing:tf.keras.preprocessing中包含了数据处理的一些方法,分为图片数据处理、语言序列处理、文本数据处理等,比如NLP常用的pad_sequences等,在神经网络模型训练前的数据处理上提供了非常强大的功能。
  • regularizers:tf.keras.regularizers中提供了常用的正则化方法,包括L1、L2等正则化方法。
  • wrappers:tf.keras.wrappers是一个Keras模型的包装器,当需要进行跨框架迁移时,可以使用该API接口提供与其他框架的兼容性。
  • Sequential类:tf.keras.Sequential可以让我们将神经网络层进行线性组合形成神经网络结构。

tf.keras高阶API编程

为节省篇幅,本文不再结合实践案例详细讲解主要高阶API的使用,而是以构建一个线性回归模型为例介绍TensorFlow 2.0高阶API的使用。

1. 使用tf.keras高阶API构建神经网络模型

在TensorFlow 2.0中可以使用高阶API tf.keras.Sequential进行神经网络模型的构建。示例代码如下:

代码语言:javascript
复制
1.  #导入所需要的依赖包 
2.  import tensorflow as tf 
3.  import numpy as np 
4.   
5.  #实例化一个tf.keras.Sequential 
6.  model=tf.keras.Sequential() 
7.  #使用Sequential的add方法添加一层全连接神经网络
8.  model.add(tf.keras.layers.Dense(input_dim=1,units=1)) 
9.   
10.#使用Sequential的compile方法对神经网络模型进行编译,loss函数使用MSE,optimizer使用SGD(随机梯度下降)
11.model.compile(loss='mse',optimizer='sgd') 

2. 使用tf.keras高阶API训练神经网络模型

在完成神经网络模型的构建和编译之后,需要准备训练数据,然后对神经网络模型进行训练。可以使用tf.keras.Sequential的fit方法进行训练,示例代码如下:

代码语言:javascript
复制
1.  #随机生成一些训练数据,在-10到10的范围内生成700个等差数列作为训练输入
2.  X = np.linspace(-10, 10, 700) 
3.  #通过一个简单的算法生成Y数据,模拟训练数据的标签 
4.  Y=2*X+100+np.random.normal(0, 0.1, (700, )) 
5.  #开始训练,“verbose=1”表示以进度条的形式显示训练信息,“epochs=200”表示训练的epochs为200,“validation_split=0.2”表示分离20%的数据作为验证数据
6.  model.fit(X,Y,verbose=1,epochs=200,validation_split=0.2) 

3. 使用tf.keras高阶API保存神经网络模型

在完成神经网络模型的训练之后,可以使用Sequential的save方法将训练的神经网络模型保存为H5格式的模型文件。示例代码如下:

代码语言:javascript
复制
1.  filename='line_model.h5' 
2.  model.save(filename) 
3.  print("保存模型为line_model.h5") 

4. 使用tf.keras高阶API加载模型进行预测

加载神经网络模型需要使用tf.keras.models.load_model这个API,在完成模型的加载后可以使用Sequential的predict方法进行预测。示例代码如下:

代码语言:javascript
复制
1.  x=tf.constant([0.5]) 
2.  model=tf.keras.models.load_model(filename) 
3.  y=model.predict(x) 
4.  print(y)

本文节选自博文视点新书《走向TensorFlow 2.0:深度学习应用编程快速入门》。本书探讨了开源机器学习软件库TensorFlow 2.0的诸多应用实践,内容涵盖各种热门的应用场景,包括图像识别、自然语言对话机器人、基于生成网络的图片风格迁移、文本情感分析等。该书是为“应用落地”而编写的,附有大量代码及注释,可帮助读者最快速度实现框架入门与应用落地。左下阅读原文,一步跨越鸿沟,不2不是TFBOYS!

内容简介本书是TensorFlow 2.0编程实践的入门类书籍,目的是在TensorFlow 2.0正式版发布之际能够帮助大家快速了解其核心特性及基本编程技巧。本书通过5个常用的人工智能编程案例,帮助大家掌握如何在工作中使用TensorFlow 2.0进行应用开发。本书内容覆盖了Python和TensorFlow基础入门、自然语言处理和CV领域的实践案例、模型的服务化部署,希望在基于TensorFlow 2.0的人工智能编程上能够助你一臂之力。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前沿技墅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • tf.keras高阶API编程
    • 1. 使用tf.keras高阶API构建神经网络模型
      • 2. 使用tf.keras高阶API训练神经网络模型
        • 3. 使用tf.keras高阶API保存神经网络模型
          • 4. 使用tf.keras高阶API加载模型进行预测
          相关产品与服务
          人工智能与机器学习
          提供全球领先的人脸识别、文字识别、图像识别、语音技术、NLP、人工智能服务平台等多项人工智能技术,共享 AI 领域应用场景和解决方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档