前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >TensorFlow简介

TensorFlow简介

作者头像
Techeek
发布于 2017-12-20 09:19:43
发布于 2017-12-20 09:19:43
6.3K00
代码可运行
举报
文章被收录于专栏:人工智能人工智能
运行总次数: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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文读懂 Python 值传递和引用传递
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2024/02/26
2.3K9
一文读懂 Python 值传递和引用传递
python函数可以按照参数名称方式传递参数_python字符串作为函数参数
函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。
全栈程序员站长
2022/09/27
2K0
python函数可以按照参数名称方式传递参数_python字符串作为函数参数
C语言中函数参数传递的三种方式
(1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。 (2)传址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。 (3)传引用,实际是通过指针来实现的,能达到使用的效果如传址,可是使用方式如传值。 说几点建议:如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间。 因而如果int,char等固有类型,而是你自己定义的类或结构等,都建议传指针或引用,因为他们不会创建新的对象。
全栈程序员站长
2022/07/02
4.3K0
C语言中函数参数传递的三种方式
【python】函数参数传递
在c++中,我们知道函数参数可以传值,也可以传引用。在python中函数参数到底如何传递的呢?
读书猿
2024/02/05
990
Python函数参数传递:传值还是传引用
猜猜结果应该是什么? 按照C++语言的思维,如果Python函数参数的传递是传值的话,结果应该是[0, 1],如果是传引用的话,结果应该是[‘T’, ‘Z’, ‘Y’]。 可是实际结果是:[0, 1, 100]。所以,Python函数参数的传递既不是所谓的传值也不是传引用。
卡尔曼和玻尔兹曼谁曼
2019/01/22
3.3K0
Python函数参数传递:传值还是传引用
一文搞懂参数传递原理
最近一年多的时间陆续接触了一些对我来说陌生的语言,主要就是 Python 和 Go,期间为了快速实现需求只是依葫芦画瓢的撸代码;并没有深究一些细节与原理。
crossoverJie
2022/10/27
2790
一文搞懂参数传递原理
每日一道python面试题 - Python的函数参数传递
我们都知道,都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*,通过id来看引用a的内存地址可以比较理解:
公众号---人生代码
2020/05/16
6280
关于函数参数传递,80%人都错了
https://docs.python.org/3/faq/programming.html#how-do-i-write-a-function-with-output-parameters-call-by-reference
Crossin先生
2018/07/24
3830
关于函数参数传递,80%人都错了
【愚公系列】2021年12月 Python教学课程 12-Python函数
函数(function)是用于完成特定任务的程序代码的自包含单元。在面向对象编程的类中,函数通常被称作方法。不同的函数在程序中扮演着不同的角色,起着不同的作用,执行不同的动作。比如 print()函数可以将对象打印到屏幕上;还有一些函数能够返回一个值以供程序使用,比如 len()将可计算长度的对象的元素个数返回给程序。
愚公搬代码
2021/12/14
5270
5.1Python函数(一)
目录 目录 前言 (一)函数的基本知识 (二)函数的基本使用 ==1.函数的简单定义== ==2.传值函数== (3)输出效果 ==3.不定长函数== ==4.缺省函数== ==5.函数的传值过程== ==6.具有返回值函数== ==7.函数的使用说明== 目录 前言 分模块思想,分任务编程,是编程的一大重要思维,其中的实现,函数就担当了一个重要角色,今天我们就来学习Python的初级函数。 (一)函数的基本知识 (1)函数的优点 体积小,减少内存大小,冗余度小。 重用性强,可重复利用。 维护方
py3study
2020/01/17
5780
go语言:函数参数传递详解
参数传递是指在程序的传递过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程。比较常见的参数传递有:值传递,按地址传递参数或者按数组传递参数。
李海彬
2018/07/26
9060
go语言:函数参数传递详解
Python函数
阅读文本大概需要 6 分钟 写在前面 这段时间通过公号写文章结交了许多志同道合的朋友,他们中有和我一样的大学生、研究生、以及已经工作的前辈。虽然处于不同的人生阶段,但彼此聊得很 High ,每个人的成长历程中总有相似的地方,遇到的困惑迷茫也大致相同。通过相互间的交流沟通,可能困扰自己很久的问题于前辈而言只是一个小 Case ,所以说要勤于沟通,去找寻属于自己的圈子,这样你才能提升得更快。 分享给大家一个观点,提升认知优先于积累知识。我的微信个签是「努力固然重要,但请记得选择比努力更重要」因为你做出选择的前
Python技术与生活认知的分享
2018/07/03
9970
python函数详解_INDEX函数
前言:本博文主要讲解Python函数的用法,属于Python高级语法。基础语法见:深入浅出Python——Python基础语法全解,更多内容请访问博主的主页,谢谢!
全栈程序员站长
2022/11/19
9120
python函数详解_INDEX函数
Python函数参数之全面讲解
Python函数参数 Python函数参数 本文主要介绍Python的函数参数,各种形式的参数。建议动手试试,可以加深理解。 函数参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂的逻辑被封装起来,调用者无需了解。 Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以
1846122963
2018/03/09
1.3K0
Python3 与 C# 基础语法对比(Function专栏-新排版)
在线编程:https://mybinder.org/v2/gh/lotapp/BaseCode/master
逸鹏
2018/07/23
1.3K0
Python3 与 C# 基础语法对比(Function专栏-新排版)
Python学习笔记之函数参数传递 传值还是传引用
在学完Python函数那一章节时,很自然的的就会想到Python中函数传参时传值呢?还是传引用?或者都不是? 
Jetpropelledsnake21
2019/02/15
1.9K0
C++函数参数传递
当形参是非引用类型时,实参的值会被拷贝给形参,实参和形参是两个完全不同的对象,函数对形参做的所有操作都不会影响实参。
TOMOCAT
2021/05/11
1.7K0
函数参数传递常用的三种方式
由于值传递是单向传递,传递过程中只是改变了形参的数值,并未改变实参的数值,因此并不会改变a和b原有的值。
用户1148525
2019/05/27
7990
每天 3 分钟,小闫带你学 Python(二十二)
Often when you think you're at the end of something, you're at the beginning of something else.
小闫同学啊
2019/08/13
4740
Python3 | 练气期,函数创建、参数传递、作用域!
描述:上一章,我们学习了Python3编程中最基本而得流程控制语句,相信大家在作者的实践下也已经掌握了相关关键字了吧,这一章我们一起学习Python3编程入门中函数定义、函数调用、函数参数(传递、类型),匿名函数、递归函数。内嵌函数和闭包、装饰器函数,以及命名空间作用域的讲解,它也是Python编程中最基础且常用的部分,所以说也是需要我们掌握的。
全栈工程师修炼指南
2024/07/29
580
Python3 | 练气期,函数创建、参数传递、作用域!
推荐阅读
相关推荐
一文读懂 Python 值传递和引用传递
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文