TensorFlow 基础
TensorFlow 是什么?
TensorFlow 是 Google 为了解决复杂的数学计算耗时过久的问题而开发的一个库。
事实上,TensorFlow 能干许多事。比如:
- 求解复杂数学表达式
- 机器学习技术。你往其中输入一组数据样本用以训练,接着给出另一组数据样本基于训练的数据而预测结果。这就是人工智能了!
- 支持 GPU 。你可以使用 GPU(图像处理单元)替代 CPU 以更快的运算。TensorFlow 有两个版本: CPU 版本和 GPU 版本。
开始写例子前,需要了解一些基本知识。
什么是张量?
张量tensor是 TensorFlow 使用的主要的数据块,它类似于变量,TensorFlow 使用它来处理数据。张量拥有维度和类型的属性。
维度指张量的行和列数,读到后面你就知道了,我们可以定义一维张量、二维张量和三维张量。
类型指张量元素的数据类型。
定义一维张量
可以这样来定义一个张量:创建一个 NumPy 数组(LCTT 译注:NumPy 系统是 Python 的一种开源数字扩展,包含一个强大的 N 维数组对象 Array,用来存储和处理大型矩阵 )或者一个 Python 列表 ,然后使用 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])
print(arr)
print(arr.ndim)
print(arr.shape)
print(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)
print(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()
print(sess.run(tensor))
print(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()
print(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)
print(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)
print(tensor)
现在你知道了吧。
三维张量
我们已经知道了怎么使用一维张量和二维张量,现在,来看一下三维张量吧,不过这次我们不用数字了,而是用一张 RGB 图片。在这张图片上,每一块像素都由 x、y、z 组合表示。
这些组合形成了图片的宽度、高度以及颜色深度。
首先使用 matplotlib 库导入一张图片。如果你的系统中没有 matplotlib ,可以 使用 pip来安装它。
将图片放在 Python 文件的同一目录下,接着使用 matplotlib 导入图片:
import matplotlib.image as img
myfile = "likegeeks.png"
myimage = img.imread(myfile)
print(myimage.ndim)
print(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 基础相关推荐
- TensorFlow基础剖析
TensorFlow基础剖析 一.概述 TensorFlow 是一个使用数据流图 (Dataflow Graph) 表达数值计算的开源软件库.它使用节点表示抽象的数学计算,并使用 OP 表达计算的逻辑 ...
- 资源 | Intel发布AI免费系列课程3部曲:机器学习基础、深度学习基础以及TensorFlow基础
翻译 | AI科技大本营(公众号ID:rgznai100) 校对 | 成龙 编辑 | 明明 Intel于近期发布了三门AI系列的免费课程,分别是关于机器学习基础.深度学习基础.TensorFlow基础 ...
- TF学习:Tensorflow基础案例、经典案例集合——基于python编程代码的实现
TF学习:Tensorflow基础案例.经典案例集合--基于python编程代码的实现 目录 Tensorflow的使用入门 1.TF:使用Tensorflow输出一句话 2.TF实现加法 3.TF实 ...
- [Python人工智能] 三.TensorFlow基础之Session、变量、传入值和激励函数
从本篇文章开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇文章讲解了TensorFlow基础和一元直线预测的案例:本篇文章将详细介绍Session.变量.传入值和激励函数 ...
- [Python人工智能] 二.TensorFlow基础及一元直线预测案例
从本篇文章开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇文章讲解了TensorFlow的安装过程和神经网络基础概念.这篇文章将分享TensorFlow基础并介绍一元直线 ...
- 深度学习(11)TensorFlow基础操作七: 向前传播(张量)实战
深度学习(11)TensorFlow基础操作七: 向前传播(张量)实战 1. 导包 2. 加载数据集 3. 转换数据类型 4. 查看x.shape, y.shape, x.dtype, y.dtype ...
- 深度学习(10)TensorFlow基础操作六: 数学运算
深度学习(10)TensorFlow基础操作六: 数学运算 1. Operation type 2. + - * / % // 3. tf.math.log & tf.exp 4. log2, ...
- 深度学习(9)TensorFlow基础操作五: Broadcasting
深度学习(9)TensorFlow基础操作五: Broadcasting 1. 操作思想 2. 具体例子 3. 理解 (1) How to understand? (2) Why Broadcasti ...
- 深度学习(8)TensorFlow基础操作四: 维度变换
深度学习(8)TensorFlow基础操作四: 维度变换 1. View 2. 示例 3. Reshape操作可能会导致潜在的bug 4. tf.transpose 5. Squeeze VS Exp ...
- 深度学习(7)TensorFlow基础操作三: 索引与切片
深度学习(7)TensorFlow基础操作三: 索引与切片 一. 基础索引 1. Basic indexing 2. Numpy-style indexing 3. start : end 4. 切片 ...
最新文章
- Linux 工具进阶
- Caffe + ROS + OpenCV + Qt creator
- 使用Java创建DynamoDB表
- 对于半圆形的点击区域该怎么做_十堰混合型塑胶跑道怎么选,橡胶跑道卷材型号...
- VSTS强制删除死锁项
- 医疗保健行业未来发展的5大趋势预测
- 现代通信原理7.1:模拟角度调制的基本概念
- 肿瘤基因组变异相关概念
- lombok slfj 中_Lombok快速入门
- 定个小目标——做一款自己的游戏
- CTF杂项小结--沙窝李的王
- 关于在数据库中如何存储时间这件事
- GeForce GTX 1050-2G驱动安装
- MapGuide应用程序示例——你好,MapGuide!
- 【已解决】WPS/OFFICE中word文件可以打印,excel打印后无响应
- word中自动生成的目录中,编号和文本间距过大
- 【云计算】实验3:Keystone 组件
- 我们都需要时间,成为更好的人(转载)
- 哈希学习(2)—— Hashing图像检索资源
- 全新浪子云支付开源版源码
热门文章
- BZOJ 1068: [SCOI2007]压缩
- 深入理解javascript作用域系列第三篇
- [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.16
- Web应用开发平台 OpenJWeb
- grep 判断不是正则的_Shell—正则表达式(grep命令、sed工具)
- python怎么换行继续写脚本_python怎么换行继续写脚本
- 期刊投稿状态_论文投稿,你不知道的那些事
- prim算法_历时两月,终拿字节跳动offer,算法面试题分享「带答案」
- 海报框架模型Photoshop PSD样机模板
- 超火网络直播短视频宣传海报PSD分层模板,新媒体互动