5个简单的步骤掌握Tensorflow的Tensor
文章插图
在这篇文章中 , 我们将深入研究TensorFlow Tensor的细节 。 我们将在以下五个简单步骤中介绍与Tensorflow的Tensor中相关的所有主题:
- 第一步:张量的定义→什么是张量?
- 第二步:创建张量→创建张量对象的函数
- 第三步:张量对象的特征
- 第四步:张量操作→索引、基本张量操作、形状操作、广播
- 第五步:特殊张量
文章插图
张量是TensorFlow的均匀型多维数组 。 它们非常类似于NumPy数组 , 并且它们是不可变的 , 这意味着一旦创建它们就不能被更改 。 只能使用编辑创建新副本 。
让我们看看张量如何与代码示例一起工作 。 但是首先 , 要使用TensorFlow对象 , 我们需要导入TensorFlow库 。 我们经常将NumPy与TensorFlow一起使用 , 因此我们还可以使用以下行导入NumPy:
import tensorflow as tfimport numpy as np
张量的创建:创建张量对象有几种方法可以创建tf.Tensor对象 。 让我们从几个例子开始 。 可以使用多个TensorFlow函数创建张量对象 , 如下例所示:# 你可以用`tf.constant`函数创建tf.Tensor对象:x = tf.constant([[1, 2, 3, 4 ,5]])# 你可以用`tf.ones`函数创建tf.Tensor对象:y = tf.ones((1,5))# 你可以用`tf.zeros`函数创建tf.Tensor对象:z = tf.zeros((1,5))# 你可以用`tf.range`函数创建tf.Tensor对象:q = tf.range(start=1, limit=6, delta=1)print(x)print(y)print(z)print(q)
输出:tf.Tensor([[1 2 3 4 5]], shape=(1, 5), dtype=int32)tf.Tensor([[1. 1. 1. 1. 1.]], shape=(1, 5), dtype=float32) tf.Tensor([[0. 0. 0. 0. 0.]], shape=(1, 5), dtype=float32) tf.Tensor([1 2 3 4 5], shape=(5,), dtype=int32)
如你所见 , 我们使用三个不同的函数创建了形状(1,5)的张量对象 , 使用tf.range()函数创建了形状(5,)的第四个张量对象 。 注意,tf.ones的和tf.zeros接受形状作为必需的参数 , 因为它们的元素值是预先确定的 。张量对象的特征tf.Tensor创建对象 , 它们有几个特征 。 首先 , 他们有维度数量 。 其次 , 它们有一个形状 , 一个由维度的长度组成的列表 。 所有张量都有一个大小 , 即张量中元素的总数 。 最后 , 它们的元素都被记录在一个统一的数据类型(datatype)中 。 让我们仔细看看这些特征 。
维度张量根据其维数进行分类:
- Rank-0(标量)张量:包含单个值且没有轴的张量(0维);
- Rank-1张量:包含单轴(一维)值列表的张量;
- Rank-2张量:包含2个轴(2维)的张量;以及
- Rank-N张量:包含N轴的张量(三维) 。
文章插图
例如 , 我们可以通过向tf.constant传递一个三层嵌套的list对象来创建一个Rank-3张量 。 对于这个例子 , 我们可以将数字分割成一个3层嵌套的列表 , 每个层有3个元素:
three_level_nested_list = [[[0, 1, 2],[3, 4, 5]],[[6, 7, 8],[9, 10, 11]] ]rank_3_tensor = tf.constant(three_level_nested_list)print(rank_3_tensor)
Output:tf.Tensor( [[[ 012][ 345]][[ 678][ 9 10 11]]],shape=(2, 2, 3), dtype=int32)
我们可以查看“rank_3_tensor”对象当前具有“.ndim”属性的维度数 。tensor_ndim = rank_3_tensor.ndimprint("The number of dimensions in our Tensor object is", tensor_ndim)
Output:The number of dimensions in our Tensor object is 3
形状形状特征是每个张量都具有的另一个属性 。 它以列表的形式显示每个维度的大小 。 我们可以查看使用.shape属性创建的rank_3_tensor对象的形状 , 如下所示:tensor_shape = rank_3_tensor.shapeprint("The shape of our Tensor object is", tensor_shape)
Output:The shape of our Tensor object is (2, 2, 3)
如你所见 , 我们的张量在第一层有两个元素 , 第二层有两个元素 , 第三层有三个元素 。大小大小是张量的另一个特征 , 它意味着张量有多少个元素 。 我们不能用张量对象的属性来测量大小 。 相反 , 我们需要使用tf.size函数 。 最后 , 我们将使用实例函数.NumPy()将输出转换为NumPy , 以获得更具可读性的结果:
tensor_size = tf.size(rank_3_tensor).numpy()print("The size of our Tensor object is", tensor_size)
Output:The size of our Tensor object is 12
数据类型张量通常包含数字数据类型 , 如浮点和整数 , 但也可能包含许多其他数据类型 , 如复数和字符串 。但是 , 每个张量对象必须将其所有元素存储在一个统一的数据类型中 。 因此 , 我们还可以使用.dtype属性查看为特定张量对象选择的数据类型 , 如下所示:
- 智能手机市场|华为再拿第一!27%的份额领跑全行业,苹果8%排在第四名!
- 会员|美容院使用会员管理软件给顾客更好的消费体验!
- 行业|现在行业内客服托管费用是怎么算的
- 人民币|天猫国际新增“服务大类”,知舟集团提醒入驻这些类目的要注意
- 美国|英国媒体惊叹:165个国家采用北斗将GPS替代,连美国也不例外?
- 国外|坐拥77件专利,打破国外的垄断,造出中国最先进的家电芯片
- 技术|做“视频”绿厂是专业的,这项技术获人民日报评论点赞
- 面临|“熟悉的陌生人”不该被边缘化
- 中国|浅谈5G移动通信技术的前世和今生
- 页面|如何简单、快速制作流程图?上班族的画图技巧get