Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >TensorFlow简介

TensorFlow简介

作者头像
Techeek
发布于 2017-12-20 09:19:43
发布于 2017-12-20 09:19:43
6.3K20
代码可运行
举报
文章被收录于专栏:人工智能人工智能
运行总次数:0
代码可运行

TensorFlow是由Google开发的用于解决复杂数学问题的库。本篇介绍将简述TensorFlow示例,如何定义、使用张量执行数学运算,以及查看其他机器学习相关示例。

什么是TensorFlow?

TensorFlow是Google开发的一个库,用于解决复杂的数学问题,使用TensorFlow将为您节省不少时间。

TensorFlow可以做很多事情,比如:

  • 解决复杂的数学表达式
  • 快速执行机器学习,  在这种机器学习技术中,您可以为其提供一个训练数据样本,然后根据训练数据给出另一个数据样本来预测结果。
  • 提供GPU支持。您可以使用GPU(图形处理单元)而不是使用CPU来加快处理速度。TensorFlow有两个版本的您可以下载CPU版本或者GPU版本。

在开始使用TensorFlow示例之前,我们需要了解一些基本知识。

什么是张量?

张量是TensorFlow使用的主要数据块。它们就像TensorFlow用来处理数据的变量。每个张量都有一个维度和一个类型。

维度是指张量的行和列。您可以定义一维张量,二维张量和三维张量,关于张量详细使用我们将在后面看到。

类型是指张量元素的数据类型。

定义一维张量

为了定义张量,我们将创建一个NumPy数组或Python列表,并使用tf_convert_to_tensor 函数将其转换为张量。

我们将使用NumPy来创建一个这样的数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
arr = np.array([1, 5.5, 3, 15, 20])

结果显示了阵列的尺寸和形状。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np   
arr = np.array([1, 5.5, 3, 15, 20])   
print(arr)   
print (arr.ndim)   
print (arr.shape)   
print (arr.dtype)

现在我们将使用tf_convert_to_tensor  函数将此数组转换为张量  。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import tensorflow as tf
arr = np.array([1, 5.5, 3, 15, 20])
tensor = tf.convert_to_tensor(arr,tf.float64)
print(tensor)

从结果中,可以看到张量的定义,但看不到张量的元素。

要查看张量的元素,可以像这样运行一个会话:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import tensorflow as tf
arr = np.array([1, 5.5, 3, 15, 20])
tensor = tf.convert_to_tensor(arr,tf.float64)
sess = tf.Session()
print(sess.run(tensor))
print(sess.run(tensor[1]))

定义二维张量

这与一维数组完全相同,但是这次我们需要这样定义数组:

代码语言:txt
AI代码解释
复制
arr = np.array([(1, 5.5, 3, 15, 20),(10, 20, 30, 40, 50), (60, 70, 80, 90,100)])

你可以把它转换成这样的张量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import tensorflow as tf
arr = np.array([(1, 5.5, 3, 15, 20),(10, 20, 30, 40, 50), (60, 70, 80, 90, 100)])
tensor = tf.convert_to_tensor(arr)
sess = tf.Session()
print(sess.run(tensor))

现在你知道如何定义张量。如何让它们之间进行一些数学运算呢?

在张量上计算

假设我们有两个这样的数组:

代码语言:txt
AI代码解释
复制
arr1 = np.array([(1,2,3),(4,5,6)]) 
arr2 = np.array([(7,8,9),(10,11,12)])

我们需要得到他们的总和。您可以使用TensorFlow执行许多数学操作。

你可以使用这样的add函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
arr3 = tf.add(arr1,arr2)

整个代码将是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import tensorflow as tf
arr1 = np.array([(1,2,3),(4,5,6)])
arr2 = np.array([(7,8,9),(10,11,12)])
arr3 = tf.add(arr1,arr2)
sess = tf.Session()
tensor = sess.run(arr3)
print(tensor)

当然你可以像这样来繁殖数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import tensorflow as tf
arr1 = np.array([(1,2,3),(4,5,6)])
arr2 = np.array([(7,8,9),(10,11,12)])
arr3 = tf.multiply(arr1,arr2)
sess = tf.Session()
tensor = sess.run(arr3)
print(tensor)

明白了吗?

三维张量

我们已经看到了如何处理一维和二维张量。现在,我们将处理三维张量。但这一次,我们不使用数字;,而使用RGB图像,其中每一幅图像都由x,y和z坐标指定。

这些坐标是宽度,高度和颜色深度。

首先,我们使用导入图像matplotlib。 如果您的系统上没有安装这个库,可以使用pip install matplotlib来安装。

现把你的文件放在Python文件所在的同一个目录下,matplotlib 然后像这样导入图像:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.image as img
myfile = "likegeeks.png"
myimage = img.imread(myfile)
print(myimage.ndim)
print(myimage.shape)

正如你所看到的,这是一个三维图像,宽度为150,高度为150,颜色深度为3。

怎样查看图像呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.image as img
import matplotlib.pyplot as plot
myfile = "likegeeks.png"
myimage = img.imread(myfile)
plot.imshow(myimage)
plot.show()

