TensorFlow入门教程:从零开始探索TensorFlow世界
前言
TensorFlow作为当前最流行的深度学习框架之一,为机器学习和深度学习研究提供了强大的支持。本教程将带你走进TensorFlow的世界,从最基础的环境搭建开始,逐步了解TensorFlow的核心概念和基本操作。
TensorFlow简介
TensorFlow是由Google Brain团队开发的开源机器学习框架,其名称来源于"Tensor"(张量)和"Flow"(数据流图)。它采用数据流图(Data Flow Graphs)的形式来描述计算过程,图中的节点(Nodes)表示数学操作,边(Edges)则表示在节点间传递的多维数据数组(张量)。
环境准备
在开始使用TensorFlow之前,我们需要先准备好开发环境。以下是基本的准备工作:
- 导入必要库:
from __future__ import print_function
import tensorflow as tf
import os
- 设置日志目录: TensorFlow使用TensorBoard来可视化计算图和训练过程,因此我们需要指定一个目录来存储这些日志文件。
tf.app.flags.DEFINE_string(
'log_dir',
os.path.dirname(os.path.abspath(__file__)) + '/logs',
'Directory where event logs are written to.')
FLAGS = tf.app.flags.FLAGS
- 确保使用绝对路径: 为了确保路径正确性,我们需要验证并转换路径为绝对路径:
if not os.path.isabs(os.path.expanduser(FLAGS.log_dir)):
raise ValueError('You must assign absolute path for --log_dir')
TensorFlow基础操作
让我们从一个简单的例子开始,了解TensorFlow的基本工作流程:
- 定义常量:
welcome = tf.constant('Welcome to TensorFlow world!')
在TensorFlow中,tf.constant()用于创建常量张量。这里的welcome就是一个包含欢迎信息的字符串张量。
- 创建会话并运行: TensorFlow使用会话来执行定义好的操作:
with tf.Session() as sess:
writer = tf.summary.FileWriter(os.path.expanduser(FLAGS.log_dir), sess.graph)
print("output: ", sess.run(welcome))
- 关闭资源:
writer.close()
sess.close()
TensorBoard简介
TensorBoard是TensorFlow提供的可视化工具,它可以帮助我们:
- 可视化计算图
- 跟踪训练过程中的指标变化
- 查看权重和偏置的分布
- 显示图像、音频等数据
在本教程中,我们通过tf.summary.FileWriter将计算图信息写入日志文件,这些文件可以被TensorBoard读取并可视化。
理解计算图
TensorFlow的核心概念是计算图(Computational Graph)。计算图由以下部分组成:
- 节点(Nodes):表示数学操作
- 边(Edges):表示节点间传递的张量
当我们定义welcome = tf.constant('Welcome to TensorFlow world!')时,实际上是在计算图中创建了一个常量节点。只有在会话中运行sess.run(welcome)时,这个操作才会真正执行。
最佳实践
-
使用上下文管理器: 建议使用
with语句来管理会话,这样可以确保会话正确关闭:with tf.Session() as sess: # 执行操作 -
合理命名操作: 为操作指定有意义的名称,便于在TensorBoard中识别:
welcome = tf.constant('Welcome to TensorFlow world!', name='welcome_message') -
日志管理: 为不同的实验创建不同的日志目录,便于比较和分析。
常见问题
-
为什么需要
sess.run()? TensorFlow采用惰性求值(Lazy Evaluation)策略,只有调用sess.run()时才会真正执行计算。 -
如何查看计算图? 运行程序后,在命令行使用
tensorboard --logdir=path/to/logs命令,然后在浏览器中打开提供的地址即可查看。 -
为什么需要关闭writer和session? 及时释放资源可以避免内存泄漏和其他潜在问题。
下一步
掌握了这些基础知识后,你可以继续学习:
- TensorFlow变量和占位符
- 构建简单的神经网络
- 训练和评估模型
- 使用更高级的TensorBoard功能
TensorFlow世界的大门已经向你敞开,准备好开始你的深度学习之旅了吗?
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00