【Tensorflow2.0入门到进阶】第1章、Tensorflow简介与环境搭建

一、课程导学

1、课程项目

图像分类、房价预测、泰坦尼克生存预测
文本分类、文本生成、机器翻译

2、核心内容

模型训练
模型的保存与部署
分布式训练
tensorboard可视化调参
常用库:Tfds/tfhub、tensor2tensor等

3、多平台云端环境GPU&kaggle数据集

两个云端环境:Google cloud环境配置、AWS环境配置
kaggle数据集:Kaggle 10 Monkeys、Kaggle cifar10、Kaggle文本分类、Kaggle Titanic生存预测

4、课程章节

前五章(基础知识):

  • 1、Tensorflow简介

tensorflow是什么
tensorflow历史
tensorflow vs pytorch
环境配置

  • 2、Tensorflow keras实战

tf框架:keras、回调函数
项目:图像分类、房价预测
知识点:分类问题、回归问题、损失函数、神经网络、激活函数、批归一化、Dropout、Wide & deep模型、超参数搜索

  • 3、Tensorflow基础API使用

Tf框架:基础数据类型、自定义模型与损失函数、自定义求导、tf.function、图结构
项目:图像分类、房价预测

  • 4、Tensorflow dataset使用

Tf框架:csv文件读取、tfrecord文件生成与读取、tf.data使用
项目:房价预测

  • 5、Tensorflow Estimator使用与tf1.0

Tf框架:estimator使用、特征列使用、tf1.0基本使用
项目:泰坦尼克预测
后五章(高阶知识):

  • 6、卷积神经网络

Tf框架:卷积实现
项目:图像分类、Kaggle 10 Monkeys、Kaggle cifar10
理论:卷积、数据增强、迁移学习

  • 7、循环神经网络

Tf框架:LSTM实现
项目:文本分类、文本生成、Kaggle文本分类
理论:序列式问题、循环网络、LSTM、双向LSTM

  • 8、Tensorflow分布式(工程上应用)

Tf框架:分布式实现
项目:图像分类
理论:分布式原理与策略

  • 9、Tensorflow模型保存与部署(工程上应用)

Tf框架:模型保存、导出tflite、部署
项目:图像分类

  • 10、机器翻译与tensor2tensor使用

Tf框架:transformer实现、tensor2tensor使用
项目:机器翻译
理论:序列到序列模型、注意力机制、可缩放点积注意力、多头注意力

5、掌握能力

问题建模能力、特征工程能力、搭建模型能力、独立解决项目能力

6、前置知识

python基础语法
熟悉Linux环境:Ubuntu
机器学习和深度学习基础知识



二、Tensorflow简介?

1、TensorFlow是什么?

  • google的开源软件库
    • 采取数据流图(节点+线,节点表示数学操作,线表示数据流向),用于数值计算
    • 支持多种平台——GPU、CPU、移动设备

(1)、数据流图

在这里插入图片描述

  • 节点——处理数据
  • 线——节点间的输入输出关系
  • 线上运输张量(tensor)
  • 节点被分配到各种计算设备上运行

(2)、TensorFlow的特性

  • 高度的灵活性(体现在数据流图上,另外对神经网络的很多操作进行了封装)
  • 真正的可移植性(可以在很多设备运行、配置到服务器 or 手机 or Docker)
  • 产品和科研结合
  • 自动求微分(反向传播)
  • 多语言支持(c++,java,JavaScript)
  • 性能最优化

2、TensorFlow版本变迁

在这里插入图片描述

(1)、TensorFlow1.0——主要特性

  • 支持XLA——Accelerate Linear Algebra(计算更快)
    • 提升训练速度58倍
    • 可以在移动设备运行
  • 引入更高级别API——tf.layers/tf.metrics/tf.losses/tf/keras
  • 支持Tensorflow调试器
  • 支持docker镜像、引入tensorflow serving服务

(2)、Tensorflow1.0——架构

在这里插入图片描述

(3)、TensorFlow2.0——主要特性

  • 1、使用tf.keras和eager mode(动态图模式)进行更简单的模型构建
  • 使用tf.data加载数据
  • 使用tf.keras构建模型,也可使用premade estimator来验证模型
    • 使用tensorflow hub进行迁移学习
  • 使用eager mode运行和调试
  • 使用分发策略来进行分布式训练
  • 导出到SavedMode
  • 使用TensorFlow Serve、Tensorflow Lite、Tensorflow.js部署模型
  • 2、鲁棒的跨平台模型部署
  • TensorFlow服务
    • 直接通过HTTP/RESR或GRPC/协议缓冲区
  • TensorFlow Lite——可部署到Android、iOS和嵌入式系统上
  • TensorFlow.js——在JavaScript中部署
  • 其他语言
    • C、Java、Go、C#、Rust、Julia、R等
  • 3、强大的研究试验
  • Keras功能API和子类API、允许创建复杂的拓扑结构
  • 自定义训练逻辑、使用tf.GraddientTape和tf.custom_gradient进行更细粒度的控制
  • 底层API自始至终可以与高层结合使用、完全的可定制
  • 高级扩展:Ragged Tensor、Tensor2Tensor等
  • 4、清除不推荐使用的API和减少重复来简化API

(4)、Tensorflow2.0——架构

在这里插入图片描述

3、TensorFlow vs. Pytorch

(1)、入门难易

  • Tensorflow1.*
    • 静态图(无eager mode)
    • 学习额外概念
      • 如图、会话、变量、占位符等
    • 写样本代码
  • Tensorflow2.0
    • 动态图(eager mode默认打开)
    • Eager mode避免1.0缺点,直接集成在Python中
  • Pytorch
    • 动态图
    • Numpy的扩展,直接集成在Python中

动态图与静态图的区别:
在这里插入图片描述

Tensorflow1.0、pytorch、Tensorflow2.0代码比较:
实现计算1 + 1 / 2 + 1 / 2 ^ 2 + 1 / 2 ^ 3 + … + 1 / 2 ^ 50

# Tensorflow1.0实现
import tensorflow as tf

# 构建计算图
x = tf.Variable(0.)
y = tf.Variable(1.)
add_op = x.assign(x + y)  # x = x + y
div_op = y.assign(y / 2)  # y = y / 2

# TensorFlow1.0中必须先打开会话,才能计算数据流图
with tf.Session() as sess:
	sess.run(tf.global_variables_initializer())  # 初始化会话
	for iteration in range(50):
		sess.run(add_op)
		sess.run(div_op)
	print(x.eval())  # 也可用sess.eval(x)
# Pytorch实现
import torch

x = torch.Tensor([0.])
y = torch.Tensor([1.])
for iteration in range(50):
	x = x + y
	y = y / 2
print(x)
# Tensorflow2.0实现
import tensorflow as tf
tf.enable_eager_execution()  # 打开eager mode,不可逆

x = tf.constant(0.)
y = tf.constant(1.)
for iteration in range(50):
	x = x + y
	y = y / 2
print(x.numpy())

(2)、图创建和调试

在这里插入图片描述

(3)、全面性

在这里插入图片描述

(4)、序列化与部署

在这里插入图片描述

4、TensorFlow环境配置

(1)、本地配置

在这里插入图片描述

(2)、云端配置

  • 为什么要在云上配置?
    • 规格统一,节省自己的机器
    • 有直接配置好环境的镜像
  • 云环境
    • google cloud配置——送300到免费体验
    • Amazon云配置
  • 实战
    • 从0配置
    • 从镜像配置
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页