TensorFlow是一个数值计算库,其中数据(Tensor,张量)在计算图中流动。数据在TensorFlow用被称为张量的n维数据表示。计算图由数据和数学操作符构成。

  • 计算图中的节点代表数学操作符
  • 计算图中的边代表操作符之间的张量

计算图(Graph)

在TensorFlow中,一个计算图表述了计算过程。当你创建计算图时,变量还没有值。只有你在会话(Session)中运行计算图,变量才有值。在我们正式使用TensorFlow之前,先将其导入。

计算图是TensorFlow的核心概念之一,每个计算/操作/变量都在计算图上机型。代码中发生的一切都在TensorFlow提供的默认计算图中进行。我们可以通过以下方式访问此图:

graph = tf.get_default_graph()

可以通过用graph.get_operations()来查看所有的操作。

输出为空,因为我们并没有在计算图上添加任何东西。

或者,我们可以用

for op in graph.get_operations():print(op.name)

来查看默认计算图中所有操作的名字。当然,我们也可以同时创建多个计算图。

会话(Session)

一个计算图可以用来定义操作,但这些操作只能在会话中执行。计算图和会话可以分别独立创建。我们可以把计算图想成是施工图纸,而会话就是施工现场。

可以按照如下方式创建会话:

sess = tf.Session()
... your code ...
... your code ...
sess.close()

每次打开一个会话时,记住要关闭它。或者使用with块,

with tf.Session() as sess:sess.run(f)

使用with块的优点是:会话在with块结束时会自动关闭。

张量(Tensor)

TensorFlow用张量来保存数据,有点像numpy用多维数组保存数据(还是不一样呢!)。

常量(Constant)

常量就意味着它的值不能变,我们可以按如下方式定义常量:

可以看到并不像在Python中,定义了一个常量就可以打印出其值。我们如果想要访问或者输出一个常量的值,必须要在会话中执行。

变量(Variable)

与常量不同,变量可以包含不同的值。但是,它需要由初始化操作进行初始化。对每个变量会很费力。TensorFlow提供了一次性初始化所有变量的机制:

init_op = tf.global_variables_initializer()

init_op将会加到默认的TensorFlow计算图中。如果我们要访问变量,在其之前执行init_op操作即可。

现在,我们再次尝试输出所有操作的名字:

占位符(Placeholder)

占位符是等待初始化/feed的张量。占位符用于训练数据,这些数据仅在代码在会话中运行时提供。给占位符的内容称为feed_dict。 Feed_dict是用于保存数据的键值对:

线性回归(Linear Regression)

接下来,我们用上述知识尝试做一个线性回归的任务。

可以先创建一些点,

定义两个占位符,用来feed数据(trainXtrainY):

X = tf.placeholder('float')
Y = tf.placeholder('float')

线性回归模型是y_model = w * x + b,我们得通过模型计算得到wb的值。初始化wb的值为0。代价函数定义为(Y - y_model) ^ 2。TensorFlow中包含了许多优化器可以用来计算并更新梯度以最小化某个代价函数。在这里,我们可以GradientDescentOptimizer并设置学习速率为0.01。

w = tf.Variable(0.0, name='weight')
b = tf.Variable(0.0, name='bias')
y_model = tf.multiply(w, X) + bcost = tf.pow(Y - y_model, 2)
train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

现在已经定义好了计算图。为了进行计算,我们需要在会话中执行代码:

with tf.Session() as sess:sess.run(init_op)for i in range(100):for (x, y) in zip(trainX, trainY):sess.run(train_op, feed_dict={X:x, Y:y})print(sess.run(w), sess.run(b))

计算结果为:

可以得到下图:

参考

[1] https://cv-tricks.com/artificial-intelligence/deep-learning/deep-learning-frameworks/tensorflow-tutorial/

