TensorFlow2.0基础

heibai123 2019-12-09 10:34:06 1351

01-TensorFlow基础
Tensorflow是什么
Google的开源软件库

采取数据流图,用于数值计算
支持多种平台 - GPU、CPU、 移动设备
最初用于深度学习,变得越来越通用
Tensorflow数据结构

数据流图

线:节点之间的输入输出关系,线上运输张量. tensor:张量- 指代数据

节点:operation (op): 专门运算的操作节点,所有的操作都是一个op,处理数据
只要使用tensorflow的API定义的函数都是OP
节点被分配到各种计算设备上运行

graph: 图 整个的程序结构
本质上是一个分配的内存位置,默认有一个图,所有的tensor 和 op 的内存地址都是一样的。
不同的图内存地址不一样,计算的过程中互不干扰
session: 会话: 运算程序的图 (只能运行一张图,可以在会话中指定图去运行 graph = g)
运行图的结构
分配资源计算
掌握资源(变量、队列、线程)
Tensorflow的特性
高度的灵活性,便于调用函数,也可以写自己的封装
真正的可移植性,在不同的设备上都可以简单运行
产品和科研结合
自动求微分,主要用于反向传播计算
多语言支持,C++, Java , JS, R
性能最优化
Tensorflow的前后端系统
前端系统:定义程序的图的机构
后端系统: 运算图结构
Tensorflow版本变迁
Tensorflow1.0 主要特性
XLA: Accelerate Linear Algebra
提升训练速度58倍
可以在移动设备上运行
引用更高级别的API
tf.layers/ tf.metrics / tf.losses/ tf.keras
Tensorflow调试器
支持docker镜像,引入tensorflow serving 服务

Tensorflow 2.0 主要特性
使用tf.keras 和 eager mode 进行简单模型构建
鲁棒的跨平台模型部署
强大的研究实验
清除了不推荐使用和重复的API

Tensorflow2.0 简化模型开发流程
使用tf.data加载数据
使用tf.keras 构建模型,也可以使用premade estimator 验证模型
使用tensorflow hub进行迁移学习
注: 迁移学习 - 使用一个前人预先训练好的,应用在其他领域的网络作为模型训练的起点,站在前人基础上更进一步,不必重新发明轮子。
使用eager mode 进行运行和调试
使用分发策略进行分布式训练
导出到SavedModel
使用Tensorflow Serve, Tensorflow Lite, Tensorflow.js
Tensorflow 强大的跨平台能力
Tensorflow 服务
直接通过HTTP/ TEST 或 GTPC/协议缓冲区
Tensorflow Lite - Android, iOS 和嵌入式
Tensorflow.js - Javascript 部署
其他语言
Tensorflow vs. Pytorch
入门时间(易用性)
Tensorflow 1.*
静态图 ,构建完之后不可以更改, 效率高
额外概念, 会话,变量,占位符
写样本代码
Tensorflow 2.0
动态图, 构建完之后可以更改, 效率不高,调试容易
Eager mode 直接集成在python中
Pytorch
动态图
numpy扩展,集成在python
"""
不同方式求解 1 + 1/2 + 1/2^2 + 1/2^3 + ...... + 1/2^50
"""

1. tensorflow 1.*求解

import tensorflow as tf
print(tf.version)
x = tf.Variable(0.)
y = tf.Variable(1.)

add_op = x.assign(x + y)
div_op = y.assign(y / 2)

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())

2. pytorch 求解

import torch
print(torch.version)

x = torch.Tensor([0.])
y = torch.Tensor([1.])
for iteration in range(50):
x = x + y
y = y / 2
print(x)

3. tensorflow 2.0 求解

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

4. 纯python求解

x = 0
y = 1
for iteration in range(50):
x = x + y
y = y / 2
print(x) # 精度有点不一样
图创建和调试
Tensorflow 1.*
静态图,难以调试, 需要使用tfdbg
Tensorflow 2.0 与 pytorch
动态图,python自带的调试工具
全面性
python缺少少量的功能,使用频次很低
沿维翻转张量 (np.flip, np.flipud, np.fliplr)
检查无穷与非数值张量(np.is_nan, np.is_inf)
快速傅里叶变换 (np.fft)
序列化和部署
Tensorflow 支持更加广泛,多语言,跨平台
pytorch 支持比较简单
醉后不知天在水,满船清梦压星河。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
关于作者
heibai123

heibai123

暂无个性签名~

原创1
阅读1.4k
收藏0
点赞0
评论0
TA最新文章
打赏用户 0
我要创作
分享技术经验,可获取创作收益
分类专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
heibai123
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区