ARTICLE DETAIL

资讯详情

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

CS 20SI 2017 课程代码仓库实践指南:stanford-tensorflow-tutorials 模型示例全解析

CS 20SI 2017 课程代码仓库实践指南:stanford-tensorflow-tutorials 模型示例全解析 教程深度学习【免费下载链接】stanford-tensorflow-tutorialsThis repository contains code examples for the Stanfords course: TensorFlow for Deep Learning Research.项目地址https://gitcode.com/gh_mirrors/st/stanford-tensorflow-tutorials点击查看免费下载本篇技术指南围绕 2017/README.md 展开系统梳理斯坦福课程 CS 20SI《TensorFlow for Deep Learning Research》2017 年配套代码仓库stanford-tensorflow-tutorials中2017/目录下的全部模型示例、作业与杂项实验。读者通过本文可以掌握线性回归、逻辑回归、Word2vec、卷积网络、自编码器、DeepDream、字符级语言模型、风格迁移、Seq2Seq 聊天机器人等项目的代码组织方式、关键超参数与运行入口并理解数据读取、TFRecord、TensorBoard、懒加载lazy loading等 TensorFlow 工程实践要点。仓库背景与版本基线该仓库是 CS 20SI《TensorFlow for Deep Learning Research》2017 年课程的官方配套代码见 2017/README.md课程大纲与讲义可查阅课程官网。仓库包含两个时期的代码仓库根目录examples/与assignments/对应较新的课程内容而2017/目录则完整保留了 2017 年的授课代码。README 中有一项重要的版本说明写于 2017 年 7 月 11 日除聊天机器人代码外其余代码均已升级到 TensorFlow 1.2 与 Python 3聊天机器人部分随后也会跟进更新。这意味着阅读和运行本仓库代码时需注意它基于 TensorFlow 1.x 的 API如tf.Session、tf.placeholder、tf.contrib.rnn等与 TensorFlow 2.x 的 Eager 模式存在显著差异。仓库代码按三种形态组织2017/examples/课程配套的可运行模型示例2017/assignments/课程作业风格迁移、Seq2Seq 聊天机器人、练习及其参考答案2017/setup/环境安装说明与依赖清单。环境准备与依赖清单运行2017/目录下的代码需要安装 2017/setup/requirements.txt 中锁定的依赖版本依赖版本用途tensorflow1.2.1深度学习框架1.x APIscipy0.19.1科学计算scikit-learn0.18.2机器学习工具matplotlib2.0.2绘图与结果可视化xlrd1.0.0读取 Excel.xls数据线性回归示例ipdb0.10.1Python 交互式调试Pillow4.2.1图像处理TFRecord 示例、DeepDream 等lxml3.8.0XML/HTML 解析在 TensorFlow 1.x 环境下进入2017/目录后直接python 脚本名.py即可运行各示例。部分脚本如11_char_rnn_gist.py通过sys.path.append(..)引用上级目录的utils.py因此需要在2017/examples/目录下运行以正确解析相对路径。examples 目录七大模型示例逐一拆解README 列出了examples文件夹中包含的模型下面结合源码逐一说明其任务、结构与关键参数。线性回归芝加哥火灾-盗窃数据集03_linear_regression_sol.py 用芝加哥城市的火灾次数预测盗窃次数数据文件为 2017/examples/data/fire_theft.xls。核心流程是标准 TensorFlow 建模八步用xlrd读取.xls数据为特征X与标签Y创建tf.placeholder初始化权重w与偏置b为 0构建模型Y_predicted X * w b以平方误差tf.square(Y - Y_predicted)作为损失源码注释中还预留了utils.huber_loss这一更鲁棒的损失函数选项用tf.train.GradientDescentOptimizer(learning_rate0.001)最小化损失tf.global_variables_initializer()初始化变量训练 50 个 epoch逐样本feed_dict喂入数据并打印每个 epoch 的平均损失。训练结束后用 matplotlib 绘制真实数据点与拟合直线的对比图。脚本还通过tf.summary.FileWriter(./graphs/linear_reg, sess.graph)将计算图写入 TensorBoard这一写法贯穿仓库中几乎所有示例。逻辑回归MNIST 手写数字03_logistic_regression_mnist_starter.py 与 03_logistic_regression_mnist_sol.py 构成一对 starter/solution用于在 MNIST28×28 手写数字上演示逻辑回归分类。starter 版刻意留空关键步骤占位符、权重初始化、softmax 推理、交叉熵损失、优化器供学生对照 solution 版补齐这是课程先填空、后对照的教学模式。Word2vecskip-gram NCE 损失04_word2vec_starter.py 实现了无装饰no-frills版本的 Word2vec skip-gram 模型配套数据预处理在 process_data.py 中。文件顶部定义了完整超参数VOCAB_SIZE 50000 # 词表大小 BATCH_SIZE 128 # 批大小 EMBED_SIZE 128 # 词向量维度 SKIP_WINDOW 1 # 上下文窗口 NUM_SAMPLED 64 # NCE 负样本采样数量 LEARNING_RATE 1.0 NUM_TRAIN_STEPS 20000 SKIP_STEP 2000 # 每隔多少步打印一次平均损失从源码结构看模型的构建步骤依次为定义 center word 占位符 → 初始化vocab_size × embed_size的嵌入矩阵均匀初始化到 [-1, 1]→ 用tf.nn.embedding_lookup查表得到词嵌入 → 用tf.nn.nce_loss权重以truncated_normal、标准差1.0 / (EMBED_SIZE ** 0.5)初始化偏置为 0计算损失 → 优化器最小化。训练循环每SKIP_STEP步输出一次平均损失。仓库中还有 04_word2vec_no_frills.py 与 04_word2vec_visualize.py后者演示用 TensorBoard projector 插件可视化嵌入向量对应 README Misc 中的Embedding visualization with TensorBoard。卷积网络MNIST 双层 CNN07_convnet_mnist.py 在 MNIST 上构建了conv → relu → pool → conv → relu → pool → fully connected → softmax的经典 CNN并同时展示了两种写法手写tf.get_variabletf.nn.conv2d以及用tf.contrib.layers.conv2d/layers.fully_connected的封装写法。关键超参数LEARNING_RATE 0.001 BATCH_SIZE 128 SKIP_STEP 10 DROPOUT 0.75 # 训练时的 dropout 保留概率 N_EPOCHS 1网络结构要点第一层卷积核 5×5、32 个通道输出 28×28×32经 2×2 最大池化后为 14×14×32第二层卷积核 5×5×32×64池化后为 7×7×64展平后接 1024 维全连接层带 dropout最终 softmax 输出 10 类。训练环节引入了global_step变量、tf.train.Saver断点保存/恢复、tf.summary.scalar/histogram汇总以及测试集上以 argmax 对齐计算准确率的评估逻辑是仓库中工程化最完整的示例之一。自编码器自编码器Autoencoder作者 Nishith Khandwala位于 2017/examples/autoencoder/由autoencoder.py、layers.py、layer_utils.py、train.py、utils.py组成训练可视化结果保存在autoencoder/vis/目录下test_1.png 至 test_10.png展示模型对测试样本的重建效果。DeepDreamDeepDream作者 Jon Shlens示例位于 2017/examples/deepdream/包含 deepdream_exercise.py 与 deepdream_solution.py 一对练习/答案文件演示了通过梯度上升放大神经网络中间层激活来生成迷幻图像的经典方法。字符级语言模型11_char_rnn_gist.py 是一个极简的字符级生成式语言模型基于 Danijar Hafner 的代码、由课程作者改编思想源自 Andrej Karpathy 的经典博客训练语料为 2017/examples/data/arvix_abstracts.txt。核心配置HIDDEN_SIZE 200 # GRU 隐藏单元数 BATCH_SIZE 64 NUM_STEPS 50 # 序列长度 SKIP_STEP 40 # 每隔多少步生成一次文本 TEMPRATURE 0.7 # 采样温度源码中拼写为 TEMPRATURE LR 0.003 LEN_GENERATED 300 # 在线生成文本长度实现要点使用tf.contrib.rnn.GRUCelltf.nn.dynamic_rnn通过tf.one_hot将字符序列转为 one-hottf.contrib.layers.fully_connected输出词表大小的 logits损失为相邻时间步的 softmax 交叉熵生成时用tf.multinomial按温度缩放后的分布逐字符采样online_inference函数以seedT为起点滚动生成 300 字符。训练同样支持 checkpoint 恢复并配合utils.make_dir创建checkpoints/arvix目录。assignments 目录两大课程作业风格迁移风格迁移作业位于 2017/assignments/style_transfer/代码由style_transfer.py、vgg_model.py、utils.py组成并提供style_transfer_starter/版本的填空练习。内容与风格素材分别存放在content/如 deadpool.jpg与styles/如 guernica.jpg、starry_night.jpg、pattern.jpg、harlequin.jpg子目录中可用来验证基于 VGG 网络的内容损失与风格损失的组合优化效果。详细的作业要求以课程网站上的 assignment handout 为准。Seq2Seq 聊天机器人聊天机器人作业位于 2017/assignments/chatbot/其 README.md 给出了完整使用流程。这是一个基于序列到序列模型 注意力解码器的完整可用聊天机器人模型思想源自 Cho et al.(2014) 的 Seq2Seq 论文实现参考了 Google Translate 的 TensorFlow 模型。典型对话样例节选自仓库 READMEHUMAN hi BOT hi . what s your name ? HUMAN im chip BOT please . HUMAN i like california a lot BOT of what ? HUMAN whats her name? BOT let s talk about something else .更多对话记录存放在 output_convo.txt。运行步骤为在项目目录创建data文件夹下载并解压 Cornell Movie-Dialogs Corpus 电影对话数据集执行python data.py完成数据预处理对应 data.py执行python chatbot.py --mode [train/chat]train模式默认会恢复已有 checkpoint 并继续训练若需从零训练需先删除checkpoints文件夹中的全部断点chat模式进入与机器人的交互对话。默认情况下与机器人的全部对话会写入processed目录下的output_convo.txt便于收集语料。Misc 杂项TensorFlow 工程实践要点README 的 Misc 部分罗列了若干短小而重要的工程示例数据读取与 TFRecord09_tfrecord_example.py 完整演示了 TFRecord 的写入与读取。写入侧通过_int64_feature/_bytes_feature构造tf.train.Example用tf.python_io.TFRecordWriter序列化标签、形状与图像字节读取侧用tf.train.string_input_producer建立文件名队列、tf.TFRecordReader读取、tf.parse_single_example解析、tf.decode_raw解码并用tf.reshape还原形状配合tf.train.Coordinator与start_queue_runners管理队列线程。仓库中已提供了待处理的样例图片 friday.jpg 与生成好的 friday.tfrecord。Embedding 可视化04_word2vec_visualize.py演示通过 TensorBoard projector 插件可视化词向量见上文 Word2vec 小节。Summary ops 用法07_convnet_mnist.py中的tf.summary.scalar、tf.summary.histogram与merge_all是仓库内的标准示范。特殊算子练习2017/assignments/exercises/ 下的 e01.py 与 e01_sol.py 用于熟悉 TensorFlow 的特殊算子。懒加载的危险性02_lazy_loading.py 与02_feed_dict.py、02_simple_tf.py、02_variables.py一组脚本共同演示 graph 构建、feed_dict 传值与变量赋值等基础语义。例如02_variables.py展示assign/assign_add/assign_sub的调用方式以及每个 Session 各自维护一份变量副本、需分别初始化这一容易踩坑的行为。卷积 GRUCGRU位于 2017/examples/cgru/作者为 Lukasz Kaiser由neural_gpu_v3.py、custom_getter.py、my_layers.py、data_reader.py构成演示了将 GRU 与卷积结合的网络结构。结语2017/目录以 CS 20SI 课程为骨架覆盖了从线性回归到 Seq2Seq 聊天机器人的完整深度学习入门路径每一份示例都遵循构建计算图 → Session 运行 → 可视化/断点管理的 TensorFlow 1.x 范式。对于希望系统学习经典 TensorFlow 编程模式placeholder/feed_dict、变量作用域、队列与 TFRecord、checkpoint 恢复、TensorBoard 可视化的读者这份仓库既是可运行的代码集也是对照课程讲义的绝佳实验手册。注意运行环境需对齐到 TensorFlow 1.2 与 Python 3聊天机器人模块除外后续版本的示例则可在仓库根目录的examples/中查看。赞分享教程深度学习【免费下载链接】stanford-tensorflow-tutorialsThis repository contains code examples for the Stanfords course: TensorFlow for Deep Learning Research.项目地址https://gitcode.com/gh_mirrors/st/stanford-tensorflow-tutorials点击查看免费下载相关推荐斯坦福 CS20 课程 stanford-tensorflow-tutorials 代码示例仓库环境搭建、示例模型与作业项目实战指南斯坦福 CS20 课程 stanford tensorflow tutorials 代码示例仓库环境搭建、示例模型与作业项目实战指南 本篇技术指南以当前仓库根教程深度学习3000戴森球计划蓝图库从新手到大师的工厂设计宝典3000戴森球计划蓝图库从新手到大师的工厂设计宝典 还在为戴森球计划中复杂的工厂布局而烦恼吗面对空荡荡的星球你是否感到无从下手FactoryBlueP游戏开发stanford-tensorflow-tutorials贡献代码Pull Request提交与审核流程stanford tensorflow tutorials贡献代码Pull Request提交与审核流程 你是否在使用stanford tensorflow教程深度学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表