tensorflow 转张量类型为float_TensorFlow快速入门相关推荐

  1. tensorflow 转张量类型为float_TensorFlow是什么?怎么用?终于有人讲明白了

    作者:翁贝托·米凯卢奇(Umberto Michelucci)来源:大数据DT(ID:bigdatadt) 导读:在开始使用TensorFlow之前,必须了解它背后的理念.该库很大程度上基于计算图的概 ...

  2. tensorflow 转张量类型为float_5个简单的步骤掌握Tensorflow的Tensor

    在这篇文章中,我们将深入研究Tensorflow Tensor的细节.我们将在以下五个简单步骤中介绍与Tensorflow的Tensor中相关的所有主题: 第一步:张量的定义→什么是张量? 第二步:创 ...

  3. java 判断类型_如何快速入门Java编程学习(干货)

    一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...

  4. 联合、枚举和类型别名 - C++快速入门13

    联合.枚举和类型别名 让编程改变世界 Change the world by program 联合.枚举和类型别名 在 C++ 里还有许多其他类型使我们暂时还没有提到的.除了对象外,C++ 中最重要的 ...

  5. tensorflow 转张量类型为float_一文看懂TensorFlow计算图

    导读:在开始使用TensorFlow之前,必须了解它背后的理念.该库很大程度上基于计算图的概念,除非了解它们是如何工作的,否则无法理解如何使用该库.本文将简要介绍计算图,并展示如何使用TensorFl ...

  6. TensorFlow快餐教程:程序员快速入门深度学习五步法

    作者简介:刘子瑛,阿里巴巴操作系统框架专家:CSDN 博客专家.工作十余年,一直对数学与人工智能算法相关.新编程语言.新开发方法等相关领域保持浓厚的兴趣.乐于通过技术分享促进新技术进步. 作为一个程序 ...

  7. 快速入门Pytorch(1)--安装、张量以及梯度

    原文链接:mp.weixin.qq.com/s/WZdBm2JQ4- 这是翻译自官方的入门教程,教程地址如下: DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLIT ...

  8. TensorFlow.js快速入门

    by Pau Pavón 通过保罗·帕文(PauPavón) TensorFlow.js快速入门 (A quick introduction to TensorFlow.js) TensorFlow ...

  9. Tensorflow快速入门2--实现手写数字识别

    Tensorflow快速入门2–实现手写数字识别 环境:  虚拟机ubuntun16.0.4  Tensorflow 版本:0.12.0(仅使用cpu下) Tensorflow安装见:  http:/ ...

最新文章

  1. Home Server诠释
  2. 服务器cpu天梯图_九月手机处理器排名 2020年9月最新版手机CPU天梯图
  3. alertdialog怎么水平排列_轻钢二级吊顶怎么安装
  4. MPICH 完整配置存档
  5. org.springframework.dao.InvalidDataAccessApiUsageException: Write operations
  6. caffe训练中断后如何承接上次继续训练
  7. Unity3D 人形血条制作小知识
  8. 【VB测绘程序设计】第一章 VB测绘程序设计概述
  9. Java EE重新审视设计模式:异步
  10. 哈希表思路图解和代码实现
  11. hashmap hash冲突怎么解决_HashMap原理及冲突之简谈
  12. 国内首位!Node.js社区将阿里云工程师张秋怡吸纳为CTC成员
  13. mysql备份与恢复的一些方法
  14. 自定义无穷大∞的显示内容
  15. Java设计模式(十二)----享元模式
  16. 电脑怎么用c语言写丘比特,转载乌鸦丘比特 的24点程序
  17. Cadence元件库介绍
  18. Nacos视频教程分享
  19. wincc怎么c语言编程,WINCC几个常用C语言编程
  20. 动词记忆(1):ate,ify,ish后缀常用词

热门文章

  1. eclipse保存自动组织导入、删除不必要的导入、格式化代码
  2. 【1】用命令行搭建Vue项目
  3. ATS自定义日志中的各字段解读
  4. 在Unity中制作4种不同的游戏
  5. 嵌入式系统开发过程中遇到的——volatile
  6. 使用rpmbuild对ceph的源码包进行重新打包
  7. NSDate NSCalendar NSString之间的故事以及转换
  8. 在mybatis中模糊查询有三种写法
  9. hdu 2087 剪花布条
  10. 如何写网站的robots.txt和meta name robots的配置