Tensorflow2文档指南【1】张量简介

写在前面

Tensorflow是谷歌开发的深度学习框架,目前已经更新到了2.8,考虑到国内网络不能直接进入tensorflow界面,并且部分指南不是中文的,故通过此文章来作为学习笔记来记录,巩固所学的内容。

张量(Tensor)

以下是Tensorflow 对于张量的描述:
张量是具有统一类型(称为 dtype)的多维数组。您可以在 tf.dtypes.DType 中查看所有支持的 dtypes。
如果您熟悉 NumPy,就会知道张量与 np.arrays 有一定的相似性。
就像 Python 数值和字符串一样,所有张量都是不可变的:永远无法更新张量的内容,只能创建新的张量。

这段话有两个核心要素:
1.张量是多维数组 2. 张量是不可变的
第一点可以这么理解:张量是多维数组的统称,可以直接当成数组理解,向量矩阵之类的概念是其特殊情况,例如,0维张量是常数,1维张量是向量,2维向量是矩阵。
第二点也很好理解,可以从以下例子知道,张量通过tf.constant创建,张量就是常数组再tensorflow中的基础表现形式而已

import tensorflow as tf
import numpy as np

rank_0_tensor = tf.constant(4)
rank_1_tensor = tf.constant([2.0, 3.0, 4.0])
rank_2_tensor = tf.constant([[1, 2],
                             [3, 4],
                             [5, 6]], dtype=tf.float16)

张量的秩(rank)

在线性代数中,秩的大小和矩阵的最大线性无关方程组数有关,在这里可以明确的告诉你,张量的秩和线性代数的秩的概念毫无关系。

Tensorflow 的秩等于张量的轴(axis)的数量
轴:张量的一个维度
举个例子,前面代码块中的rank2_tensor的shape是[3,2],三行两列,那么它的axis0就是3代表的行,axis1就是2代表的列,很多python函数都有axis参数,在这里是一个意思,代表的是数组的shape的某一维,rank是总维数
rank = len(tensor.shape)
下面是Tensorflow 的官方示例
在这里插入图片描述

rank_4_tensor = tf.zeros([3, 2, 4, 5]) #这里生成一个全为0的shape为[3, 2, 4, 5]的张量
print("Type of every element:", rank_4_tensor.dtype)
print("Number of dimensions:", rank_4_tensor.ndim)
print("Shape of tensor:", rank_4_tensor.shape)
print("Elements along axis 0 of tensor:", rank_4_tensor.shape[0])
print("Elements along the last axis of tensor:", rank_4_tensor.shape[-1])
print("Total number of elements (3*2*4*5): ", tf.size(rank_4_tensor).numpy())

输出

Type of every element: <dtype: 'float32'>
Number of dimensions: 4
Shape of tensor: (3, 2, 4, 5)
Elements along axis 0 of tensor: 3
Elements along the last axis of tensor: 5
Total number of elements (3*2*4*5):  120

在图像中,每一维有其约定俗称的含义
在这里插入图片描述

张量的常用操作

实际上,为了使得Tensorflow2.x尽可能地好上手,在设计的时候,就尽量和numpy的数组操作相同,只要使用过numpy处理数组,也可以在Tensorflow中处理tensor,这要把函数的np改成tf即可,或是直接调用类的方法,比如之前的代码块中的tf.zeros,tensor.shape, tensor.dtype等等
下面是几个常见的操作
转换为numpy数组
直接.numpy()

rank_4_array = rank_4_tensor.numpy()

索引
TensorFlow 遵循标准 Python 索引规则以及 NumPy 索引的基本规则。

索引从 0 开始编制
负索引表示按倒序编制索引
冒号 : 用于切片 start:stop:step

具体操作可以参照numpy,tensor是支持切片以及广播等操作的

操作形状

rank_4_tensor_reshape = tf.reshape(rank_4_tensor,[2,4,5,3])

查看数据类型

rank_4_tensor_dtype = rank_4_tensor.dtype

数据类型转换

rank_4_tensor_float = tf.cast(rank_4_tensor,tf.float16)

特殊张量

特殊张量一般是不规则的,在Tensorflow中也有相应的定义,但是实际不常用,可以根据自己的需要去官网学习,这里简要介绍下

不规则张量

在这里插入图片描述

字符串张量

在这里插入图片描述

稀疏张量

在这里插入图片描述

参考:https://www.tensorflow.org/guide/tensor

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值