一、TensorFlow简介
TensorFlow是由Google开发的开源机器学习框架,广泛应用于深度学习模型的构建、训练和部署。它支持从研究到生产的全流程,提供灵活的工具和库,适用于计算机视觉、自然语言处理等多种任务。
通俗理解
可以把TensorFlow想象成一个“乐高工厂”:
张量(Tensor)是各种形状的乐高积木(数据),比如数字、图片或文本。
计算图(Graph)是组装说明书,告诉工厂如何拼接这些积木(数学运算)。
流水线(Session)则是工人按说明书一步步组装,最终产出模型成品。
二、TensorFlow代码推理
例子(一)
这幅图片展示了一个使用TensorFlow构建的简单神经网络模型,并演示了如何进行预测。以下是关键点讲解:
输入数据:
x
是一个形状为(1,2)的NumPy数组,表示单个样本的两个特征值(200.0和17.0)。网络结构:
第一层(
layer_1
)是包含3个神经元的Dense层,使用sigmoid激活函数,输出a1
。第二层(
layer_2
)是包含1个神经元的Dense层,使用sigmoid激活函数,输出a2
。
矩阵表示:图中用矩阵形式展示了第一层的输出值示例(假设值),其中第一行为神经元输出(a₁[1]=[ 0.2, 0.7, 0.8 ], a₂[1]=0.8),第二行为占位值。
预测逻辑:对第二层的输出
a2
进行阈值判断(≥0.5),若成立则预测值yhat
为1,否则为0。符号说明:
a₁[2]表示第二层第一个(也是唯一一个)神经元的输出。
y表示真实标签,yhat表示预测结果。
例子(二)
输入数据:
x
是一个包含图像像素值的NumPy数组,其中显示了部分示例值(0.0, 245, 240等),表示单个样本的展开像素特征。网络结构:
第一层(
layer_1
):25个神经元的Dense层,使用sigmoid激活函数,输出a1
。第二层(
layer_2
):15个神经元的Dense层,使用sigmoid激活函数,输出a2
。第三层(
layer_3
):1个神经元的输出层,使用sigmoid激活函数,输出a3
。
预测逻辑:对最终输出
a3
进行二元分类判断(阈值0.5),若≥0.5则预测yhat
为1,否则为0。
三、NumPy数组的创建与结构示例
代码功能:展示了通过
np.array()
创建二维NumPy数组的两种示例。第一个数组:
[[1, 2, 3], [4, 5, 6]]
形状为(2, 3),表示2行3列的矩阵。
第二个数组:
[[0.1, 0.2], [-3.0, -4.0], [-0.5, -0.6], [7.0, 8.0]]
形状为(4, 2),表示4行2列的矩阵。
四、NumPy数组形状的差异
第一个数组:
x = np.array([[200, 17]]) # 形状:(1, 2) - 1行2列的二维数组
显示为矩阵形式
[200 17]
。第二个数组:
x = np.array([[200], [17]]) # 形状:(2, 1) - 2行1列的二维数组
显示为列向量形式
[200] [17]
。第三个数组:
python
x = np.array([200, 17]) # 形状:(2,) - 一维数组(向量)
显示为
[200 17]
,但维度不同。
五、神经网络激活向量的计算与输出
输入数据:
x = np.array([[200.0, 17.0]]) # 形状:(1, 2)的输入特征
神经网络层:
定义了一个包含3个神经元的Dense层(
layer_1
),使用sigmoid激活函数。通过
a1 = layer_1(x)
计算激活值。
输出结果:
显示两种输出形式:
Tensor形式:
tf.Tensor([[0.2 0.7 0.3]], shape=(1, 3), dtype=float32)
(1行3列的矩阵,值为示例假设值)NumPy形式:
array([[1.4661001, 1.125196, 3.2159438]], dtype=float32)
(实际计算的原始值,未经过sigmoid激活)
网络层定义:
定义了一个输出层(
layer_2
),包含1个神经元,使用sigmoid激活函数。输入为上一层的激活输出
a1
。
计算结果:
输出
a2
是一个1x1的矩阵(标量形式),值为示例值0.8
。显示两种输出形式:
Tensor形式:
tf.Tensor([[0.8]], shape=(1, 1), dtype=float32)
NumPy形式:
array([[0.8]], dtype=float32)