TensorFlow基础一(张量的数据类型)

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
个人网站:https://jerry-jy.co/

一、任务需求

TensorFlow 是一个面向深度学习算法的科学计算库,内部数据保存在张量(Tensor)对象上,所有的运算操作(Operation,简称 OP)也都是基于张量对象进行的。复杂的神经网络算法本质上就是各种张量相乘、相加等基本运算操作的组合,在深入学习深度学习算法之前,熟练掌握 TensorFlow 张量的基础操作方法十分重要。只有掌握了这些操作方法,才能随心所欲地实现各种复杂新奇的网络模型,也才能深刻理解各种模型算法的本质。本节主要完成创建不同数据类型的张量、张量的类型转换、张量维度的转换、张量的创建以及张量的四则运算、幂指运算等操作。

二、任务目标

1、掌握张量的数据类型
2、掌握张量的类型转换、维度转换
3、掌握张量的四则运算、幂指运算

三、任务环境

1、jupyter开发环境
2、tensorflow2.4
3、python3.6

四、任务实施过程

(一)、张量的数据类型

1、标量在TensorFlow的创建

import tensorflow as tf
import warnings
warnings.filterwarnings("ignore")
# python 语言方式创建标量
a = 1.2 
# TF 方式创建标量
aa = tf.constant(1.2)
type(a), type(aa), tf.is_tensor(aa)

在这里插入图片描述

2、如果要使用 TensorFlow 提供的功能函数, 须通过 TensorFlow 规定的方式去创建张量,而不能使用 Python 语言的标准变量创建方式。

x = tf.constant([1,2.,3.3])
# 打印 TF 张量的相关信息                
x

在这里插入图片描述

# 将 TF 张量的数据导出为 numpy 数组格式
x.numpy() 

在这里插入图片描述

3、与标量不同,向量的定义须通过 List 容器传给 tf.constant()函数。创建一个元素的向量:

# 创建一个元素的向量
a = tf.constant([1.2]) 
a, a.shape

在这里插入图片描述

4、创建 3 个元素的向量:

 # 创建 3 个元素的向量
a = tf.constant([1,2, 3.])
a, a.shape

在这里插入图片描述

5、创建定义矩阵

# 创建 2 行 2 列的矩阵
a = tf.constant([[1,2],[3,4]]) 
a, a.shape

在这里插入图片描述

6、三维张量可以定义为:

# 创建 3 维张量
tf.constant([[[1,2],[3,4]],[[5,6],[7,8]]]) 

在这里插入图片描述

7、通过传入字符串对象即可创建字符串类型的张量

# 创建字符串
a = tf.constant('Hello, Deep Learning.') 
a

在这里插入图片描述
8、通过传入字符串对象即可创建字符串类型的张量

# 创建字符串
a = tf.constant('Hello, Deep Learning.') 
a

在这里插入图片描述
9、在 tf.strings 模块中,提供了常见的字符串类型的工具函数,如小写化 lower()、 拼接join()、 长度 length()、 切分 split()等。

# 小写化字符串
tf.strings.lower(a) 

在这里插入图片描述
10、布尔类型的张量只需要传入 Python 语言的布尔类型数据,转换成 TensorFlow 内部布尔型即可。

# 创建布尔类型标量
tf.constant(True) 

在这里插入图片描述

11、创建布尔类型的向量

 # 创建布尔类型向量
tf.constant([True, False])

在这里插入图片描述

12、需要注意的是, TensorFlow 的布尔类型和 Python 语言的布尔类型并不等价,不能通用

# 创建 TF 布尔张量
a = tf.constant(True) 
# TF 布尔类型张量与 python 布尔类型比较
print(a is True) 
# 仅数值比较
print(a == True) 

在这里插入图片描述

13、在创建张量时,可以指定张量的保存精度

# 创建指定精度的张量
tf.constant(123456789, dtype=tf.int16)

<tf.Tensor: shape=(), dtype=int16, numpy=-13035>

tf.constant(123456789, dtype=tf.int32)

<tf.Tensor: shape=(), dtype=int32, numpy=123456789>

14、对于浮点数, 高精度的张量可以表示更精准的数据,例如采用 tf.float32 精度保存π时,实际保存的数据为 3.1415927

import numpy as np
# 从 numpy 中导入 pi 常量
np.pi 
# 32 位
tf.constant(np.pi, dtype=tf.float32) 

在这里插入图片描述

15、如果采用 tf.float64 精度保存π,则能获得更高的精度

tf.constant(np.pi, dtype=tf.float64) # 64 位

tf.constant(np.pi, dtype=tf.float64) # 64 位

16、通过访问张量的 dtype 成员属性可以判断张量的保存精度

a = tf.constant(np.pi, dtype=tf.float16)

# 读取原有张量的数值精度
print('before:',a.dtype) 
# 如果精度不符合要求,则进行转换
if a.dtype != tf.float32: 
    # tf.cast 函数可以完成精度转换
    a = tf.cast(a,tf.float32) 
# 打印转换后的精度
print('after :',a.dtype) 

在这里插入图片描述

17、系统的每个模块使用的数据类型、 数值精度可能各不相同, 对于不符合要求的张量的类型及精度, 需要通过 tf.cast 函数进行转换

# 创建 tf.float16 低精度张量
a = tf.constant(np.pi, dtype=tf.float16) 
# 转换为高精度张量
tf.cast(a, tf.double) 

在这里插入图片描述

18、进行类型转换时,需要保证转换操作的合法性, 例如将高精度的张量转换为低精度的张量时,可能发生数据溢出隐患:

a = tf.constant(123456789, dtype=tf.int32)
# 转换为低精度整型
tf.cast(a, tf.int16) 

在这里插入图片描述

19、布尔类型与整型之间相互转换也是合法的, 是比较常见的操作

a = tf.constant([True, False])
# 布尔类型转整型
tf.cast(a, tf.int32) 

在这里插入图片描述

20、一般默认 0 表示 False, 1 表示 True,在 TensorFlow 中,将非 0 数字都视为 True,

a = tf.constant([-1, 0, 1, 2])
# 整型转布尔类型
tf.cast(a, tf.bool) 

在这里插入图片描述

–end–

相关推荐

  1. TensorFlow

    2024-04-25 06:02:03       27 阅读
  2. tensorflowtensor

    2024-04-25 06:02:03       68 阅读
  3. 工作随记:oracle重建1T数据大表

    2024-04-25 06:02:03       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 06:02:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 06:02:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 06:02:03       82 阅读
  4. Python语言-面向对象

    2024-04-25 06:02:03       91 阅读

热门阅读

  1. 川宁生物环保方面优势明显合成生物学赋能未来

    2024-04-25 06:02:03       107 阅读
  2. MybatisPlus 常用注解

    2024-04-25 06:02:03       48 阅读
  3. 基于单片机的红外无线测距仪

    2024-04-25 06:02:03       36 阅读
  4. HarmonyOS —— 跳转应用详情页

    2024-04-25 06:02:03       40 阅读
  5. sparkctl x86/arm不同平台编译使用

    2024-04-25 06:02:03       32 阅读