TensorFlow入门:从基础概念到模型训练与评估实战

晚来风
晚来风
发布时间:2026-10-13| 1人浏览过
原创

本文详解TensorFlow作为第二代深度学习框架的核心机制,涵盖数据流图、张量及Session执行原理。通过Python代码示例,逐步演示变量定义、占位符使用、权重初始化、交叉熵损失函数构建、梯度下降优化以及模型准确率评估的完整流程,帮助开发者快速掌握TensorFlow基础应用。

TensorFlow是Google公司于2015年11月开源的第二代深度学习框架,旨在改进其第一代框架DistBelief。

该框架支持Python及C/C++语言,可在CPU或GPU环境下运行,并支持通过virtualenv或Docker进行打包和发布。

定义变量

在开始使用TensorFlow之前,首先需要导入该库。

import tensorflow as tf

对于符号变量,我们需要新建一个占位符。

x = tf.placeholder(tf.float32, [None, 784])

这里的x并非具体数值,而是一个占位符,后续在构建计算图时,将作为输入数据传入。

在模型构建中,我们需要定义weights(权重)和biases(偏置),此处使用Variable来定义,因为Variable允许在整个计算过程中被修改。

w = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

在创建Variable的同时,我们对其进行了初始化,随后执行相关操作。

y = tf.nn.softmax(tf.matmul(x, w) + b)

至此,我们成功实现了基础模型结构。

训练

我们采用cross-entropy(交叉熵)作为成本函数(cost function)。

公式表示为:H_{y'}(y) = -\sum_i y'_i \log(y_i)

其中,y代表模型预测的概率分布,y'代表真实的概率分布。

为了实现交叉熵计算,我们需要引入一个新的占位符,用于输入正确答案。

y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = -tf.reducen_sum(y_ * tf.log(y))

通过梯度下降算法来实现模型的优化。

train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)

在正式使用该模型之前,我们需要完成最后一项准备工作。

init = tf.initialize_all_variables()
with tf.Session() as sess:
  sess.run(init)

现在,我们可以对模型进行1000次训练迭代。

for i in xrange(1000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict = {x: batch_xs, y_: batch_ys})

这种使用随机数据的小批量(batch)进行训练的方法被称为随机梯度下降训练。

模型评分

首先,我们需要对比真实标签y_与模型预测结果y之间正确预测的数量。

correct_prediction = tf.equal(tf.argmax(y, 1), tf.agrmax(y_, 1))

该操作将返回一个布尔值列表,例如[True, False, True, True]。

accuracy = tf.reduce_mean(tf.cast(correc_prediction, tf.float32))
print (sess.run(accuracy, feed_dict = {x: mnist.test.images, y_: minst.test.labels}))

最后,通过上述计算得出模型的准确率。

开始使用

TensorFlow并非纯粹的神经网络框架,而是一个基于数据流图进行数值计算的框架。

TensorFlow利用有向图(graph)来表示计算任务。图中的节点称为ops(operations),表示对数据的处理;图的边(flow)描述数据的流向。

该框架的计算过程即处理由tensor(张量)组成的数据流,这也是TensorFlow名称的由来。

TensorFlow使用tensor来表示数据,tensor意为张量,即高维数组,在Python中通常使用numpy.ndarray来表示。

TensorFlow使用Session来执行图,使用Variable来维护状态。tf.constant是仅输出的操作节点,常用作数据源。

下面构建一个仅包含两个constant作为输入,并进行矩阵乘法的简单计算图。

from tensorflow import Session, device, constant, matmul

'''构建一个只有两个constant做输入, 然后进行矩阵乘的简单图:'''

#如果不使用with session()语句, 需要手动执行session.close().
#with device设备指定了执行计算的设备:
#  "/cpu:0": 机器的 CPU.
#  "/gpu:0": 机器的第一个 GPU, 如果有的话.
#  "/gpu:1": 机器的第二个 GPU, 以此类推.

with Session() as session: # 创建执行图的上下文
  with device('/cpu:0'): # 指定运算设备
    mat1 = constant([[3, 3]]) # 创建源节点
    mat2 = constant([[2], [2]])
    product = matmul(mat1, mat2) # 指定节点的前置节点, 创建图
    result = session.run(product) # 执行计算
    print(result)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。