1、TensorFlow

  安装:https://www.cnblogs.com/pam-sh/p/12239387.html

     https://www.cnblogs.com/pam-sh/p/12241942.html

• 是一个开放源代码软件库,用于进行高性能数值计算
• 借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台
(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边
缘设备等)
• TensorFlow™ 最初是由 Google Brain 团队(隶属于 Google 的 AI
部门)中的研究人员和工程师开发的,可为机器学习和深度学习提供
强力支持

TensorFlow 的Hello world:

2、计算图:

TensorFlow = Tensor + Flow

Tensor 张量
数据结构:多维数组

Flow 流
计算模型:张量之间通过计算而转换的过程

TensorFlow是一个通过 计算图的形式表述计算的编程系统
每一个计算都是计算图上的一个节点
节点之间的边描述了计算之间的关系

计算图是一个有向图,由以下内容构成:
  • 一组节点,每个 节点都代表一个 操作,是一种 运算
  • 一组有向边,每条 边代表节点之间的 关系(数据传递和
控制依赖)

计算图(数据流图)的概念
TensorFlow有两种边:
  • 常规边(实线):代表数据依赖关系。一个节点的运算输出成
  为另一个节点的输入,两个节点之间有tensor流动( 值传递)
  • 特殊边(虚线):不携带值,表示两个节点之间的 控制相关性。
  比如, happens- - before 关系,源节点必须在目的节点执行前完
  成执行

3、张量:

• 在TensorFlow中,所有的数据都通过张量的形式来表示
• 从功能的角度,张量可以简单理解为多维数组
  零阶张量表示 标量(scalar),也就是 一个数;
  一阶张量为 向量(vector),也就是 一维数组;
  n n 阶张量可以理解为一个n n 维数组;
• 张量并没有真正保存数字,它保存的是计算过程

  张量的属性:

名字( name )
“node:src_output”:node 节点名称,src_output 来自节点的第几个输出
形状( shape )
张量的维度信息, shape=() ,表示是标量

类型( type )
每一个张量会有一个唯一的类型
TensorFlow会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错

阶为1的张量等价于向量;
阶为2的张量等价于矩阵,通过 t[ i,j ] 获取元素;
阶为3的张量,通过 t[ i,j,k ] 获取元素;

4、操作:

5、Session:

会话拥有并管理TensorFlow程序运行时的所有 资源
当所有计算完成之后需要 关闭会话帮助系统

指定默认会话:

TensorFlow不会自动生成默认的会话,需要手动指定
当默认的会话被指定之后可以通过 tf.Tensor.eval 函数来计算一个张量的取值

交互式环境下设置默认会话:

在交互式环境下,Python脚本或者Jupyter编辑器下,通过设置默认会话来获取张量的取值
更加方便
n tf.InteractiveSession 使用这个函数会自动将生成的会话注册为默认会话

6、常量和变量:

在运行过程中值不会改变的单元,在TensorFlow中无须进行初始化操作
创建语句:
constant_ name = tf.constant

在运行过程中值会改变的单元,在TensorFlow中须进行初始化操作
创建语句:
e name_variable = tf.Variable (value, name)
个别变量初始化:
p init_op = name_variable.initializer ()
所有变量初始化:
p init_op = tf.global_variables_initializer ()

变量的赋值: 

  • 与传统编程语言不同,TensorFlow中的变量定义后,一般 无需人工赋值,系统会根据算法模型,训练优化过程中 自动调整变量对应的数值

  • 后面在将机器学习模型训练时会更能体会,比如权重Weight变量w,经过多次迭代,会自动调:

• 特殊情况需要人工更新的,可用变量赋值语句
变量更新语句:
update_op = tf.assign(variable_to_be_updated, new_value)

通过变量赋值依次输出1、2、3、....、10

  通过变量赋值计算1+2+3+.....+10:

  占位符  placeholder:

• TensorFlow中的 Variable 变量类型,在定义时需要初始化,但有些变量
定义时并不知道其数值,只有当真正开始运行程序时,才由外部输入,
比如训练数据,这时候需要用到 占位符
• tf.placeholder 占位符,是TensorFlow中特有的一种数据结构,类似动
态变量,函数的参数、或者C语言或者Python语言中格式化输出时的“%”
占位符

• TensorFlow占位符Placeholder,先定义一种数据,其参数为数据的
Type和Shape
占位符Placeholder的函数接口如下:
tf.placeholder(dtype, shape=None, name=None)

     Feed 提交数据和 Fetch 提取数据:

如果构建了一个包含placeholder操作的计算图,当在session中调用run方法时,placeholder占用的变量必须通过 feed_dict参数传递进去,否则报错:

多个操作可以通过一次Feed完成执行:

      一次返回多个值分别赋给多个变量:

计算1+2+...+n:

