1.PyTorch核心发者教你使用 PyTorch 创建神经网络和深度学习系统的实用指南。 2.详细讲解整个深度学习管道的关键实践,包括 PyTorch张量API、用 Python 加载数据、监控训练以及对结果行可视化。 3. PyTorch核心知识 真实、完整的案例项目,快速提升读者动手能力: a.全面掌握PyTorch 相关的API 的使用方法以及系统掌握深度学习的理论和方法; b.快速从零始构建一个真实示例:肿瘤图像分类器;
售 价:¥
纸质售价:¥59.90购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
版 权
版权声明
内容提要
关于作者与译者
关于封面插图
译者序
前 言
致 谢
关于本书
资源与支持
第1部分 PyTorch核心
第1章 深度学习和PyTorch库简介
1.1 深度学习革命
1.2 PyTorch深度学习
1.3 为什么用PyTorch
深度学习竞争格局
1.4 PyTorch如何支持深度学习概述
1.5 硬件和软件要求
使用Jupyter Notebook
1.6 练习题
1.7 本章小结
第2章 预训练网络
2.1 一个识别图像主体的预训练网络
2.1.1 获取一个预先训练好的网络用于图像识别
2.1.2 AlexNet
2.1.3 ResNet
2.1.4 准备运行
2.1.5 运行模型
2.2 一个足以以假乱真的预训练模型
2.2.1 GAN游戏
2.2.2 CycleGAN
2.2.3 一个把马变成斑马的网络
2.3 一个描述场景的预训练网络
NeuralTalk2
2.4 Torch Hub
2.5 总结
2.6 练习题
2.7 本章小结
第3章 从张量开始
3.1 实际数据转为浮点数
3.2 张量:多维数组
3.2.1 从Python列表到PyTorch张量
3.2.2 构造第1个张量
3.2.3 张量的本质
3.3 索引张量
3.4 命名张量
3.5 张量的元素类型
3.5.1 使用dtype指定数字类型
3.5.2 适合任何场合的dtype
3.5.3 管理张量的dtype属性
3.6 张量的API
3.7 张量的存储视图
3.7.1 索引存储区
3.7.2 修改存储值:就地操作
3.8 张量元数据:大小、偏移量和步长
3.8.1 另一个张量的存储视图
3.8.2 无复制转置
3.8.3 高维转置
3.8.4 连续张量
3.9 将张量存储到GPU
管理张量的设备属性
3.10 NumPy互操作性
3.11 广义张量也是张量
3.12 序列化张量
用h5py序列化到HDF5
3.13 总结
3.14 练习题
3.15 本章小结
第4章 使用张量表征真实数据
4.1 处理图像
4.1.1 添加颜色通道
4.1.2 加载图像文件
4.1.3 改变布局
4.1.4 正规化数据
4.2 三维图像:体数据
加载特定格式
4.3 表示表格数据
4.3.1 使用真实的数据集
4.3.2 加载葡萄酒数据张量
4.3.3 表示分数
4.3.4 独热编码
4.3.5 何时分类
4.3.6 寻找阈值
4.4 处理时间序列
4.4.1 增加时间维度
4.4.2 按时间段调整数据
4.4.3 准备训练
4.5 表示文本
4.5.1 将文本转化为数字
4.5.2 独热编码字符
4.5.3 独热编码整个词
4.5.4 文本嵌入
4.5.5 作为蓝图的文本嵌入
4.6 总结
4.7 练习题
4.8 本章小结
第5章 学习的机制
5.1 永恒的建模经验
5.2 学习就是参数估计
5.2.1 一个热点问题
5.2.2 收集一些数据
5.2.3 可视化数据
5.2.4 选择线性模型首试
5.3 减少损失是我们想要的
从问题回到PyTorch
5.4 沿着梯度下降
5.4.1 减小损失
5.4.2 进行分析
5.4.3 迭代以适应模型
5.4.4 归一化输入
5.4.5 再次可视化数据
5.5 PyTorch自动求导:反向传播的一切
5.5.1 自动计算梯度
5.5.2 优化器
5.5.3 训练、验证和过拟合
5.5.4 自动求导更新及关闭
5.6 总结
5.7 练习题
5.8 本章小结
第6章 使用神经网络拟合数据
6.1 人工神经网络
6.1.1 组成一个多层网络
6.1.2 理解误差函数
6.1.3 我们需要的只是激活函数
6.1.4 更多激活函数
6.1.5 选择最佳激活函数
6.1.6 学习对于神经网络意味着什么
6.2 PyTorch nn模块
6.2.1 使用__call__()而不是forward()
6.2.2 回到线性模型
6.3 最终完成一个神经网络
6.3.1 替换线性模型
6.3.2 检查参数
6.3.3 与线性模型对比
6.4 总结
6.5 练习题
6.6 本章小结
第7章 区分鸟和飞机:从图像学习
7.1 微小图像数据集
7.1.1 下载CIFAR-10
7.1.2 Dataset类
7.1.3 Dataset变换
7.1.4 数据归一化
7.2 区分鸟和飞机
7.2.1 构建数据集
7.2.2 一个全连接模型
7.2.3 分类器的输出
7.2.4 用概率表示输出
7.2.5 分类的损失
7.2.6 训练分类器
7.2.7 全连接网络的局限
7.3 总结
7.4 练习题
7.5 本章小结
第8章 使用卷积进行泛化
8.1 卷积介绍
卷积有什么作用
8.2 卷积实战
8.2.1 填充边界
8.2.2 用卷积检测特征
8.2.3 使用深度和池化技术进一步研究
8.2.4 为我们的网络整合一切
8.3 子类化nn.Module
8.3.1 将我们的网络作为一个nn.Module
8.3.2 PyTorch如何跟踪参数和子模块
8.3.3 函数式API
8.4 训练我们的convnet
8.4.1 测量精度
8.4.2 保存并加载我们的模型
8.4.3 在GPU上训练
8.5 模型设计
8.5.1 增加内存容量:宽度
8.5.2 帮助我们的模型收敛和泛化:正则化
8.5.3 深入学习更复杂的结构:深度
8.5.4 本节设计的比较
8.5.5 已经过时了
8.6 总结
8.7 练习题
8.8 本章小结
第2部分 从现实世界的图像中学习:肺癌的早期检测
第9章 使用PyTorch来检测癌症
9.1 用例简介
9.2 为一个大型项目做准备
9.3 到底什么是CT扫描
9.4 项目:肺癌的端到端检测仪
9.4.1 为什么我们不把数据扔给神经网络直到它起作用呢
9.4.2 什么是结节
9.4.3 我们的数据来源:LUNA大挑战赛
9.4.4 下载LUNA数据集
9.5 总结
9.6 本章小结
第10章 将数据源组合成统一的数据集
10.1 原始CT数据文件
10.2 解析LUNA的标注数据
10.2.1 训练集和验证集
10.2.2 统一标注和候选数据
10.3 加载单个CT扫描
亨氏单位
10.4 使用病人坐标系定位结节
10.4.1 病人坐标系
10.4.2 CT扫描形状和体素大小
10.4.3 毫米和体素地址之间的转换
10.4.4 从CT扫描中取出一个结节
10.5 一个简单的数据集实现
10.5.1 使用getCtRawCandidate()函数缓存候选数组
10.5.2 在LunaDataset.__init__()中构造我们的数据集
10.5.3 分隔训练集和验证集
10.5.4 呈现数据
10.6 总结
10.7 练习题
10.8 本章小结
第11章 训练分类模型以检测可疑肿瘤
11.1 一个基本的模型和训练循环
11.2 应用程序的主入口点
11.3 预训练和初始化
11.3.1 初始化模型和优化器
11.3.2 数据加载器的维护和供给
11.4 我们的首次神经网络设计
11.4.1 核心卷积
11.4.2 完整模型
11.5 训练和验证模型
11.5.1 computeBatchLoss()函数
11.5.2 类似的验证循环
11.6 输出性能指标
logMetrics()函数
11.7 运行训练脚本
11.7.1 训练所需的数据
11.7.2 插曲:enumerateWithEstimate()函数
11.8 评估模型:得到99.7%的正确率是否意味着我们完成了任务
11.9 用TensorBoard绘制训练指标
11.9.1 运行TensorBoard
11.9.2 增加TensorBoard对指标记录函数的支持
11.10 为什么模型不学习检测结节
11.11 总结
11.12 练习题
11.13 本章小结
第12章 通过指标和数据增强来提升训练
12.1 高级改进计划
12.2 好狗与坏狗:假阳性与假阴性
12.3 用图表表示阳性与阴性
12.3.1 召回率是Roxie的强项
12.3.2 精度是Preston的强项
12.3.3 在logMetrics()中实现精度和召回率
12.3.4 我们的终极性能指标:F1分数
12.3.5 我们的模型在新指标下表现如何
12.4 理想的数据集是什么样的
12.4.1 使数据看起来更理想化
12.4.2 使用平衡的LunaDataset与之前的数据集运行情况对比
12.4.3 认识过拟合
12.5 重新审视过拟合的问题
一种过拟合的根据面部预测年龄的模型
12.6 通过数据增强防止过拟合
12.6.1 具体的数据增强技术
12.6.2 看看数据增强带来的改进
12.7 总结
12.8 练习题
12.9 本章小结
第13章 利用分割法寻找可疑结节
13.1 向我们的项目添加第2个模型
13.2 各种类型的分割
13.3 语义分割:逐像素分类
U-Net架构
13.4 更新分割模型
将现成的模型应用到我们的项目中
13.5 更新数据集以进行分割
13.5.1 U-Net有非常具体的对输入大小的要求
13.5.2 U-Net对三维和二维数据的权衡
13.5.3 构建真实、有效的数据集
13.5.4 实现Luna2dSegmentationDataset
13.5.5 构建训练和验证数据
13.5.6 实现TrainingLuna2dSegmentationDataset
13.5.7 在GPU上增强数据
13.6 更新用于分割的训练脚本
13.6.1 初始化分割和增强模型
13.6.2 使用Adam优化器
13.6.3 骰子损失
13.6.4 将图像导入TensorBoard
13.6.5 更新指标日志
13.6.6 保存模型
13.7 结果
13.8 总结
13.9 练习题
13.10 本章小结
第14章 端到端的结节分析及下一步的方向
14.1 接近终点线
14.2 验证集的独立性
14.3 连接CT分割和候选结节分类
14.3.1 分割
14.3.2 将体素分组为候选结节
14.3.3 我们发现结节了吗?分类以减少假阳性
14.4 定量验证
14.5 预测恶性肿瘤
14.5.1 获取恶性肿瘤信息
14.5.2 曲线基线下的区域:按直径分类
14.5.3 重用预先存在的权重:微调
14.5.4 TensorBoard中的输出
14.6 在诊断时所见的内容
训练集、验证集和测试集
14.7 接下来呢?其他灵感和数据的来源
14.7.1 防止过拟合:更好的正则化
14.7.2 精细化训练数据
14.7.3 竞赛结果及研究论文
14.8 总结
幕后
14.9 练习题
14.10 本章小结
第3部分 部署
第15章 部署到生产环境
15.1 PyTorch模型的服务
15.1.1 支持Flask服务的模型
15.1.2 我们想从部署中得到的东西
15.1.3 批处理请求
15.2 导出模型
15.2.1 PyTorch与ONNX的互操作性
15.2.2 PyTorch自己的导出:跟踪
15.2.3 具有跟踪模型的服务器
15.3 与PyTorch JIT编译器交互
15.3.1 超越经典Python/PyTorch的期望是什么
15.3.2 PyTorch作为接口和后端的双重特性
15.3.3 TorchScript
15.3.4 为可追溯的差异编写脚本
15.4 LibTorch:C++中的PyTorch
15.4.1 从C++中运行JITed模型
15.4.2 从C++ API开始
15.5 部署到移动设备
提高效率:模型设计和量化
15.6 新兴技术:PyTorch模型的企业服务
15.7 总结
15.8 练习题
15.9 本章小结
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