当前位置: 首页 > news >正文

TensorFlow 101 | 原理与概念

image

“控制复杂性是计算机编程的本质”

TensorFlow是当今主流的深度学习框架之一,开源社区也在不断推动着它的发展中。网上(包括官方网站)有大量的教程可供参考,而本系列更多尝试从底层和应用角度对TensorFlow框架进行下梳理,首先是原理与概念介绍。

使用TensorFlow框架实现神经网络计算的基本原理是将计算的定义与执行相互分离,其中计算通过数据流图定义,会话执行数据流图上的操作。数据流图定义了整个计算过程,具有节省计算资源、便于自动微分计算、以及CPU/GPU并行、可视化直观等优势。

数据流图中,常量、操作或变量定义为节点,Tensor定义为边,即MxN维矩阵。

其中,常量通过tf.constant()定义,即在图定义过程中确定不变的量,类似于Numpy中的使用方式,包括定义给定值的矩阵、序列,或取随机数等。

操作包括基本的数学计算函数、矩阵操作、矩阵计算、赋值、神经网络激励函数、队列或控制流操作等。

变量通过tf.Variable()定义,与常量不同的是,变量值是在运行过程中动态确定的,同时必须在使用过程中初始化。

定义好的数据流图通过会话类管理运行计算过程。首先,创建一个会话对象tf.Session(),对变量节点进行赋值。会话在运行过程中会检查整个数据流图,即为得到变量的结果需计算哪些前置节点,没有依赖关系的节点将不参与计算。

值得注意的是,最好不要建多个数据流图,因为需要多个会话对象管理其运行过程,它们会共用默认的资源而可能产生冲突,尽量在一张图中使用不连接的子图来替代。

TensorBoard可用于数据流图的可视化,这在构建复杂模型时会非常有用,举个例子:

import tensorflow as tf

a = tf.constant(2, name="a")
b = tf.constant(3, name="b")
x = tf.add(a,b)
writer = tf.summary.FileWriter("/graph", sess.graph)
with tf.Session() as sess:
    print sess.run(x)

在命令行运行后,浏览器访问http://localhost:6000可视化结果,感兴趣的朋友动手试试看吧~

python xxx.py
tensorboard --logdir="/graph" --port 6000

数据科学武林风起云涌,
随数据小虾米共闯江湖~
weixin

转载于:https://www.cnblogs.com/datashrimp/p/7287430.html

相关文章:

  • Apache POI
  • [转]Spring Boot应用的后台运行配置
  • 博客第五天
  • 百度知道芝麻将,申请资格权限介绍奖惩制度(简剖)
  • Android真机调试访问本地服务器(localhost)的解决方案
  • matplotlib之scatter绘制散点
  • IBM 存储高可用HA解决方案和DR连续性解决方案
  • [luoguP2401] 不等数列
  • vitamio遇到的坑,都是不能播放
  • Java使用POI导出excel(上)——基本操作
  • Redis之Hash类型操作
  • 转进制
  • Java web 项目读取src或者tomcat下class文件夹下的xml文件或者properties文件
  • jQuery遍历之prev()方法
  • 文本显示为单行,超过部分隐藏并使用省略号
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • canvas 五子棋游戏
  • mysql中InnoDB引擎中页的概念
  • node入门
  • oldjun 检测网站的经验
  • SpringBoot 实战 (三) | 配置文件详解
  • windows-nginx-https-本地配置
  • 诡异!React stopPropagation失灵
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 京东美团研发面经
  • 判断客户端类型,Android,iOS,PC
  • 前端技术周刊 2019-02-11 Serverless
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 听说你叫Java(二)–Servlet请求
  • 用Visual Studio开发以太坊智能合约
  • ​​​​​​​​​​​​​​Γ函数
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一)基于IDEA的JAVA基础12
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)ORM
  • (转)可以带来幸福的一本书
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • **PHP二维数组遍历时同时赋值
  • .net core使用ef 6
  • .NET实现之(自动更新)
  • :not(:first-child)和:not(:last-child)的用法
  • @JsonSerialize注解的使用
  • @ModelAttribute 注解
  • @ModelAttribute注解使用
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [Android Studio] 开发Java 程序
  • [AutoSar NVM] 存储架构
  • [bzoj1912]异象石(set)
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [C\C++]读入优化【技巧】
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [CF494C]Helping People