ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

TensorFlow-Examples 项目 TensorFlow 2.0 实战指南:从入门示例到多 GPU 训练

TensorFlow-Examples 项目 TensorFlow 2.0 实战指南:从入门示例到多 GPU 训练 示例工程机器学习【免费下载链接】TensorFlow-ExamplesTensorFlow Tutorial and Examples for Beginners (support TF v1 v2)项目地址https://gitcode.com/gh_mirrors/te/TensorFlow-Examples点击查看免费下载本篇技术指南以 TensorFlow-Examples 仓库中的 tensorflow_v2/README.md 为核心骨架系统梳理该项目面向 TensorFlow 2.x 的 20 个 Notebook 示例覆盖 Tensor 基础操作、经典回归/分类模型、神经网络、生成模型、模型保存与可视化、数据管理与多 GPU 训练等完整学习路径。读完本文你将掌握该仓库 TF v2 目录下的全部示例结构、每个示例的核心实现要点含关键超参数与源码证据并能够按图索骥地运行和改造这些示例。仓库结构与 TF v2 示例总览TensorFlow-Examples 是一个面向初学者的 TensorFlow 教程仓库同时提供 Notebook 与源码两种形态并分别维护 TF v1 与 TF v2 两套示例。从仓库根目录的 README.md 可以看到作者在 2020 年 5 月将默认示例全部迁移到 TF2TF v1 示例则保留在tensorflow_v1/目录中。TF v2 的所有示例都以 Jupyter Notebook 形式存放在tensorflow_v2/notebooks/下按主题划分为 7 个章节0–6共 26 个 Notebook。需要特别说明的是从各 Notebook 的kernelspec元数据如name: python2、version: 2.7可以推断这些示例虽使用 TF 2.x API如tf.GradientTape、tf.data、KerasModel/layers但最初是在 Python 2 内核环境下运行的属于该仓库早期的历史遗留设定在现代环境中建议使用 Python 3 TensorFlow 2.x 运行代码主体无需修改。章节主题示例数涉及 Notebook0前置知识2机器学习入门、MNIST 数据集入门1入门2Hello World、Tensor 基础运算2基础模型4线性回归、逻辑回归、Word2Vec、GBDT3神经网络9MLP、CNN、RNN/LSTM单向/双向/动态及无监督 AE、DCGAN4工具3模型保存恢复、自定义层、TensorBoard5数据管理3数据加载解析、TFRecords、图像增强6硬件1多 GPU 训练环境安装根据 tensorflow_v2/README.md 的 Installation 一节安装 TensorFlow 2.0 只需一行命令pip install tensorflow2.0.0如需 GPU 支持pip install tensorflow_gpu2.0.0git clone https://gitcode.com/gh_mirrors/te/TensorFlow-Examples克隆后进入tensorflow_v2/notebooks/即可用 Jupyter 逐章运行各示例。多数示例依赖的 MNIST、CIFAR-10、Boston Housing 等数据集均由tensorflow.keras.datasets自动下载无需手工准备。1. 前置知识0_Prerequisiteml_introduction.ipynb机器学习核心概念训练/测试、特征、标签、损失、优化入门mnist_dataset_intro.ipynbMNIST 手写数字数据集的说明。该数据集包含 60,000 张训练图像和 10,000 张测试图像图像为 28×28 像素、像素值范围 0–255在后继示例中统一被转为 float32、归一化到 [0, 1]并按需展平为 784 维向量。2. 入门Tensor 与 Eager 执行1_IntroductionHello WorldTensor 的创建与取值helloworld.ipynb 是最简单的起点演示 TF 2 中张量Tensor的创建与取值import tensorflow as tf # 创建常量张量 hello tf.constant(hello world) print(hello) # 输出: tf.Tensor(hello world, shape(), dtypestring) # 通过 numpy() 取回 Python 值 print(hello.numpy()) # 输出: bhello world关键点在于TF 2 默认开启 Eager 执行张量可直接打印若要取回底层值调用.numpy()。这与 TF 1 的Session.run()模式有本质区别。Tensor 基础运算basic_operations.ipynb 覆盖四类基础操作a tf.constant(2) b tf.constant(3) c tf.constant(5) # 四则运算也支持 Python 运算符 - * / add tf.add(a, b) # 5 sub tf.subtract(a, b) # -1 mul tf.multiply(a, b) # 6 div tf.divide(a, b) # 0.6666666666666666 # 归约运算 tf.reduce_mean([a, b, c]) # 3 tf.reduce_sum([a, b, c]) # 10 # 矩阵乘法 matrix1 tf.constant([[1., 2.], [3., 4.]]) matrix2 tf.constant([[5., 6.], [7., 8.]]) product tf.matmul(matrix1, matrix2) # [[19., 22.], [43., 50.]]示例强调 Tensor 支持 Python 原生运算符重载且可通过.numpy()与 NumPy 无缝互转product.numpy()返回array([[19., 22.], [43., 50.]], dtypefloat32)。这是整个仓库所有后续示例的数据交互基础。3. 基础模型2_BasicModels线性回归底层手写训练循环linear_regression.ipynb 采用 low-level 方式演示线性回归核心超参数为learning_rate0.01、training_steps1000、display_step50。核心实现# 随机初始化权重与偏置 W tf.Variable(rng.randn(), nameweight) b tf.Variable(rng.randn(), namebias) def linear_regression(x): return W * x b def mean_square(y_pred, y_true): return tf.reduce_mean(tf.square(y_pred - y_true)) optimizer tf.optimizers.SGD(learning_rate) def run_optimization(): with tf.GradientTape() as g: # 自动微分上下文 pred linear_regression(X) loss mean_square(pred, Y) gradients g.gradient(loss, [W, b]) optimizer.apply_gradients(zip(gradients, [W, b]))训练循环每 50 步打印一次 loss、W、b。从 notebook 的输出可见 loss 由 step 50 的 0.210631 单调下降至 step 1000 的 0.090231最后用 matplotlib 绘制原始数据点与拟合直线。该示例完整展示了 TF 2 训练的最小闭环GradientTape记录前向计算 → 求梯度 →apply_gradients更新变量。逻辑回归softmax 与交叉熵logistic_regression.ipynb 在 MNIST 上做 10 分类仍是 low-level 风格。参数learning_rate0.01、training_steps1000、batch_size256。模型为Wshape [784, 10]此处用tf.ones初始化与bshape [10]def logistic_regression(x): return tf.nn.softmax(tf.matmul(x, W) b) def cross_entropy(y_pred, y_true): y_true tf.one_hot(y_true, depthnum_classes) # 标签转 one-hot y_pred tf.clip_by_value(y_pred, 1e-9, 1.) # 裁剪避免 log(0) return tf.reduce_mean(-tf.reduce_sum(y_true * tf.math.log(y_pred), 1))训练数据通过tf.data.Dataset.from_tensor_slices(...).repeat().shuffle(5000).batch(batch_size).prefetch(1)构建这是仓库几乎所有示例共用的标准数据管线写法。Word2Vecskip-gram 词嵌入word2vec.ipynb 实现 skip-gram 模型用 Wikipedia 文本切片text8训练。关键超参数如下表参数值含义learning_rate0.1SGD 学习率batch_size128每批样本数num_steps3,000,000总训练步数embedding_size200词向量维度max_vocabulary_size50,000词典最大词数min_occurrence10低于该频次的词替换为 UNKskip_window3上下文窗口左右各 3num_skips2每个中心词采样生成 2 个训练对num_sampled64NCE 负采样个数实现要点数据预处理用collections.Counter统计词频低频词归入UNKid 0next_batch使用双端队列维护滑动窗口生成 (中心词, 上下文词) 样本对因tf.nn.nce_loss等算子与 GPU 不完全兼容示例把 embedding、NCE 权重、NCE 损失全部放在/cpu:0上评估阶段对[five, of, going, hardware, american, britain]计算余弦相似度并输出 top-8 近邻词。从 notebook 输出可见训练到 2,000,000 步后britain的近邻已收敛为china, europe, country, throughout, france, canada, england, western等语义相关词说明嵌入质量随训练显著提升。GBDTBoostedTrees 分类与回归gradient_boosted_trees.ipynb 使用波士顿房价数据集13 个特征同时演示分类与回归两种任务。训练参数max_steps2000、batch_size256、learning_rate1.0、l1_regul0.0、l2_regul0.1GBDT 参数n_batches_per_layer1000、num_trees10、max_depth4。分类任务将房价 ≥ $23,000 置为类别 1否则为 0gbdt_classifier tf.estimator.BoostedTreesClassifier( n_batches_per_layernum_batches_per_layer, feature_columnsfeature_columns, n_classesnum_classes, learning_ratelearning_rate, n_treesnum_trees, max_depthmax_depth, l1_regularizationl1_regul, l2_regularizationl2_regul)回归任务则直接预测房价原值。Notebook 输出显示分类器在测试集上 accuracy0.7843、auc0.8458回归器测试集average_loss30.20。该示例同时展示了三个细节一是os.environ[CUDA_VISIBLE_DEVICES] 显式禁用 GPU当时 TF 的 GBDT 实现不支持 GPU二是输入函数使用tf.compat.v1.estimator.inputs.numpy_input_fn三是 GBDT Estimator 必须配合tf.feature_column.numeric_column特征列使用。4. 神经网络3_NeuralNetworks有监督全连接、卷积与循环网络简单神经网络MLP——neural_network.ipynb 用 KerasModellayers高层 API 构建 2 个隐藏层128、256 神经元的全连接网络参数learning_rate0.1、training_steps2000、batch_size256。模型定义方式为继承Model并实现__init__声明layers.Dense与call前向传播class NeuralNet(Model): def __init__(self): super(NeuralNet, self).__init__() self.fc1 layers.Dense(n_hidden_1, activationtf.nn.relu) self.fc2 layers.Dense(n_hidden_2, activationtf.nn.relu) self.out layers.Dense(num_classes) def call(self, x, is_trainingFalse): x self.fc1(x); x self.fc2(x); x self.out(x) if not is_training: x tf.nn.softmax(x) # 训练时输出 logits评估时加 softmax return x损失用tf.nn.sparse_softmax_cross_entropy_with_logits注意训练时传 logits 而非概率优化器为 SGD最终测试集准确率 0.9207。卷积神经网络CNN——convolutional_network.ipynb 结构为Conv2D(32, kernel5, relu)→MaxPool2D(2, strides2)→Conv2D(64, kernel3, relu)→MaxPool2D→Flatten→Dense(1024)→Dropout(0.5)→Dense(10)。参数learning_rate0.001Adam、training_steps200、batch_size128。Dropout 仅在训练时启用self.dropout(x, trainingis_training)测试集准确率 0.9777明显高于 MLP。仓库另提供 convolutional_network_raw.ipynb用tf.Variable手工实现卷积核与全连接权重的底层版本。循环神经网络RNN/LSTM——同一章节还包含三类序列模型均针对 MNIST把 28×28 图像按行当作 28 步、每步 28 维的序列recurrent_network.ipynb标准 LSTMbidirectional_rnn.ipynb双向 LSTM同时看前向与后向上下文dynamic_rnn.ipynb动态 RNN可处理变长序列。以上示例统一使用layers.LSTM类接口如layers.LSTM(units, return_sequences..., return_state...)配合Model子类化组织。无监督自编码器与 DCGANautoencoder.ipynb自编码器将图像编码到低维表示后再重建dcgan.ipynb深度卷积生成对抗网络从 100 维噪声生成 MNIST 数字图像。关键参数生成器与判别器学习率均为0.0002、training_steps20000、batch_size128、noise_dim100。生成器由Dense(7*7*128)BatchNormalizationConv2DTranspose(64, 5, strides2, paddingSAME)Conv2DTranspose(1, 5, strides2, paddingSAME)组成激活函数使用tf.nn.leaky_relu。示例参考了 Radford 等人 2016 年的 DCGAN 论文与 Batch Normalization 论文中的训练技巧。5. 实用工具4_Utils保存与恢复模型两种路径save_restore_model.ipynb 同时演示低层 Checkpoint 与高层 Model 保存低层方式TF Checkpoint——适合保存变量与优化器状态checkpoint tf.train.Checkpoint(**{W: W, b: b, optimizer: optimizer}) saver tf.train.CheckpointManager(checkpoint, directory./tf-example, max_to_keep5) saver.save() # 输出 ./tf-example/ckpt-1 # 重置 W、b 后恢复 checkpoint tf.train.Checkpoint(**{W: W, b: b, optimizer: optimizer}) checkpoint.restore(tf.train.latest_checkpoint(./tf-example))Notebook 中通过np.mean(W.numpy())验证保存前为 -0.09673191重置后变为 -0.00834随机值restore 后恢复为 -0.09673191证明权重正确还原。高层方式TF Model saver——适合保存 Keras 模型的全部权重neural_net.save_weights(filepath./tfmodel.ckpt) # 重建模型默认初始化后加载 neural_net NeuralNet() neural_net.load_weights(filepath./tfmodel.ckpt)加载前精度仅 0.1016随机初始化加载后恢复至 0.9609。自定义层与模块build_custom_layers.ipynb 讲解如何继承layers.Layer或Model编写自定义层并将其集成进 TF 2 模型中。这是构建可复用、可序列化模型组件的关键能力也是子类化 API 的进阶用法。TensorBoard 可视化tensorboard.ipynb 演示计算图、标量与权重直方图的可视化。关键操作logs_path /tmp/tensorflow_logs/example/ summary_writer tf.summary.create_file_writer(logs_path) # 第一步启用图追踪并导出 if step 1: tf.summary.trace_on(graphTrue, profilerTrue) run_optimization(batch_x, batch_y) with summary_writer.as_default(): tf.summary.trace_export(nametrace, step0, profiler_outdirlogs_path) # 周期性写入标量与权重直方图 with summary_writer.as_default(): tf.summary.scalar(loss, loss, stepstep) tf.summary.scalar(accuracy, acc, stepstep) summarize_weights(step) # 内部对每个权重调用 tf.summary.histogram为让图结构更清晰前向计算使用tf.function并用tf.name_scope划分 HiddenLayer1/HiddenLayer2/LogitsLayer 等作用域。启动命令tensorboard --logdir/tmp/tensorflow_logs随后浏览器访问http://localhost:6006即可查看。注意原 Notebook 中引用的resources/img/tf2/截图目录在当前仓库快照中不存在读者以实际运行 TensorBoard 的结果为准。6. 数据管理5_DataManagement数据加载与解析load_data.ipynb 系统演示用tf.data构建高效数据管线覆盖 NumPy 数组、图像、CSV 文件与自定义数据等多种输入形态是from_tensor_slices、map、shuffle、batch、prefetch等算子的综合演练。TFRecordstfrecords.ipynb 以泰坦尼克号乘客数据集CSV 格式为例演示如何将结构化数据解析为 TFRecord 格式再读回。数据字段如下字段含义survived是否幸存0否1是pclass舱位等级1/2/3 等name乘客姓名sex性别age年龄sibsp船上兄弟姐妹/配偶数parch船上父母/子女数ticket票号fare票价示例展示了tf.io序列化与tf.data.TFRecordDataset反序列化的完整流程为大规模数据落盘与训练输入做好准备。图像增强image_transformation.ipynb 使用 TF 2 对图像施加翻转、裁剪、旋转、亮度/对比度调整等增强手段为训练生成多样化样本是图像分类任务中提升泛化能力的常用技巧。7. 硬件多 GPU 训练6_Hardwaremultigpu_training.ipynb 在 CIFAR-10 数据集60,000 张 32×32 彩色图、10 类上训练一个三层卷积网络使用数据并行策略num_gpus4总batch_size1024*num_gpus并平均分给各 GPU。同步更新流程为每块 GPU 处理一份独立 batch 并计算梯度 → 梯度在 CPU 聚合求平均 → 更新模型权重并同步回各 GPU。网络结构为三组Conv2D(64/128/256, kernel3, paddingSAME, relu) 池化的堆叠配合Dense(2048)。示例提醒若遇到显存不足OOM应降低 batch_size。学习路径与运行建议综合各章节推荐的进阶顺序是先用1_Introduction建立 Tensor/Eager 心智模型 → 用2_BasicModels中的线性/逻辑回归理解GradientTape训练闭环 → 进入3_NeuralNetworks掌握Model子类化与卷积/循环网络 → 用4_Utils学会模型持久化、自定义层与 TensorBoard 调试 → 用5_DataManagement构建生产级数据管线 → 最后用6_Hardware扩展到多卡训练。其中neural_network_raw与convolutional_network_raw两个底层版本与高层 API 版本互为对照非常适合用来理解框架 API 背后的梯度计算与参数更新机制。运行环境方面建议以 Python 3 TensorFlow 2.x当前主流版本执行各 Notebook若复用仓库中pip install tensorflow2.0.0的安装指引则对应 TF 2.0 早期版本个别 API如tf.compat.v1.estimator.inputs.numpy_input_fn在后续版本中已逐步收敛到tf.data体系但示例核心思想与代码结构完全可移植。赞分享示例工程机器学习【免费下载链接】TensorFlow-ExamplesTensorFlow Tutorial and Examples for Beginners (support TF v1 v2)项目地址https://gitcode.com/gh_mirrors/te/TensorFlow-Examples点击查看免费下载相关推荐OpenProject 16.5.0 版本特性深度解析会议工作包联动、高对比度颜色模式与项目更新时间筛选OpenProject 16.5.0 版本特性深度解析会议工作包联动、高对比度颜色模式与项目更新时间筛选 OpenProject 16.5.0 于 2025示例工程机器学习终极TensorFlow-Examples多GPU分布式训练完整指南终极TensorFlow Examples多GPU分布式训练完整指南 TensorFlow Examples是面向初学者的TensorFlow教程和示例项目示例工程机器学习Seelen UI完整指南:5分钟把Windows改造成可定制桌面环境Seelen UI完整指南:5分钟把Windows改造成可定制桌面环境 你每天打开电脑,看到的还是那套用了多年的Windows桌面:任务栏在下、开始菜单在左、窗桌面应用前端插件系统上一篇免费开源的 Windows 系统级音频均衡器:Equalizer APO 从安装到调音一次搞懂下一篇Onekey 完整指南输入 App ID5 步完成 Steam 游戏 DLC 清单下载创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表