IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 1-1 张量数据结构 -> 正文阅读

[数据结构与算法]1-1 张量数据结构

程序 = 数据结构 + 算法。

TensorFlow程序 = 张量数据结构 + 计算图算法语言

  • 张量:即Tensorflow的基本数据结构,张量(Tensor)即多维数组
  • 计算图:TensorFlow的所有计算都会被转化为计算图上的节点

前面已经介绍过,张量即多维数组。

标量为0维张量,向量为1维张量,矩阵为2维张量。彩色图像有rgb三个通道,可以表示为3维张量。视频还有时间维,可以表示为4维张量。

可以简单地总结为:有几层中括号,就是多少维的张量。

scalar = tf.constant(True)  # 标量, 0维张量
vector = tf.constant([1.0, 2.0, 3.0, 4.0])  # 向量, 1维张量
matrix = tf.constant([[1.0, 2.0], [3.0, 4.0]])  # 矩阵, 2维张量
tensor3 = tf.constant([[[1.0, 2.0], [3.0, 4.0], [5.0, 6.0], [7.0, 8.0]]])  # 3维张量

tf.rank() 用来返回张量的秩。需要注意的是,张量的秩与矩阵的秩不一样。张量的秩是唯一选择张量的每个元素所需的索引的数量。秩也被称为 “order”,“degree” 或 “ndims”。这里张量的秩,可以直接理解维度,就是说这个张量是几维的,它不是矩阵的秩也不是数组的shape,简单的理解,可以它就是中括号的层数。

with tf.Session() as sess:
    print(sess.run(tf.rank(scalar)))
    print(sess.run(tf.rank(vector)))
    print(sess.run(tf.rank(matrix)))
    print(sess.run(tf.rank(tensor3)))

输出

0
1
2
3

从行为特性来看,有两种类型的张量,常量constant和变量Variable

1 常量张量

常量张量:计算图中不可以被重新赋值

import tensorflow as tf

i = tf.constant(1)  # tf.int32 类型常量
l = tf.constant(1, dtype=tf.int64)  # tf.int64 类型常量
f = tf.constant(1.23)  #tf.float32 类型常量
d = tf.constant(3.14, dtype=tf.double)  # tf.double 类型常量
s = tf.constant("hello world")  # tf.string类型常量
b = tf.constant(True)  #tf.bool类型常量

可以用tf.cast()改变张量的数据类型。

h = tf.constant([123, 456], dtype=tf.int32)
f = tf.cast(h, tf.float32)
print(h.dtype)
print(f.dtype)
<dtype: 'int32'>
<dtype: 'float32'>

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

num = tf.constant(123456789, dtype=tf.int32)
tf.cast(num, tf.int16))

!!!!!这个地方我可能写得不对,不确定c = c + …能不能这么写

# 常量值不可以改变,常量的重新赋值相当于创造新的内存空间
c = tf.constant([1.0,2.0])

with tf.Session() as sess:
    print(sess.run(c))
    print(id(c))
    c = c + tf.constant([1.0, 1.0])
    print(sess.run(c))
    print(id(c))

输出

[1. 2.]
140336520958752
[2. 3.]
140336520960880

2 变量张量

变量张量:计算图中可以用assign等算子重新赋值。

模型中需要被训练的参数一般被设置成变量。

Variable类型对象不能直接输出,因为当前对象只是一个定义。这里还需要解释一下。

v = tf.Variable([1.0,2.0],name = "v")
v.assign_add([1.0,1.0])
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:48:54  更:2021-08-24 15:49:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:01:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码