酷!

那么使用TensorFlow处理图像呢?超级简单。

裁剪或切片图像使用TensorFlow

首先,我们把这些值放在一个占位符上,如下所示:

代码语言:txt
AI代码解释
复制
myimage = tf.placeholder("int32",[None,None,3])

为了裁剪图像,我们将使用如下的切片运算符:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cropped = tf.slice(myimage,[10,0,0],[16,-1,-1])

最后,运行会话:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
result = sess.run(cropped, feed_dict={slice: myimage})

然后你可以看到使用的结果图像matplotlib

整个代码将是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tensorflow as tf
import matplotlib.image as img 
import matplotlib.pyplot as plot
myfile = "likegeeks.png"
myimage = img.imread(myfile) 
slice = tf.placeholder("int32",[None,None,3])
cropped = tf.slice(myimage,[10,0,0],[16,-1,-1])
sess = tf.Session()
result = sess.run(cropped, feed_dict={slice: myimage})
plot.imshow(result)
plot.show()

真棒!

使用Tensorflow移调图像

在这个TensorFlow例子中,我们将使用TensorFlow做一个简单的转换。

首先,指定输入的图像并初始化TensorFlow变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myfile = "likegeeks.png"
myimage = img.imread(myfile)
image = tf.Variable(myimage,name='image')
vars = tf.global_variables_initializer()

然后我们将使用这个  transpose 函数来翻转输入网格的0和1轴:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

sess = tf.Session()
flipped = tf.transpose(image, perm=[1,0,2])
sess.run(vars)
result=sess.run(flipped)

然后,您可以使用显示结果图像matplotlib

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tensorflow as tf
import matplotlib.image as img
import matplotlib.pyplot as plot
myfile = "likegeeks.png"
myimage = img.imread(myfile)
image = tf.Variable(myimage,name='image')
vars = tf.global_variables_initializer()
sess = tf.Session()
flipped = tf.transpose(image, perm=[1,0,2])
sess.run(vars)
result=sess.run(flipped)
plot.imshow(result)
plot.show()

这些TensorFlow示例都向您展示了如何使用TensorFlow进行操作。