TensorFlow 编程基础的更多相关文章

  1. 第六节,TensorFlow编程基础案例-保存和恢复模型(中)

    在我们使用TensorFlow的时候,有时候需要训练一个比较复杂的网络,比如后面的AlexNet,ResNet,GoogleNet等等,由于训练这些网络花费的时间比较长,因此我们需要保存模型的参数. ...

  2. 第五节,TensorFlow编程基础案例-session使用(上)

    在第一节中我们已经介绍了一些TensorFlow的编程技巧;第一节,TensorFlow基本用法,但是内容过于偏少,对于TensorFlow的讲解并不多,这一节对之前的内容进行补充,并更加深入了解讲解 ...

  3. Tensorflow编程基础之Mnist手写识别实验+关于cross_entropy的理解

    好久没有静下心来写点东西了,最近好像又回到了高中时候的状态,休息不好,无法全心学习,恶性循环,现在终于调整的好一点了,听着纯音乐突然非常伤感,那些曾经快乐的大学时光啊,突然又慢慢的一下子出现在了眼前, ...

  4. 第七节,TensorFlow编程基础案例-TensorBoard以及常用函数、共享变量、图操作(下)

    这一节主要来介绍TesorFlow的可视化工具TensorBoard,以及TensorFlow基础类型定义.函数操作,后面又介绍到了共享变量和图操作. 一 TesnorBoard可视化操作 Tenso ...

  5. TensorFlow——tensorflow编程基础

    0.tensorflow中的模型运行基础 tensorflow的运行机制属于定义和运行相分离,在操作层面可以抽象成两种:模型构建和模型运行. 在模型构建中的常见概念: 张量(tensor):数据,即某 ...

  6. TensorFlow使用基础-Tensor

    使用 TensorFlow 之前你需要了解关于 TensorFlow 的以下基础知识 :• 使用图 (graphs) 来表示计算 .• 在会话 ( Session ) 中执行图 .• 使用张量 (te ...

  7. 第二章 Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  8. [.net 面向对象编程基础] (1) 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

  9. Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式

    前言 啦啦啦~(博主每次开篇都要卖个萌,大家是不是都厌倦了呢~) 本篇博文希望帮助大家掌握 Broadcast 编程基础,实现动态注册 Broadcast 和静态注册 Broadcast 的方式以及学 ...

随机推荐

  1. DOCKER学习_005:Flannel网络配置

    一 简介 Flannel是一种基于overlay网络的跨主机容器网络解决方案,也就是将TCP数据包封装在另一种网络包里面进行路由转发和通信, Flannel是CoreOS开发,专门用于docker多机 ...

  2. C# 为什么说事件是一种特殊的委托

    很多人说C#的事件是一种特殊的委托,其实并不是,这是对事件的一种误解 C#  事件模型的五个组成部分 1.事件的拥有者 2.事件成员(事件的本身) 3.事件响应者 4.事件处理器:本质上是一种回调方法 ...

  3. vc++调用msscript.ocx解析实现C++与JavaScript脚本交互

    ScriptControl接口 属性名称 类型 备注 AllowUI BOOL 检测是否允许运行用户的接口元素.如果为False,则诸如消息框之类的界面元素不可见. CodeObject Object ...

  4. 【题解】CF986E Prince's Problem(树上差分+数论性质)

    [题解]CF986E Prince's Problem(树上差分+数论性质) 题目大意: 给定你一棵树,有点权\(val_i\le 10^7\).现在有\(m\)组询问给定参数\(x,y,w\)问你对 ...

  5. 啊哈!C语言课后参考答案下

    最近看到一本好评量很高的的C语言入门书,课本真的很好,入门的话.专业性没有那么强,但入门足够了!!好评!看着看着就想把这本书的题课后习题都写出来,最后就有了这个小结.可能有的不是最好,不那么专业,但主 ...

  6. docker-bind挂载

    使用绑定挂载 自Docker早期以来,绑定挂载一直存在.与卷相比,绑定装载具有有限的功能.使用绑定装入时,主机上的文件或目录将装入容器中.文件或目录由其在主机上的完整路径或相对路径引用.相反,当您使用 ...

  7. 5.pycharm中导入第三方模块的方法

    最近刚入门学习python,网上查找了一些资料,发现python编程用的软件pycharm还是比较多的,于是就跟随大众,学习使用pycharm,在学习的过程中,想要导入第三方模块pyperclip,但 ...

  8. spring boot介绍

    spring boot简介 1.spring boot是spring家族中的一个全新的框架,它用来简化spring应用程序的创建和开发过程,也可以说spring boot能简化我们之前采用ssm框架进 ...

  9. ACM北大暑期课培训第六天

    今天讲了DFA,最小生成树以及最短路 DFA(接着昨天讲) 如何高效的构造前缀指针: 步骤为:根据深度一一求出每一个节点的前缀指针.对于当前节点,设他的父节点与他的边上的字符为Ch,如果他的父节点的前 ...

  10. SqlServer数据库知识点笔记

    1.主键约束: 要对一个列加主键约束的话,这列就必须要满足的条件就是非空 因为主键约束:就是对一个列进行了约束,约束为(非空.不重复) 以下是代码   要对一个列加主键,列名为id,表名为emp 格式 ...