恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

《30天吃掉那只TensorFlow2》第4-2篇:张量数学运算实战——标量、向量、矩阵运算与广播机制

  • 首页
  • 资讯中心
  • /
  • 《30天吃掉那只TensorFlow2》第4-2篇:张量数学运算实战——标量、向量、矩阵运算与广播机制

相关资讯

PX4 在 Windows 虚拟机(VMWare / VirtualBox)中搭建 Linux 工具链的完整指南 2026/9/24 17:18:49
IronClaw Telegram 扩展的 remove_reaction 能力:全量清除语义与结果契约解析 2026/9/24 17:18:49
MemOS用图重塑智能体长程记忆 2026/9/24 17:18:49

最新资讯

YOLOv8轻量高空抛物检测系统实战部署
LM优化方法加速BP神经网络训练:原理、实现与避坑指南
基于SpringBoot的宠物救助及领养平台的设计与实现-附源码
Unity 2D格斗游戏动画系统实战:从.anim文件到可维护状态机
C++数据结构继承的概念与菱形继承及虚拟继承和组合
Java酒店管理系统源码拆解:数据库设计、JDBC分层与答辩改造指南

今日推荐

JavaWeb购物车系统实现:基于Session存储的完整工程示例
面向对象综合训练:从图书管理系统掌握封装、继承与多态
Lombok与JDK版本冲突引发NoSuchFieldError:根因排查与修复指南

本周热门

BrewUI:给Homebrew套上图形界面,让macOS软件包管理更简单
BrewUI:让Homebrew包管理变得可视化与高效
公式与文本对齐全攻略:从Word到LaTeX的实用技巧

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

《30天吃掉那只TensorFlow2》第4-2篇:张量数学运算实战——标量、向量、矩阵运算与广播机制

