TensorFlow|张量流

bolin
发布于 2025-07-01 / 2 阅读
0
0

TensorFlow|张量流

一、TensorFlow简介

TensorFlow是由Google开发的开源机器学习框架,广泛应用于深度学习模型的构建、训练和部署。它支持从研究到生产的全流程,提供灵活的工具和库,适用于计算机视觉、自然语言处理等多种任务。

通俗理解

可以把TensorFlow想象成一个“乐高工厂”:

  • 张量(Tensor)是各种形状的乐高积木(数据),比如数字、图片或文本。

  • 计算图(Graph)是组装说明书,告诉工厂如何拼接这些积木(数学运算)。

  • 流水线(Session)则是工人按说明书一步步组装,最终产出模型成品。


二、TensorFlow代码推理

例子(一)

BF6C2D4E-5D62-47A8-BFF5-9A829057CDB5.png

7FFD614B-528E-4A41-A39B-780D6296E39E.png

这幅图片展示了一个使用TensorFlow构建的简单神经网络模型,并演示了如何进行预测。以下是关键点讲解:

  1. 输入数据x是一个形状为(1,2)的NumPy数组,表示单个样本的两个特征值(200.0和17.0)。

  2. 网络结构

    • 第一层(layer_1)是包含3个神经元的Dense层,使用sigmoid激活函数,输出a1

    • 第二层(layer_2)是包含1个神经元的Dense层,使用sigmoid激活函数,输出a2

  3. 矩阵表示:图中用矩阵形式展示了第一层的输出值示例(假设值),其中第一行为神经元输出(a₁[1]=[ 0.2, 0.7, 0.8 ], a₂[1]=0.8),第二行为占位值。

  4. 预测逻辑:对第二层的输出a2进行阈值判断(≥0.5),若成立则预测值yhat为1,否则为0。

  5. 符号说明

    • a₁[2]表示第二层第一个(也是唯一一个)神经元的输出。

    • y表示真实标签,yhat表示预测结果。


例子(二)

42504A2A-C4DE-48BA-947A-578442A16342.png

  1. 输入数据x是一个包含图像像素值的NumPy数组,其中显示了部分示例值(0.0, 245, 240等),表示单个样本的展开像素特征。

  2. 网络结构

    • 第一层(layer_1):25个神经元的Dense层,使用sigmoid激活函数,输出a1

    • 第二层(layer_2):15个神经元的Dense层,使用sigmoid激活函数,输出a2

    • 第三层(layer_3):1个神经元的输出层,使用sigmoid激活函数,输出a3

  3. 预测逻辑:对最终输出a3进行二元分类判断(阈值0.5),若≥0.5则预测yhat为1,否则为0。


三、NumPy数组的创建与结构示例

1D8C4A0F-6712-4E4B-99E3-8A13B2A5B18A.png

AC4A711B-0CCE-4AF2-8D2F-699C40A6BE47.png

  1. 代码功能:展示了通过np.array()创建二维NumPy数组的两种示例。

  2. 第一个数组

    [[1, 2, 3],  
     [4, 5, 6]]  

    形状为(2, 3),表示2行3列的矩阵。

  3. 第二个数组

    [[0.1, 0.2],  
     [-3.0, -4.0],  
     [-0.5, -0.6],  
     [7.0, 8.0]]  

    形状为(4, 2),表示4行2列的矩阵。


四、NumPy数组形状的差异

917FBE6B-32EF-4D88-83AC-EEE431177CF1.png

  1. 第一个数组

    x = np.array([[200, 17]])  # 形状:(1, 2) - 1行2列的二维数组

    显示为矩阵形式 [200 17]

  2. 第二个数组

    x = np.array([[200], [17]])  # 形状:(2, 1) - 2行1列的二维数组

    显示为列向量形式 [200] [17]

  3. 第三个数组

    python

    x = np.array([200, 17])  # 形状:(2,) - 一维数组(向量)

    显示为 [200 17],但维度不同。


五、神经网络激活向量的计算与输出

20E3FAD5-84DE-4C43-8013-9E34DC3AEC0C.png

  1. 输入数据

    x = np.array([[200.0, 17.0]])  # 形状:(1, 2)的输入特征
  2. 神经网络层

    • 定义了一个包含3个神经元的Dense层(layer_1),使用sigmoid激活函数。

    • 通过a1 = layer_1(x)计算激活值。

  3. 输出结果

    • 显示两种输出形式:

      1. Tensor形式tf.Tensor([[0.2 0.7 0.3]], shape=(1, 3), dtype=float32)
        (1行3列的矩阵,值为示例假设值)

      2. NumPy形式array([[1.4661001, 1.125196, 3.2159438]], dtype=float32)
        (实际计算的原始值,未经过sigmoid激活)


D9B579AC-8E5A-4279-95D6-0F19D37A512A.png

  1. 网络层定义

    • 定义了一个输出层(layer_2),包含1个神经元,使用sigmoid激活函数。

    • 输入为上一层的激活输出a1

  2. 计算结果

    • 输出a2是一个1x1的矩阵(标量形式),值为示例值0.8

    • 显示两种输出形式:

      1. Tensor形式tf.Tensor([[0.8]], shape=(1, 1), dtype=float32)

      2. NumPy形式array([[0.8]], dtype=float32)


评论