TensorFlow 的简单例子 | Linux 中国
在本文中,我们将看一些 TensorFlow 的例子,并从中感受到在定义张量和使用张量做数学计算方面有多么容易,我还会举些别的机器学习相关的例子。-- Likegeeks
本文导航? 三维张量
53%
? 使用 TensorFlow 生成或裁剪图片68%
? 使用 TensorFlow 改变图像79%
编译自 | http://www.codementor.io/likegeeks/define-and-use-tensors-using-simple-tensorflow-examples-ggdgwoy4u
作者 | Likegeeks
译者 | ghsgz
在本文中,我们将看一些 TensorFlow 的例子,并从中感受到在定义张量tensor和使用张量做数学计算方面有多么容易,我还会举些别的机器学习相关的例子。
TensorFlow 是什么?
TensorFlow 是 Google 为了解决复杂的数学计算耗时过久的问题而开发的一个库。
事实上,TensorFlow 能干许多事。比如:
? 求解复杂数学表达式? 机器学习技术。你往其中输入一组数据样本用以训练,接着给出另一组数据样本基于训练的数据而预测结果。这就是人工智能了!? 支持 GPU 。你可以使用 GPU(图像处理单元)替代 CPU 以更快的运算。TensorFlow 有两个版本: CPU 版本和 GPU 版本。开始写例子前,需要了解一些基本知识。
什么是张量?
张量tensor是 TensorFlow 使用的主要的数据块,它类似于变量,TensorFlow 使用它来处理数据。张量拥有维度和类型的属性。
维度指张量的行和列数,读到后面你就知道了,我们可以定义一维张量、二维张量和三维张量。
类型指张量元素的数据类型。
定义一维张量
可以这样来定义一个张量:创建一个 NumPy 数组(LCTT 译注:NumPy 系统是 Python 的一种开源数字扩展,包含一个强大的 N 维数组对象 Array,用来存储和处理大型矩阵 )或者一个
Python 列表
[1]
,然后使用 tf_convert_to_tensor 函数将其转化成张量。可以像下面这样,使用 NumPy 创建一个数组:
import
numpy
as
np arr
=
np
.
array
([
1
,
5.5
,
3
,
15
,
20
])
arr
=
np
.
array
([
1
,
5.5
,
3
,
15
,
20
])
运行结果显示了这个数组的维度和形状。
import
numpy
as
np
arr
=
np
.
array
([
1
,
5.5
,
3
,
15
,
20
])
(
arr
)
(
arr
.
ndim
)
(
arr
.
shape
)
(
arr
.
dtype
)
它和 Python 列表很像,但是在这里,元素之间没有逗号。
现在使用 tf_convert_to_tensor 函数把这个数组转化为张量。
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
)
(
tensor
)
这次的运行结果显示了张量具体的含义,但是不会展示出张量元素。
要想看到张量元素,需要像下面这样,运行一个会话:
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
()
(
sess
.
run
(
tensor
))
(
sess
.
run
(
tensor
[
1
]))
定义二维张量
定义二维张量,其方法和定义一维张量是一样的,但要这样来定义数组:
arr
=
np
.
array
([(
1
,
5.5
,
3
,
15
,
20
),(
10
,
20
,
30
,
40
,
50
),
(
60
,
70
,
80
,
90
,
100
)])
接着转化为张量:
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
()
(
sess
.
run
(
tensor
))
现在你应该知道怎么定义张量了,那么,怎么在张量之间跑数学运算呢?
在张量上进行数学运算
假设我们有以下两个数组:
arr1
=
np
.
array
([(
1
,
2
,
3
),(
4
,
5
,
6
)])
arr2
=
np
.
array
([(
7
,
8
,
9
),(
10
,
11
,
12
)])
利用 TenserFlow ,你能做许多数学运算。现在我们需要对这两个数组求和。
使用加法函数来求和:
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
)
(
tensor
)
也可以把数组相乘:
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
)
(
tensor
)
现在你知道了吧。
三维张量
我们已经知道了怎么使用一维张量和二维张量,现在,来看一下三维张量吧,不过这次我们不用数字了,而是用一张 RGB 图片。在这张图片上,每一块像素都由 x、y、z 组合表示。
这些组合形成了图片的宽度、高度以及颜色深度。
首先使用 matplotlib 库导入一张图片。如果你的系统中没有 matplotlib ,可以
使用 pip
[2]
来安装它。将图片放在 Python 文件的同一目录下,接着使用 matplotlib 导入图片:
import
matplotlib
.
image
as
img
myfile
=
"likegeeks.png"
myimage
=
img
.
imread
(
myfile
)
(
myimage
.
ndim
)
(
myimage
.
shape
)
从运行结果中,你应该能看到,这张三维图片的宽为 150 、高为 150 、颜色深度为 3 。
你还可以查看这张图片:
import
matplotlib
.
image
as
img
import
matplotlib
.
pyplot
as
plot
myfile
=
"likegeeks.png"
myimage
=
img
.
imread
(
myfile
)
plot
.
imshow
(
myimage
)
plot
.
show
()
真酷!
那怎么使用 TensorFlow 处理图片呢?超级容易。
使用 TensorFlow 生成或裁剪图片
首先,向一个占位符赋值:
myimage
=
tf
.
placeholder
(
"int32"
,[
None
,
None
,
3
])
使用裁剪操作来裁剪图像:
cropped
=
tf
.
slice
(
myimage
,[
10
,
0
,
0
],[
16
,-
1
,-
1
])
最后,运行这个会话:
result
=
sess
.
run
(
cropped
,
feed\_dict
={
slice
:
myimage
})
然后,你就能看到使用 matplotlib 处理过的图像了。
这是整段代码:
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 变量值:
myfile
=
"likegeeks.png"
myimage
=
img
.
imread
(
myfile
)
image
=
tf
.
Variable
(
myimage
,
name
=
"image"
)
vars
=
tf
.
global_variables_initializer
()
然后调用 transpose 函数转换,这个函数用来翻转输入网格的 0 轴和 1 轴。
sess
=
tf
.
Session
()
flipped
=
tf
.
transpose
(
image
,
perm
=[
1
,
0
,
2
])
sess
.
run
(
vars
)
result
=
sess
.
run
(
flipped
)
接着你就能看到使用 matplotlib 处理过的图像了。
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 有多么容易。
via:
http://www.codementor.io/likegeeks/define-and-use-tensors-using-simple-tensorflow-examples-ggdgwoy4u
作者:
LikeGeeks
[4]
译者:ghsgz
校对:wxy
本文由
LCTT
原创编译,Linux中国
荣誉推出LCTT 译者ghsgz ??共计翻译:
1
篇贡献时间:3 天推荐文章
< 左右滑动查看相关文章 >
点击图片、输入文章 ID 或识别二维码直达
原文链接请访问“原文链接
”获得可点击的文内链接、全尺寸原图和相关文章。- 过年零食那么多,这个才是最先抢吃完的,好吃又营养,简单0失败
- 教你省钱的阳台蔬菜种植方法,简单方便,邻居看了都忍不住夸!
- 过年了,教你2分钟快速泡发木耳、香菇、腐竹等,简单实用!
- 股市唯一简单稳定200%获利口诀“七不买”技巧顺口溜,句句实用,
- 简单几式瑜伽动作,舒缓节日疲劳,拉伸腰腹部缓解大肚腩形成
- 一块豆腐,两个皮蛋,做一道清新爽口菜,做法简单味道香
- 信用卡不激活就万事大吉了? 事情并没有那么简单
- 吃了会上瘾的“土豆”家常做法,饭店的味道,做法超简单!
- 受欢迎10道下饭菜:做法简单又可口
- 看春晚吃点什么零食?来点日本人最爱的简单小吃怎么样!