01-TensorFlow基础

Tensorflow是什么

Google的开源软件库

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

Tensorflow数据结构

#数据流图

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

  2. 节点:operation (op): 专门运算的操作节点,所有的操作都是一个op,处理数据

  • 只要使用tensorflow的API定义的函数都是OP
  • 节点被分配到各种计算设备上运行

  1. graph: 图 整个的程序结构
  • 本质上是一个分配的内存位置,默认有一个图,所有的tensor 和 op 的内存地址都是一样的。
  • 不同的图内存地址不一样,计算的过程中互不干扰
  1. session: 会话: 运算程序的图 (只能运行一张图,可以在会话中指定图去运行 graph = g)
  • 运行图的结构
  • 分配资源计算
  • 掌握资源(变量、队列、线程)

Tensorflow的特性

  • 高度的灵活性,便于调用函数,也可以写自己的封装
  • 真正的可移植性,在不同的设备上都可以简单运行
  • 产品和科研结合
  • 自动求微分,主要用于反向传播计算
  • 多语言支持,C++, Java , JS, R
  • 性能最优化

Tensorflow的前后端系统

  1. 前端系统:定义程序的图的机构
  2. 后端系统: 运算图结构

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 简化模型开发流程

  1. 使用tf.data加载数据
  2. 使用tf.keras 构建模型,也可以使用premade estimator 验证模型
    • 使用tensorflow hub进行迁移学习
    • 注: 迁移学习 - 使用一个前人预先训练好的,应用在其他领域的网络作为模型训练的起点,站在前人基础上更进一步,不必重新发明轮子。
  3. 使用eager mode 进行运行和调试
  4. 使用分发策略进行分布式训练
  5. 导出到SavedModel
  6. 使用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 支持比较简单

01-TensorFlow2.0基础的更多相关文章

  1. SpringBoot2.0基础案例(01):环境搭建和RestFul风格接口

    一.SpringBoot 框架的特点 1.SpringBoot2.0 特点 1)SpringBoot继承了Spring优秀的基因,上手难度小 2)简化配置,提供各种默认配置来简化项目配置 3)内嵌式容 ...

  2. TensorFlow2.0(1):基本数据结构—张量

    1 引言 TensorFlow2.0版本已经发布,虽然不是正式版,但预览版都发布了,正式版还会远吗?相比于1.X,2.0版的TensorFlow修改的不是一点半点,这些修改极大的弥补了1.X版本的反人 ...

  3. swift3.0基础语法

    swift 3.0 基础语法 目录 01-变量和常量 02-运算符 03-可选项 04-条件语句 05-循环 06-字符串 07-元组 08-数组 09-字典 10-对象和类 11-枚举 12-属性 ...

  4. 【转】WF4.0 (基础篇)

    转自:http://www.cnblogs.com/foundation/category/215023.html 作者:WXWinter  ——  兰竹菊梅★春夏秋冬☆ —— wxwinter@16 ...

  5. Linux网络服务01——Linux网络基础设置

    Linux网络服务01--Linux网络基础设置 一.查看及测试网络 1.使用ifconfig命令查看网络接口 (1)查看活动的网络接口 ifconfig命令 [root@crushlinux ~]# ...

  6. (六)SpringBoot2.0基础篇- Redis整合(JedisCluster集群连接)

    一.环境 Redis:4.0.9 SpringBoot:2.0.1 Redis安装:Linux(Redhat)安装Redis 二.SpringBoot整合Redis 1.项目基本搭建: 我们基于(五) ...

  7. javaScript系列 [01]-javaScript函数基础

    [01]-javaScript函数基础 1.1 函数的创建和结构 函数的定义:函数是JavaScript的基础模块单元,包含一组语句,用于代码复用.信息隐蔽和组合调用. 函数的创建:在javaScri ...

  8. _00017 Kafka的体系结构介绍以及Kafka入门案例(0基础案例+Java API的使用)

    博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

  9. Google工程师亲授 Tensorflow2.0-入门到进阶

    第1章 Tensorfow简介与环境搭建 本门课程的入门章节,简要介绍了tensorflow是什么,详细介绍了Tensorflow历史版本变迁以及tensorflow的架构和强大特性.并在Tensor ...

  10. 『TensorFlow2.0正式版教程』极简安装TF2.0正式版(CPU&GPU)教程

    0 前言 TensorFlow 2.0,今天凌晨,正式放出了2.0版本. 不少网友表示,TensorFlow 2.0比PyTorch更好用,已经准备全面转向这个新升级的深度学习框架了. ​ 本篇文章就 ...

随机推荐

  1. 星空:差分,状压dp

    总算不再是能用暴力卡常/随机化水过的好T3了. 说是打了两个标签,实际上最关键的是题意转化. 如果你丝毫不转化的话也可以: #include<bits/stdc++.h> using na ...

  2. P2115 [USACO14MAR]破坏(二分答案)

    给定一串数,问删除中间一段,剩下的平均数最小是多少: 不容易想到这是个二分. $solution:$ 来手玩一点式子: 首先很容易想到一个前缀和$sum_i $表示i到1的前缀和,这样就能很容易地O( ...

  3. P3097 [USACO13DEC]最优挤奶(线段树优化dp)

    盲猜dp系列... 题意:给定序列,选了i就不能选与i相邻的两个,求最大值,带修改 蒟蒻在考场上10min打完以为只有两种情况的错解...居然能骗一点分... 先讲下当时的思路吧. f[i][0/1] ...

  4. Java 8 Streams API 详解

    流式编程作为Java 8的亮点之一,是继Java 5之后对集合的再一次升级,可以说Java 8几大特性中,Streams API 是作为Java 函数式的主角来设计的,夸张的说,有了Streams A ...

  5. python Tesseract安装方法

    python Tesseract安装方法 EXE可执行文件地址:http://download.csdn.net/download/whatday/7740469:下载tesseract-ocr-se ...

  6. java 实现一个死锁

    /** * 死锁:两个或多个线程在执行过程中,相互争夺资源而造成的一种互相等待的现象 * 实现一个死锁 * <p> * <p> * 查看死锁 * 1. 在当前类的文件夹下,打开 ...

  7. Git III: 撤销操作

    所谓撤销操作,无非就是后悔药.对Git来说,撤销操作主要是以下几块: 撤销已经提交的Commit. 对已经通过git add加入Stage的文件,进行unstage操作. 对已经是Untracked却 ...

  8. Vue躬行记(9)——Vuex

    Vuex是一个专为Vue.js设计的状态管理库,适用于多组件共享状态的场景.Vuex能集中式的存储和维护所有组件的状态,并提供相关规则保证状态的独立性.正确性和可预测性,这不仅让调试变得可追踪,还让代 ...

  9. 正则表达式 第五篇:C# 正则元字符

    本文整理C#正则表达式的元字符,正则表达式是由字符构成的表达式,每个字符代表一个规则,表达式中的字符分为两种类型:普通字符和元字符.普通字符是指字面含义不变的字符,按照完全匹配的方式匹配文本,而元字符 ...

  10. 力扣(LeetCode)寻找数组的中心索引 个人题解

    给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法. 我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和. 如果数组不存在中心索引,那么我 ...