加油,本次基础使用简介就到这~

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
2 条评论
热度
最新
上车上车
上车上车
回复回复点赞举报
写的不错
写的不错
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
OpenCV+TensorFlow 人工智能图像处理 (1)
OpenCV是一个开源的计算机视觉库,OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
YingJoy_
2018/09/14
3.5K0
OpenCV+TensorFlow 人工智能图像处理  (1)
TensorFlow应用实战 | TensorFlow基础知识
hw = tf.constant("Hello World! Mtianyan love TensorFlow!")
用户1332428
2018/07/30
9830
TensorFlow应用实战 |  TensorFlow基础知识
一看就懂的Tensorflow实战(Tensorflow入门)
数字手写体识别数据集,常用来作为Deep Learning入门的基础数据集。它有60000个训练样本集和10000个测试样本集,每个样本图像的宽高为 28 * 28。此数据集是以二进制存储的,不能直接以图像格式查看。
AI异构
2020/07/29
4150
Tensorflow基础入门十大操作总结
TensorFlow 是一个开源的、基于 Python 的机器学习框架,它由 Google 开发,提供了 Python,C/C++、Java、Go、R 等多种编程语言的接口,并在图形分类、音频处理、推荐系统和自然语言处理等场景下有着丰富的应用,是目前最热门的机器学习框架。
石晓文
2020/07/22
9570
Tensorflow基础入门十大操作总结
TensorFlow模拟简单线性模型小栗子
作者:赵 慧 编辑:李文臣 TensorFlow是什么 官方英文介绍:TensorFlow™ is an open source software library for numerical computation using data flow graphs. TensorFlow是谷歌2015年开源的一个人工智能平台。就如命名一样,TensorFlow为张量从图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。TensorFlow可被
机器学习算法工程师
2018/03/06
6990
TensorFlow模拟简单线性模型小栗子
如何在TensorFlow上高效地使用Dataset
【导读】近日,机器学习工程师Francesco Zuppichini发表一篇教程,讲解了在TensorFlow中高效地输入数据集的方法,作者首先抛弃了feed-dict(它太慢了),然后介绍Tenso
WZEARW
2018/04/13
10.4K0
如何在TensorFlow上高效地使用Dataset
TensorFlow 机器学习秘籍第二版:1~5
在本章中,我们将介绍一些基本的秘籍,以便了解 TensorFlow 的工作原理以及如何访问本书的数据和其他资源。
ApacheCN_飞龙
2023/04/23
1.4K0
教程 | 维度、广播操作与可视化:如何高效使用TensorFlow
选自GitHub 机器之心编译 参与:Nurhachu Null、李泽南 本文从 Tensorflow 基础、理解静态维度和动态维度、广播操作(Broadingcast 的好处和坏处)、使用 Python 操作的原型内核和先进的可视化等几个方面详细梳理如何高效使用TensorFlow。 Tensorflow 基础 TensorFlow 和其他诸如 numpy 之类的数学计算库的根本区别在于:在 TensorFlow 中,运算操作是符号化的。这是一个强大的思想,它能够让 TensorFlow 做任何事情(例如
机器之心
2018/05/09
1.4K0
TensorFlow 和 NumPy 的 Broadcasting 机制探秘
在使用Tensorflow的过程中,我们经常遇到数组形状不同的情况,但有时候发现二者还能进行加减乘除的运算,在这背后,其实是Tensorflow的broadcast即广播机制帮了大忙。而Tensorflow中的广播机制其实是效仿的numpy中的广播机制。本篇,我们就来一同研究下numpy和Tensorflow中的广播机制。
石晓文
2018/07/25
6600
TensorFlow 和 NumPy 的 Broadcasting 机制探秘
教程 | 如何在TensorFlow中高效使用数据集
选自TowardsDataScience 作者:Francesco Zuppichini 机器之心编译 处理并使用数据集是深度学习任务非常重要的组成部分。在本文中,作者 Francesco Zuppichini 将教你使用 TensorFlow 的内建管道向模型传递数据的方法,从此远离「feed-dict」。本文内容已更新至最新的 TensorFlow 1.5 版本。 相关代码地址:https://github.com/FrancescoSaverioZuppichini/Tensorflow-Datase
机器之心
2018/05/10
1.5K0
使用 TensorFlow 构建机器学习项目:1~5
TensorFlow 是用于使用数据流图进行数值计算的开源软件库。 图中的节点表示数学运算,而图的边缘表示在它们之间传递的多维数据数组(张量)。
ApacheCN_飞龙
2023/04/23
1.3K0
数据载入过慢?这里有一份TensorFlow加速指南
王小新 编译自 Towards Data Science 量子位 出品 | 公众号 QbitAI 机器学习算法烂熟于心,网络结构顺手拈来,但是如果数据集载入时耗费大量时间,那整个训练时间就会大大增加。
量子位
2018/03/21
2K0
数据载入过慢?这里有一份TensorFlow加速指南
TensorFlow线性回归与逻辑回归实战
Huber loss是为了增强平方误差损失函数(squared loss function)对噪声(或叫离群点,outliers)的鲁棒性提出的。
公众号guangcity
2019/09/20
1.6K0
TensorFlow线性回归与逻辑回归实战
简明机器学习教程(二)——实践:进入Tensorflow世界
经过了一年的休整,终于博客也要恢复原先坑着的系列了,《简明机器学习教程》也会恢复更新。说实在的,第二篇的原稿我其实在第一篇之后一星期就写出来了,但是后来因为原稿遗失与学业繁忙就一直拖了下来。历经一年,我对机器学习与这系列教程又有了些新的思考,所以我决定做出些许调整。首先,本系列不再单独分理论、实践篇,而是采用交织在一起的形式。其次,将matlab更换为tensorflow(python)。教程的定位依旧是面向初学者,所以会加入大篇幅的前置介绍。这篇就是为了之后内容而对tensorflow进行先行的介绍。
KAAAsS
2022/01/14
9360
简明机器学习教程(二)——实践:进入Tensorflow世界
TensorFlow从0到1丨第2篇:TensorFlow核心编程
上一篇Hello, TensorFlow!中的代码还未解释,本篇介绍TensorFlow核心编程的几个基本概念后,那些Python代码就很容易理解了。 与TensorFlow核心(Core)相对的是T
用户1332428
2018/03/07
1.1K0
TensorFlow从0到1丨第2篇:TensorFlow核心编程
tensorflow学习(tensorflow概念和用tensorflow拟合直线回归)
尽管深度学习背后的数学概念已经出现几十年了,但是用于创建和训练这些深度模型的程序类库在最近几年才出现。不幸的是,大多数类库都会在灵活性和实际生产价值上做出权衡。易用性的类库对于科研是无比珍贵的,因为这样科技工作者们才更方便地研究出新的模型框架,但是,如果考虑到实际生产的话,它们往往训练又太慢而没有实际的应用价值。另一方面,快、高效的类库,部署到分布式硬件上是可行的,但是它们只针对具体的那些神经网络,对新发明的网络又不适用。
opprash
2019/09/20
6660
x.get_shape().as_list()和tf.shape()
先说tf.shape()很显然这个是获取张量的大小的,用法无需多说,直接上例子吧!
周小董
2019/03/25
2.3K0
TensorFlow入门 原
本文将初步向码农和程序媛们介绍如何使用TensorFlow进行编程。在阅读之前请先 安装TensorFlow,此外为了能够更好的理解本文的内容,阅读之前需要了解一点以下知识:
随风溜达的向日葵
2018/08/15
7360
TensorFlow入门
                                                                            原
03 Linear Regression
根据提供的文章内容,进行摘要总结。
MachineLP
2018/01/09
1.2K0
03 Linear Regression
利用Tensorflow构建自己的物体识别模型(一)
利用Tensorflow训练搭建自己的物体训练模型,万里长征第一步,先安装tensorflow。
月小水长
2019/07/31
5870
利用Tensorflow构建自己的物体识别模型(一)
相关推荐
OpenCV+TensorFlow 人工智能图像处理 (1)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文