news 2026/4/15 12:50:05

TensorFlow 基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TensorFlow 基础

摘要:本文介绍了TensorFlow中张量的基础概念与操作。张量作为核心数据结构,具有阶、形状和类型三个关键属性。文章详细讲解了一维和二维张量的创建方法及元素访问方式,并演示了张量的矩阵乘法、加法及行列式计算等操作。通过代码实例展示了如何将NumPy数组转换为TensorFlow张量,构建计算图,并使用会话执行张量运算。最后指出计算图是TensorFlow的核心机制,会话负责启动和执行计算图中的运算。

目录

TensorFlow 基础

张量数据结构

TensorFlow 的各类张量维度

一维张量

定义代码

运行结果(命令行)

二维张量

定义代码

运行结果(命令行)

张量的处理与操作

实现代码

运行结果

代码解析


TensorFlow 基础

在本章中,我们将学习 TensorFlow 的基础知识,首先从理解张量的数据结构开始。

张量数据结构

张量是 TensorFlow 语言中最基础的数据结构,代表着数据流图(Data Flow Graph)中的连接边,本质上被定义为多维数组或列表。

张量由以下三个核心参数标识:

  1. 阶(Rank):张量内描述维度的单位,代表张量的维度数量,也可将张量的阶描述为其定义的阶数或 n 维属性。
  2. 形状(Shape):由张量的行数和列数共同确定,表征张量的维度规模。
  3. 类型(Type):指为张量中元素分配的数据类型。

构建张量时,用户需要完成以下操作:

  1. 构建 n 维数组
  2. 转换 n 维数组

张量可分为以下维度类型:一维张量、二维张量、三维张量、四维张量、五维张量

TensorFlow 的各类张量维度

TensorFlow 包含多种维度的张量,各维度张量简要说明如下:

一维张量

一维张量是常规的数组结构,包含一组相同数据类型的值。

定义代码
>>> import numpy as np >>> tensor_1d = np.array([1.3, 1, 4.0, 23.99]) >>> print(tensor_1d)
运行结果(命令行)

plaintext

(tensorflow)C:\Users\Radhika>python Python 3.5.5|Anaconda, Inc.|(default,Apr 7 2018, 04:52:34)[MSC v.1900 64 bit (AMD64)] on win32 Type "help","copyright","credits" or "license" for more information. >>> import numpy as np >>> tensor_1d = np.array([1.3, 1, 4.0, 23.99]) >>> print(tensor_1d) [ 1.3 1. 4. 23.99]

一维张量的元素索引规则与 Python 列表一致,首个元素的索引为 0,通过指定索引编号即可打印对应元素:

>>> print(tensor_1d[0]) 1.3 >>> print(tensor_1d[2]) 4.0

二维张量

二维张量由一系列数组构成,其创建方式如下:

定义代码
>>> import numpy as np >>> tensor_2d = np.array([(1,2,3,4),(4,5,6,7),(8,9,10,11),(12,13,14,15)]) >>> print(tensor_2d)
运行结果(命令行)

plaintext

(tensorflow) E:\>python Python 3.5.5|Anaconda, Inc.|(default,Apr 7 2018, 04:52:34)[MSC v.1900 64 bit (AMD64)] on win32 Type "help","copyright","credits" or "license" for more information. >>> import numpy as np >>> tensor_2d = np.array([(1,2,3,4),(4,5,6,7),(8,9,10,11),(12,13,14,15)]) >>> print(tensor_2d) [[ 1 2 3 4] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15]]

二维张量的特定元素可通过指定行号和列号(即索引编号)进行查找:

>>> tensor_2d[3][2] 14 >>> print(tensor_2d[3][2]) 14

张量的处理与操作

本节将介绍张量的处理与相关操作,首先来看基础实现代码:

实现代码