发布时间:2026/9/24 17:23:49
《30天吃掉那只TensorFlow2》第4-2篇:张量数学运算实战——标量、向量、矩阵运算与广播机制 教程深度学习机器学习【免费下载链接】eat_tensorflow2_in_30_daysTensorflow2.0 is delicious, just eat it! 项目地址https://gitcode.com/gh_mirrors/ea/eat_tensorflow2_in_30_days点击查看免费下载本篇技术指南聚焦于 TensorFlow2 低阶 API 中张量的数学运算是《30天吃掉那只TensorFlow2》系列第12天4-2,张量的数学运算的深化解读。全文将张量数学运算系统划分为标量运算、向量运算、矩阵运算三大类并完整讲解支撑前两者高效执行的广播机制覆盖tf.math、tf.reduce_*、tf.linalg、tf.broadcast_*等核心 API。读者学完本篇将能够像使用增强版 numpy一样熟练地对张量进行逐元素计算、按轴规约、矩阵分解与广播扩维这些能力是后续实现线性回归、损失函数、评估指标等模型代码的基础。引言张量数学运算在 TensorFlow 低阶 API 中的定位在《30天吃掉那只TensorFlow2》的知识体系中TensorFlow 的低阶 API 主要包括张量操作、计算图和自动微分三部分其中张量操作又被划分为结构操作与数学运算两块见四、TensorFlow的低阶API张量结构操作张量创建、索引切片、维度变换、合并分割详见4-1,张量的结构操作张量数学运算标量运算、向量运算、矩阵运算以及张量运算的广播机制即本篇主题。正如该章引言所述在低阶 API 层次上可以把 TensorFlow 当做一个增强版的 numpy 来使用。张量数学运算正是这一说法的核心体现它提供比 numpy 更全面的运算方法且可以无缝接入tf.function计算图与 GPU 加速。因此在动手编写模型前先把张量的数学运算吃透能够极大降低后续阅读源码与自研算法的门槛。一标量运算对张量实施逐元素运算1. 标量运算的本质张量的数学运算符可分为标量运算符、向量运算符、矩阵运算符三类。其中标量运算符的特点是对张量实施逐元素运算element-wise包括加减乘除、乘方、开方、取模、地板除法等算术运算三角函数、指数、对数等常见数学函数大小比较、相等判断等逻辑比较运算符。这些运算中相当一部分对常用的数学运算符、-、*、/、**、%、//、、等进行了重载并且支持类似 numpy 的广播特性。从 API 组织上看许多标量运算符都集中在tf.math模块下例如tf.math.mod、tf.math.round、tf.math.pow等。2. 运算符重载像操作 numpy 一样操作张量下面的代码定义了两个 2×2 张量直接使用 Python 运算符完成四则运算与乘方import tensorflow as tf import numpy as np a tf.constant([[1.0,2],[-3,4.0]]) b tf.constant([[5.0,6],[7.0,8.0]]) ab # 运算符重载等价于 tf.add(a,b)tf.Tensor: shape(2, 2), dtypefloat32, numpy array([[ 6., 8.], [ 4., 12.]], dtypefloat32)a-btf.Tensor: shape(2, 2), dtypefloat32, numpy array([[ -4., -4.], [-10., -4.]], dtypefloat32)a*b # 逐元素相乘注意不是矩阵乘法tf.Tensor: shape(2, 2), dtypefloat32, numpy array([[ 5., 12.], [-21., 32.]], dtypefloat32)a/btf.Tensor: shape(2, 2), dtypefloat32, numpy array([[ 0.2 , 0.33333334], [-0.42857143, 0.5 ]], dtypefloat32)a**2tf.Tensor: shape(2, 2), dtypefloat32, numpy array([[ 1., 4.], [ 9., 16.]], dtypefloat32)a**(0.5) # 对负数元素开方得到 nantf.Tensor: shape(2, 2), dtypefloat32, numpy array([[1. , 1.4142135], [ nan, 2. ]], dtypefloat32)注意上面最后一个输出a**(0.5)对元素-3开方得到nan这是浮点运算的正常行为在实际训练中需要留意 NaN 的传播可结合后文tf.clip_by_value等裁剪手段预防。3. 取模、地板除法与逻辑比较运算a%3 # mod 的运算符重载等价于 m tf.math.mod(a,3)tf.Tensor: shape(3,), dtypeint32, numpyarray([1, 2, 0], dtypeint32)a//3 # 地板除法向下取整除法tf.Tensor: shape(2, 2), dtypefloat32, numpy array([[ 0., 0.], [-1., 1.]], dtypefloat32)(a2)tf.Tensor: shape(2, 2), dtypebool, numpy array([[False, True], [False, True]])(a2)(a3) # 逻辑与逐元素tf.Tensor: shape(2, 2), dtypebool, numpy array([[False, True], [False, False]])(a2)|(a3) # 逻辑或逐元素tf.Tensor: shape(2, 2), dtypebool, numpy array([[ True, True], [ True, True]])a5 # 等价于 tf.equal(a,5)tf.Tensor: shape(3,), dtypebool, numpyarray([False, False, False])比较运算返回bool型张量这一特性在后续的布尔索引如tf.boolean_mask与条件运算如tf.where中被广泛使用。4. 常用标量函数与多张量聚合除重载运算符外tf.math模块还提供大量函数式 APItf.sqrt(a)tf.Tensor: shape(2, 2), dtypefloat32, numpy array([[1. , 1.4142135], [ nan, 2. ]], dtypefloat32)a tf.constant([1.0,8.0]) b tf.constant([5.0,6.0]) c tf.constant([6.0,7.0]) tf.add_n([a,b,c]) # 多个张量逐元素求和tf.Tensor: shape(2,), dtypefloat32, numpyarray([12., 21.], dtypefloat32)tf.print(tf.maximum(a,b)) # 逐元素取较大值 tf.print(tf.minimum(a,b)) # 逐元素取较小值[5 8] [1 6]x tf.constant([2.6,-2.7]) tf.print(tf.math.round(x)) # 保留整数部分四舍五入 tf.print(tf.math.floor(x)) # 保留整数部分向下归整 tf.print(tf.math.ceil(x)) # 保留整数部分向上归整[3 -3] [2 -3] [3 -2]常用标量函数可整理为如下速查表均位于tf.math或顶层tf命名空间类别代表性 API说明算术tf.add/tf.subtract/tf.multiply/tf.divide/tf.pow/tf.sqrt逐元素四则与乘方取模整除tf.math.mod、tf.math.floordiv对应%与//重载聚合tf.add_n多个张量逐元素累加最值tf.maximum、tf.minimum逐元素取大/取小取整tf.math.round、tf.math.floor、tf.math.ceil四舍五入/向下/向上取整比较tf.equal、tf.greater_equal、tf.less_equal返回bool张量指数对数tf.math.exp、tf.math.log、tf.math.pow神经网络中常用5. 幅值裁剪数值稳定性的第一道防线训练神经网络时梯度爆炸或中间激活值越界是常见问题幅值裁剪是应对手段之一# 幅值裁剪 x tf.constant([0.9,-0.8,100.0,-20.0,0.7]) y tf.clip_by_value(x,clip_value_min-1,clip_value_max1) z tf.clip_by_norm(x,clip_norm 3) tf.print(y) tf.print(z)[0.9 -0.8 1 -1 0.7] [0.0264732055 -0.0235317405 2.94146752 -0.588293493 0.0205902718]tf.clip_by_value把每个元素裁剪到[clip_value_min, clip_value_max]区间tf.clip_by_norm按 L2 范数整体缩放使整个向量的范数不超过clip_norm。这种技巧在仓库的模型代码中确实有实际应用在3-1,低阶API示范中自定义二分类模型的 BCE 损失函数对预测值做了tf.clip_by_value(y_pred, eps, 1.0-eps)处理目的就是防止tf.math.log在预测值为 0 或 1 时产生无穷大保证数值稳定。二向量运算沿着特定轴规约与扫描1. 什么是向量运算向量运算符只在一个特定轴上运算将一个向量映射到一个标量或者另外一个向量。许多向量运算符的名字以reduce开头这是因为它们的核心动作是规约——沿着某个轴把多个元素合并求和、求均值、取最大等。2. 基本规约reduce 家族# 向量 reduce a tf.range(1,10) tf.print(tf.reduce_sum(a)) tf.print(tf.reduce_mean(a)) tf.print(tf.reduce_max(a)) tf.print(tf.reduce_min(a)) tf.print(tf.reduce_prod(a))45 5 9 1 362880# 张量指定维度进行 reduce b tf.reshape(a,(3,3)) tf.print(tf.reduce_sum(b, axis1, keepdimsTrue)) tf.print(tf.reduce_sum(b, axis0, keepdimsTrue))[[6] [15] [24]] [[12 15 18]]这里有两个关键参数axis指定在哪个维度上规约。axis1按行求和每行 3 个元素压成一个axis0按列求和keepdims是否保留被规约掉的维度。keepdimsTrue时输出保持二维形状如[[6],[15],[24]]这在后续需要与原始张量进行广播运算时非常有用。3. bool 型规约与函数式折叠# bool 类型的 reduce p tf.constant([True,False,False]) q tf.constant([False,False,True]) tf.print(tf.reduce_all(p)) # 全部为 True 才为 True tf.print(tf.reduce_any(q)) # 任一为 True 即为 True0 1tf.reduce_all与tf.reduce_any是逻辑规约运算输出0/1对应False/True。此外规约运算还可以借助函数式折叠fold来理解其本质——tf.foldr从右向左依次用二元函数累积元素# 利用 tf.foldr 实现 tf.reduce_sum s tf.foldr(lambda a,b:ab,tf.range(10)) tf.print(s)454. 累积扫描cumsum 与 cumprod与压成一个值的 reduce 不同**扫描运算scan**把每一步的中间结果都保留下来输出与输入等长的向量# cum 扫描累积 a tf.range(1,10) tf.print(tf.math.cumsum(a)) tf.print(tf.math.cumprod(a))[1 3 6 ... 28 36 45] [1 2 6 ... 5040 40320 362880]tf.math.cumsum输出前缀和序列tf.math.cumprod输出前缀积序列常用于需要保留累积过程的场景。5. 极值索引与 top_k# arg 最大最小值索引 a tf.range(1,10) tf.print(tf.argmax(a)) tf.print(tf.argmin(a))8 0tf.argmax/tf.argmin返回最大/最小值所在位置的索引注意从 0 开始计数故最大值 9 的索引为 8。更进一步tf.math.top_k可以一次取出前 k 个最大元素及其索引并可选排序# tf.math.top_k 可以用于对张量排序 a tf.constant([1,3,7,5,4,8]) values,indices tf.math.top_k(a,3,sortedTrue) tf.print(values) tf.print(indices) # 利用 tf.math.top_k 可以在 TensorFlow 中实现 KNN 算法[8 7 5] [5 2 3]values[8,7,5]、indices[5,2,3]表明最大的三个元素是原序列第 5、2、3 号位置上的 8、7、5。利用tf.math.top_k可以在 TensorFlow 中实现 KNN 算法取距离最近的 k 个邻居。这一 API 在仓库的评估指标实现中同样被直接使用在5-6,评估指标metrics中自定义 Accuracy 指标即通过tf.math.top_k(y_pred, klength, sortedFalse)将模型输出的概率向量还原为类别标签再与真实标签比较计算准确率。三矩阵运算tf.linalg 线性代数子包1. 矩阵运算概览矩阵必须是二维的类似tf.constant([1,2,3])这样的向量不是矩阵。矩阵运算包括矩阵乘法、矩阵转置、矩阵逆、矩阵求迹、矩阵范数、矩阵行列式、矩阵求特征值、矩阵分解等。除了一些常用运算外大部分和矩阵有关的运算都在tf.linalg子包中。2. 矩阵乘法与转置# 矩阵乘法 a tf.constant([[1,2],[3,4]]) b tf.constant([[2,0],[0,2]]) ab # 等价于 tf.matmul(a,b)tf.Tensor: shape(2, 2), dtypeint32, numpy array([[2, 4], [6, 8]], dtypeint32)# 矩阵转置 a tf.constant([[1,2],[3,4]]) tf.transpose(a)tf.Tensor: shape(2, 2), dtypeint32, numpy array([[1, 3], [2, 4]], dtypeint32)运算符是tf.matmul的重载形式。矩阵乘法是全连接层xw b的数学基础这一点在仓库的3-1,低阶API示范中随处可见线性回归模型的核心表达式即为Y Xw0 b0 噪声自定义神经网络层的前向传播也是tf.nn.relu(xself.w1 self.b1)这样的矩阵乘加运算。注意a*b逐元素乘与ab矩阵乘是两个完全不同的运算。3. 矩阵逆、迹与范数# 矩阵逆必须为 tf.float32 或 tf.double 类型 a tf.constant([[1.0,2],[3,4]],dtype tf.float32) tf.linalg.inv(a)tf.Tensor: shape(2, 2), dtypefloat32, numpy array([[-2.0000002 , 1.0000001 ], [ 1.5000001 , -0.50000006]], dtypefloat32)# 矩阵求 trace主对角线元素之和 a tf.constant([[1.0,2],[3,4]],dtype tf.float32) tf.linalg.trace(a)tf.Tensor: shape(), dtypefloat32, numpy5.0# 矩阵求范数默认 Frobenius 范数 a tf.constant([[1.0,2],[3,4]]) tf.linalg.norm(a)tf.Tensor: shape(), dtypefloat32, numpy5.477226值得注意的实用约束tf.linalg.inv要求输入为tf.float32或tf.double等浮点类型整数矩阵需要先用tf.cast转换。4. 行列式与特征值# 矩阵行列式 a tf.constant([[1.0,2],[3,4]]) tf.linalg.det(a)tf.Tensor: shape(), dtypefloat32, numpy-2.0# 矩阵特征值 a tf.constant([[1.0,2],[-5,4]]) tf.linalg.eigvals(a)tf.Tensor: shape(2,), dtypecomplex64, numpyarray([2.49999952.7838817j, 2.5 -2.783882j ], dtypecomplex64)特征值可能为复数因此tf.linalg.eigvals返回complex64类型张量。若还需特征向量可使用tf.linalg.eig。5. QR 分解与 SVD 分解QR 分解将一个方阵分解为一个正交矩阵q和上三角矩阵r的乘积其本质是对矩阵a实施 Schmidt 正交化得到q# 矩阵 QR 分解 a tf.constant([[1.0,2.0],[3.0,4.0]],dtype tf.float32) q,r tf.linalg.qr(a) tf.print(q) tf.print(r) tf.print(qr) # 验证重构qr 应近似还原 a[[-0.316227794 -0.948683321] [-0.948683321 0.316227734]] [[-3.1622777 -4.4271884] [0 -0.632455349]] [[1.00000012 1.99999976] [3 4]]SVD 分解奇异值分解可以将任意矩阵不要求方阵分解为一个正交矩阵u、一个对角阵s和一个正交矩阵v转置的乘积常用于矩阵压缩和降维# 矩阵 svd 分解 a tf.constant([[1.0,2.0],[3.0,4.0],[5.0,6.0]], dtype tf.float32) s,u,v tf.linalg.svd(a) tf.print(u,\n) tf.print(s,\n) tf.print(v,\n) tf.print(utf.linalg.diag(s)tf.transpose(v)) # 利用 svd 分解可以在 TensorFlow 中实现主成分分析PCA降维[[0.229847744 -0.88346082] [0.524744868 -0.240782902] [0.819642067 0.401896209]] [9.52551842 0.51429987] [[0.619629562 0.784894466] [0.784894466 -0.619629562]] [[1.00000119 2] [3.00000095 4.00000048] [5.00000143 6.00000095]]注意返回值顺序tf.linalg.svd返回(s, u, v)三元组其中s是奇异值向量而非对角阵。重构时需要通过tf.linalg.diag(s)把奇异值向量先还原为对角阵再计算u diag(s) v^T。从上面的输出可以看到重构结果与原矩阵a几乎一致数值上仅有微小浮点误差。利用 svd 分解可以在 TensorFlow 中实现主成分分析PCA降维——保留最大的若干个奇异值即可得到低秩近似这一思想在特征压缩与数据可视化场景中非常实用。矩阵运算速查运算API说明乘法tf.matmul/二维矩阵乘法广播批次维度转置tf.transpose交换维度可指定perm求逆tf.linalg.inv要求浮点类型迹tf.linalg.trace主对角线元素和范数tf.linalg.norm默认 Frobenius 范数可指定ord行列式tf.linalg.det输出标量特征值tf.linalg.eigvals/tf.linalg.eig结果为复数分解tf.linalg.qr、tf.linalg.svd、tf.linalg.choleskyQR / 奇异值 / 乔列斯基分解四广播机制不同形状张量之间的运算规则1. 广播的 5 条规则TensorFlow 的广播规则和 numpy 是一样的运算时维度较小的张量会被自动扩展如果张量的维度不同将维度较小的张量进行扩展直到两个张量的维度都一样如果两个张量在某个维度上的长度是相同的或者其中一个张量在该维度上的长度为 1那么这两个张量在该维度上是相容的如果两个张量在所有维度上都是相容的它们就能使用广播广播之后每个维度的长度将取两个张量在该维度长度的较大值在任何一个维度上如果一个张量的长度为 1另一个张量长度大于 1那么在该维度上就好像是对第一个张量进行了复制。广播机制是前文所有标量运算和向量规约得以高效工作的底层支撑例如a b之所以能把 1 维向量加到 2 维矩阵的每一行上正是因为广播规则第 5 条——长度为 1 的维度被复制扩展。2. 隐式广播与显式广播a tf.constant([1,2,3]) b tf.constant([[0,0,0],[1,1,1],[2,2,2]]) b a # 等价于 b tf.broadcast_to(a,b.shape)tf.Tensor: shape(3, 3), dtypeint32, numpy array([[1, 2, 3], [2, 3, 4], [3, 4, 5]], dtypeint32)上面的b a是隐式广播a的 shape 为(3,)b的 shape 为(3,3)a自动扩展为(1,3)再复制为(3,3)参与逐元素相加。若想显式地看到扩展结果可以使用tf.broadcast_totf.broadcast_to(a,b.shape)tf.Tensor: shape(3, 3), dtypeint32, numpy array([[1, 2, 3], [1, 2, 3], [1, 2, 3]], dtypeint32)3. 广播后的形状推导在不知道运行时实际形状的情况下可以用两个 API 预先推导广播后的结果形状# 计算广播后计算结果的形状静态形状TensorShape 类型参数 tf.broadcast_static_shape(a.shape,b.shape)TensorShape([3, 3])# 计算广播后计算结果的形状动态形状Tensor 类型参数 c tf.constant([1,2,3]) d tf.constant([[1],[2],[3]]) tf.broadcast_dynamic_shape(tf.shape(c),tf.shape(d))tf.Tensor: shape(2,), dtypeint32, numpyarray([3, 3], dtypeint32)两者区别在于tf.broadcast_static_shape接收静态形状TensorShape类型来自tensor.shape在构图期Python 层即可完成推导适合形状已知的场景tf.broadcast_dynamic_shape接收动态形状Tensor类型来自tf.shape(tensor)在运行时由 TensorFlow 推导适合tf.function中处理None维度动态 batch的场景。4. 双向量广播示例# 广播效果 cd # 等价于 tf.broadcast_to(c,[3,3]) tf.broadcast_to(d,[3,3])tf.Tensor: shape(3, 3), dtypeint32, numpy array([[2, 3, 4], [3, 4, 5], [4, 5, 6]], dtypeint32)这里c的 shape 为(3,)d的 shape 为(3,1)c先扩展为(1,3)再复制成(3,3)d直接沿第 0 维复制成(3,3)两者逐元素相加得到 3×3 结果。广播配合keepdimsTrue的规约如tf.reduce_sum(x, axis1, keepdimsTrue)是深度学习中标准化如 BatchNorm 中的均值/方差减除的惯用组合。五实战提示把数学运算接入模型代码结合仓库中的实际代码张量数学运算主要有三类落地场景损失函数在3-1,低阶API示范中MSE 损失写为tf.reduce_mean((y_true - y_pred)**2/2)BCE 损失写为- y_true*tf.math.log(y_pred) - (1-y_true)*tf.math.log(1-y_pred)——这正是标量运算乘方、对数 向量规约reduce_mean的组合评估指标在5-6,评估指标metrics中自定义 Accuracy 指标用tf.math.top_k还原预测类别在5-4,模型层layers中tf.math.pow通过layers.Lambda(lambda x: tf.math.pow(x,2))直接嵌入模型结构训练过程控制在5-7,优化器optimizers中用tf.math.mod(optimizer.iterations, 100) 0判断是否到达每 100 步的打印节点——tf.math.mod正是标量运算章节中%重载对应的底层函数。另外两点使用前提需要说明运行环境本项目全部代码在 TensorFlow 2.1 版本下测试通过见 README.md文中输出示例均来自该环境。新版 TensorFlow 中部分 API 有重命名如tf.math.reduce_sum与tf.reduce_sum等价调用时请以实际安装版本为准GPU 加速张量数学运算天然可以运行在 GPU 上6-3,使用单GPU训练模型编写运算代码时保持张量在 GPU 显存中不来回拷贝即可获得显著加速将运算逻辑放入tf.function装饰的函数中如3-1,低阶API示范所示可进一步获得计算图优化收益。小结本篇围绕《30天吃掉那只TensorFlow2》第 4-2 节系统梳理了张量数学运算的四大板块标量运算逐元素四则、比较、取整、裁剪、向量运算reduce规约、扫描累积、极值索引、top_k、矩阵运算tf.linalg下的乘、转置、逆、迹、范数、行列式、特征值与 QR/SVD 分解以及广播机制5 条规则与tf.broadcast_*系列 API。这些能力与4-1,张量的结构操作创建、切片、变换、合并共同构成了 TensorFlow 低阶 API 的张量操作全貌也是理解2-1,张量数据结构常量与变量、多维张量之后最值得掌握的下一块拼图。建议读者在本地克隆本仓库后将上述代码在 Jupyter 中逐段运行对照输出并结合3-1,低阶API示范中的完整模型代码体会数学运算如何被组织进真实的训练循环。赞分享教程深度学习机器学习【免费下载链接】eat_tensorflow2_in_30_daysTensorflow2.0 is delicious, just eat it! 项目地址https://gitcode.com/gh_mirrors/ea/eat_tensorflow2_in_30_days点击查看免费下载相关推荐30天吃掉那只TensorFlow2核心概念精讲张量、计算图与自动微分30天吃掉那只TensorFlow2核心概念精讲张量、计算图与自动微分 本文是《30天吃掉那只TensorFlow2》开源教程第二章的完整技术解读围绕 Te教程深度学习机器学习TensorFlow2 张量结构操作全解创建、索引切片、维度变换与合并分割《30天吃掉那只TensorFlow2》第4-1节TensorFlow2 张量结构操作全解创建、索引切片、维度变换与合并分割《30天吃掉那只TensorFlow2》第4 1节 张量的结构操作是 Tenso教程深度学习机器学习30天吃掉TensorFlow2张量数据结构常量与变量完全指南30天吃掉TensorFlow2张量数据结构常量与变量完全指南 本文档源自《30天吃掉那只TensorFlow2》开源教程第 2 1 节围绕 Tenso教程深度学习机器学习上一篇如何快速实现现代JavaScript项目中的人脸识别Face Detection API终极指南下一篇开源项目推荐mathc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号