import tensorflow as tf import numpy as np # 定义两个三维整型数组 matrix1 = np.array([(2,2,2), (2,2,2), (2,2,2)], dtype = 'int32') matrix2 = np.array([(1,1,1), (1,1,1), (1,1,1)], dtype = 'int32') print(matrix1) print(matrix2) # 将数组转换为TensorFlow常量张量 matrix1 = tf.constant(matrix1) matrix2 = tf.constant(matrix2) # 张量矩阵乘法 matrix_product = tf.matmul(matrix1, matrix2) # 张量加法 matrix_sum = tf.add(matrix1, matrix2) # 定义三维浮点型数组 matrix_3 = np.array([(2,7,2), (1,4,2), (9,0,2)], dtype = 'float32') print(matrix_3) # 计算张量的行列式 matrix_det = tf.matrix_determinant(matrix_3) # 创建会话并运行张量操作 with tf.Session() as sess: result1 = sess.run(matrix_product) result2 = sess.run(matrix_sum) result3 = sess.run(matrix_det) print(result1) print(result2) print(result3)

运行结果

plaintext

(tensorflow) E:\TensorFlowProject>python demo1.py [[2 2 2] [2 2 2] [2 2 2]] [[1 1 1] [1 1 1] [1 1 1]] [[2. 7. 2.] [1. 4. 2.] [9. 0. 2.]] 2018-06-28 12:12:56.760005: I T:\src\github\tensorflow\tensorflow\core\platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 [[6 6 6] [6 6 6] [6 6 6]] [[3 3 3] [3 3 3] [3 3 3]] 55.999992

代码解析

上述代码中,我们首先创建了多个多维数组,随后将其转换为 TensorFlow 的张量并构建了计算图,同时通过会话(Session)管理张量的执行。

计算图是 TensorFlow 的核心,用于定义张量之间的数学运算关系;而会话则负责启动计算图,执行张量的乘法、加法、求行列式等操作,并输出最终的计算结果。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 12:49:35

毕业论文神器!降AIGC平台 千笔·降AI率助手 VS 知文AI

在AI技术迅猛发展的今天,越来越多的研究生开始借助AI工具辅助论文写作,以提升效率、优化内容。然而,随着学术审核标准的不断提高,AI生成内容的痕迹和重复率问题逐渐成为论文通过的关键障碍。许多学生在使用各类降AI率和降重复率工…

作者头像 李华
网站建设 2026/3/27 22:36:27

自动称重控制系统的软件设计

自动称重控制系统的软件设计与实现 第一章 设计背景与核心目标 传统称重系统软件多为单一数据显示功能,存在数据采集精度低、操作依赖人工、缺乏自动化触发逻辑、数据无法实时上传与追溯等问题,难以满足工业生产、物流分拣等场景“精准计量、自动控制、数…

作者头像 李华
网站建设 2026/4/3 16:15:27

基于STM32的智能停车场设计

基于STM32的智能停车场设计与实现 第一章 设计背景与核心目标 传统停车场多依赖人工登记、人工找位、现金缴费,存在车位利用率低(≤60%)、管理效率差、车主找位耗时(平均5-10分钟)、缴费排队等问题,难以满足…

作者头像 李华
网站建设 2026/4/11 18:16:45

计算机毕业设计springboot在线农产品购物网站 基于Spring Boot的生鲜农产品电商平台设计与实现 乡村特产在线销售系统开发——采用Spring Boot框架

计算机毕业设计springboot在线农产品购物网站lzggid8e (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着信息技术的飞速发展和互联网经济的蓬勃兴起,传统农产品销售…

作者头像 李华
网站建设 2026/4/12 3:39:34

两个bm|分块

C 分块算法模板&#xff0c;适合区间修改、区间查询类问题&#xff08;如区间加、区间和&#xff09;&#xff0c;直接就能用#include <iostream>#include <vector>#include <cmath>using namespace std;const int MAXN 1e5 5;int a[MAXN]; // 原数组long …

作者头像 李华
网站建设 2026/4/14 17:15:00

在web页面中,JAVA如何解决大文件上传的难题?

大文件传输解决方案建议书 一、需求分析与技术挑战 作为福建IT行业软件公司项目负责人&#xff0c;针对贵司提出的大文件传输需求&#xff0c;我进行了全面分析&#xff0c;发现以下几个核心挑战&#xff1a; 超大文件传输稳定性&#xff1a;单文件100G的传输及断点续传文件…

作者头像 李华