PyTorch深度學(xué)習(xí)實(shí)戰(zhàn)
定 價(jià):119.9 元
- 作者:[美]伊萊·史蒂文斯(Eli Stevens),[意]盧卡·安蒂加(Luca Antiga),[德]托馬斯·菲曼(Thomas Viehmann)
- 出版時(shí)間:2022/2/1
- ISBN:9787115577672
- 出 版 社:人民郵電出版社
- 中圖法分類(lèi):TP181
- 頁(yè)碼:417
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
雖然很多深度學(xué)習(xí)工具都使用Python,但PyTorch 庫(kù)是真正具備Python 風(fēng)格的。對(duì)于任何了解NumPy 和scikit-learn 等工具的人來(lái)說(shuō),上手PyTorch 輕而易舉。PyTorch 在不犧牲高級(jí)特性的情況下簡(jiǎn)化了深度學(xué)習(xí),它非常適合構(gòu)建快速模型,并且可以平穩(wěn)地從個(gè)人應(yīng)用擴(kuò)展到企業(yè)級(jí)應(yīng)用。由于像蘋(píng)果、Facebook和摩根大通這樣的公司都使用PyTorch,所以當(dāng)你掌握了PyTorth,就會(huì)擁有更多的職業(yè)選擇。
本書(shū)是教你使用 PyTorch 創(chuàng)建神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)系統(tǒng)的實(shí)用指南。它幫助讀者快速?gòu)牧汩_(kāi)始構(gòu)建一個(gè)真實(shí)示例:腫瘤圖像分類(lèi)器。在此過(guò)程中,它涵蓋了整個(gè)深度學(xué)習(xí)管道的關(guān)鍵實(shí)踐,包括 PyTorch張量 API、用 Python 加載數(shù)據(jù)、監(jiān)控訓(xùn)練以及將結(jié)果進(jìn)行可視化展示。
本書(shū)主要內(nèi)容:
(1)訓(xùn)練深層神經(jīng)網(wǎng)絡(luò);
(2)實(shí)現(xiàn)模塊和損失函數(shù);
(3)使用 PyTorch Hub 預(yù)先訓(xùn)練的模型;
(4)探索在 Jupyter Notebooks 中編寫(xiě)示例代碼。
本書(shū)適用于對(duì)深度學(xué)習(xí)感興趣的 Python 程序員。了解深度學(xué)習(xí)的基礎(chǔ)知識(shí)對(duì)閱讀本書(shū)有一定的幫助,但讀者無(wú)須具有使用 PyTorch 或其他深度學(xué)習(xí)框架的經(jīng)驗(yàn)。
1.PyTorch核心開(kāi)發(fā)者教你使用 PyTorch 創(chuàng)建神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)系統(tǒng)的實(shí)用指南。
2.詳細(xì)講解整個(gè)深度學(xué)習(xí)管道的關(guān)鍵實(shí)踐,包括 PyTorch張量API、用 Python 加載數(shù)據(jù)、監(jiān)控訓(xùn)練以及對(duì)結(jié)果進(jìn)行可視化。
3. PyTorch核心知識(shí)+真實(shí)、完整的案例項(xiàng)目,快速提升讀者動(dòng)手能力:
a.全面掌握PyTorch 相關(guān)的API 的使用方法以及系統(tǒng)掌握深度學(xué)習(xí)的理論和方法;
b.快速?gòu)牧汩_(kāi)始構(gòu)建一個(gè)真實(shí)示例:腫瘤圖像分類(lèi)器;
c.輕松學(xué)會(huì)使用PyTorch 實(shí)現(xiàn)各種神經(jīng)網(wǎng)絡(luò)模型來(lái)解決具體的深度學(xué)習(xí)問(wèn)題;
d.章尾附有“練習(xí)題”,鞏固提升所學(xué)知識(shí);更有配套的代碼文件可下載并動(dòng)手實(shí)現(xiàn)。
4. PyTorch 聯(lián)合創(chuàng)作者Soumith Chintala作序推薦!
5. 書(shū)中所有代碼都是基于Python 3.6及以上的版本編寫(xiě)的,提供源代碼下載。
作者
伊萊·史蒂文斯(Eli Stevens)職業(yè)生涯的大部分時(shí)間都在美國(guó)硅谷的初創(chuàng)公司工作,從軟件工程師(網(wǎng)絡(luò)設(shè)備制造業(yè))到首席技術(shù)官(開(kāi)發(fā)腫瘤放療軟件)。在本書(shū)出版時(shí),他正在汽車(chē)自動(dòng)駕駛行業(yè)從事機(jī)器學(xué)習(xí)相關(guān)工作。
盧卡·安蒂加(Luca Antiga)于21 世紀(jì)初擔(dān)任生物醫(yī)學(xué)工程研究員。2010 年到2020 年間,他是一家人工智能工程公司的聯(lián)合創(chuàng)始人和首席技術(shù)官。他參與了多個(gè)開(kāi)源項(xiàng)目,包括PyTorch 的核心模塊。最近,他作為聯(lián)合創(chuàng)始人創(chuàng)建了一家總部位于美國(guó)的初創(chuàng)公司,專(zhuān)注于數(shù)據(jù)定義軟件的基礎(chǔ)設(shè)施。
托馬斯·菲曼(Thomas Viehmann)是一名德國(guó)慕尼黑的機(jī)器學(xué)習(xí)和PyTorch 的專(zhuān)業(yè)培訓(xùn)師和顧問(wèn),也是PyTorch 核心開(kāi)發(fā)人員。擁有數(shù)學(xué)博士學(xué)位的他不畏懼理論,擅長(zhǎng)將理論應(yīng)用于實(shí)際的計(jì)算挑戰(zhàn)。
譯者
牟大恩,武漢大學(xué)碩士研究生畢業(yè),曾先后在網(wǎng)易杭州研究院、優(yōu)酷土豆集團(tuán)、海通證券總
部負(fù)責(zé)技術(shù)研發(fā)及系統(tǒng)架構(gòu)設(shè)計(jì)工作,目前任職于東方證券資產(chǎn)管理有限公司。他有多年的Java
開(kāi)發(fā)及系統(tǒng)設(shè)計(jì)經(jīng)驗(yàn),專(zhuān)注于互聯(lián)網(wǎng)金融及大數(shù)據(jù)應(yīng)用相關(guān)領(lǐng)域,熱愛(ài)技術(shù),喜歡鉆研前沿技術(shù),
是機(jī)器學(xué)習(xí)及深度學(xué)習(xí)的深度愛(ài)好者。近年來(lái)著有《Kafka 入門(mén)與實(shí)踐》,譯有《Kafka Streams
實(shí)戰(zhàn)》,已提交技術(shù)發(fā)明專(zhuān)利申請(qǐng)兩項(xiàng)。
第 1部分 PyTorch核心
第 1章 深度學(xué)習(xí)和PyTorch庫(kù)簡(jiǎn)介 3
1.1 深度學(xué)習(xí)革命 4
1.2 PyTorch深度學(xué)習(xí) 5
1.3 為什么用PyTorch 6
1.4 PyTorch如何支持深度學(xué)習(xí)概述 8
1.5 硬件和軟件要求 10
1.6 練習(xí)題 12
1.7 本章小結(jié) 13
第 2章 預(yù)訓(xùn)練網(wǎng)絡(luò) 14
2.1 一個(gè)識(shí)別圖像主體的預(yù)訓(xùn)練網(wǎng)絡(luò) 15
2.1.1 獲取一個(gè)預(yù)先訓(xùn)練好的網(wǎng)絡(luò)用于圖像識(shí)別 16
2.1.2 AlexNet 17
2.1.3 ResNet 19
2.1.4 準(zhǔn)備運(yùn)行 19
2.1.5 運(yùn)行模型 21
2.2 一個(gè)足以以假亂真的預(yù)訓(xùn)練模型 23
2.2.1 GAN游戲 24
2.2.2 CycleGAN 25
2.2.3 一個(gè)把馬變成斑馬的網(wǎng)絡(luò) 26
2.3 一個(gè)描述場(chǎng)景的預(yù)訓(xùn)練網(wǎng)絡(luò) 29
2.4 Torch Hub 31
2.5 總結(jié) 32
2.6 練習(xí)題 32
2.7 本章小結(jié) 33
第3章 從張量開(kāi)始 34
3.1 實(shí)際數(shù)據(jù)轉(zhuǎn)為浮點(diǎn)數(shù) 34
3.2 張量:多維數(shù)組 36
3.2.1 從Python列表到PyTorch張量 36
3.2.2 構(gòu)造第 1個(gè)張量 37
3.2.3 張量的本質(zhì) 37
3.3 索引張量 40
3.4 命名張量 40
3.5 張量的元素類(lèi)型 43
3.5.1 使用dtype指定數(shù)字類(lèi)型 43
3.5.2 適合任何場(chǎng)合的dtype 44
3.5.3 管理張量的dtype屬性 44
3.6 張量的API 45
3.7 張量的存儲(chǔ)視圖 46
3.7.1 索引存儲(chǔ)區(qū) 47
3.7.2 修改存儲(chǔ)值:就地操作 48
3.8 張量元數(shù)據(jù):大小、偏移量和步長(zhǎng) 48
3.8.1 另一個(gè)張量的存儲(chǔ)視圖 49
3.8.2 無(wú)復(fù)制轉(zhuǎn)置 51
3.8.3 高維轉(zhuǎn)置 52
3.8.4 連續(xù)張量 53
3.9 將張量存儲(chǔ)到GPU 55
3.10 NumPy互操作性 57
3.11 廣義張量也是張量 57
3.12 序列化張量 58
3.13 總結(jié) 60
3.14 練習(xí)題 60
3.15 本章小結(jié) 60
第4章 使用張量表征真實(shí)數(shù)據(jù) 61
4.1 處理圖像 62
4.1.1 添加顏色通道 62
4.1.2 加載圖像文件 63
4.1.3 改變布局 63
4.1.4 正規(guī)化數(shù)據(jù) 64
4.2 三維圖像:體數(shù)據(jù) 65
4.3 表示表格數(shù)據(jù) 66
4.3.1 使用真實(shí)的數(shù)據(jù)集 67
4.3.2 加載葡萄酒數(shù)據(jù)張量 68
4.3.3 表示分?jǐn)?shù) 70
4.3.4 獨(dú)熱編碼 70
4.3.5 何時(shí)分類(lèi) 72
4.3.6 尋找閾值 73
4.4 處理時(shí)間序列 75
4.4.1 增加時(shí)間維度 76
4.4.2 按時(shí)間段調(diào)整數(shù)據(jù) 77
4.4.3 準(zhǔn)備訓(xùn)練 79
4.5 表示文本 81
4.5.1 將文本轉(zhuǎn)化為數(shù)字 81
4.5.2 獨(dú)熱編碼字符 82
4.5.3 獨(dú)熱編碼整個(gè)詞 83
4.5.4 文本嵌入 85
4.5.5 作為藍(lán)圖的文本嵌入 87
4.6 總結(jié) 88
4.7 練習(xí)題 88
4.8 本章小結(jié) 88
第5章 學(xué)習(xí)的機(jī)制 90
5.1 永恒的建模經(jīng)驗(yàn) 90
5.2 學(xué)習(xí)就是參數(shù)估計(jì) 92
5.2.1 一個(gè)熱點(diǎn)問(wèn)題 93
5.2.2 收集一些數(shù)據(jù) 93
5.2.3 可視化數(shù)據(jù) 94
5.2.4 選擇線性模型首試 94
5.3 減少損失是我們想要的 95
5.4 沿著梯度下降 98
5.4.1 減小損失 99
5.4.2 進(jìn)行分析 99
5.4.3 迭代以適應(yīng)模型 101
5.4.4 歸一化輸入 104
5.4.5 再次可視化數(shù)據(jù) 106
5.5 PyTorch自動(dòng)求導(dǎo):反向傳播的一切 107
5.5.1 自動(dòng)計(jì)算梯度 107
5.5.2 優(yōu)化器 111
5.5.3 訓(xùn)練、驗(yàn)證和過(guò)擬合 115
5.5.4 自動(dòng)求導(dǎo)更新及關(guān)閉 120
5.6 總結(jié) 121
5.7 練習(xí)題 122
5.8 本章小結(jié) 122
第6章 使用神經(jīng)網(wǎng)絡(luò)擬合數(shù)據(jù) 123
6.1 人工神經(jīng)網(wǎng)絡(luò) 124
6.1.1 組成一個(gè)多層網(wǎng)絡(luò) 125
6.1.2 理解誤差函數(shù) 125
6.1.3 我們需要的只是激活函數(shù) 126
6.1.4 更多激活函數(shù) 128
6.1.5 選擇最佳激活函數(shù) 128
6.1.6 學(xué)習(xí)對(duì)于神經(jīng)網(wǎng)絡(luò)意味著什么 129
6.2 PyTorch nn模塊 131
6.2.1 使用__call__()而不是forward() 132
6.2.2 回到線性模型 133
6.3 最終完成一個(gè)神經(jīng)網(wǎng)絡(luò) 137
6.3.1 替換線性模型 137
6.3.2 檢查參數(shù) 138
6.3.3 與線性模型對(duì)比 141
6.4 總結(jié) 142
6.5 練習(xí)題 142
6.6 本章小結(jié) 142
第7章 區(qū)分鳥(niǎo)和飛機(jī):從圖像學(xué)習(xí) 143
7.1 微小圖像數(shù)據(jù)集 143
7.1.1 下載CIFAR-10 144
7.1.2 Dataset類(lèi) 145
7.1.3 Dataset變換 146
7.1.4 數(shù)據(jù)歸一化 149
7.2 區(qū)分鳥(niǎo)和飛機(jī) 150
7.2.1 構(gòu)建數(shù)據(jù)集 151
7.2.2 一個(gè)全連接模型 152
7.2.3 分類(lèi)器的輸出 153
7.2.4 用概率表示輸出 154
7.2.5 分類(lèi)的損失 157
7.2.6 訓(xùn)練分類(lèi)器 159
7.2.7 全連接網(wǎng)絡(luò)的局限 165
7.3 總結(jié) 167
7.4 練習(xí)題 167
7.5 本章小結(jié) 168
第8章 使用卷積進(jìn)行泛化 169
8.1 卷積介紹 169
8.2 卷積實(shí)戰(zhàn) 172
8.2.1 填充邊界 173
8.2.2 用卷積檢測(cè)特征 175
8.2.3 使用深度和池化技術(shù)進(jìn)一步研究 177
8.2.4 為我們的網(wǎng)絡(luò)整合一切 179
8.3 子類(lèi)化nn.Module 181
8.3.1 將我們的網(wǎng)絡(luò)作為一個(gè)nn.Module 182
8.3.2 PyTorch如何跟蹤參數(shù)和子模塊 183
8.3.3 函數(shù)式API 184
8.4 訓(xùn)練我們的convnet 185
8.4.1 測(cè)量精度 187
8.4.2 保存并加載我們的模型 188
8.4.3 在GPU上訓(xùn)練 188
8.5 模型設(shè)計(jì) 190
8.5.1 增加內(nèi)存容量:寬度 191
8.5.2 幫助我們的模型收斂和泛化:正則化 192
8.5.3 深入學(xué)習(xí)更復(fù)雜的結(jié)構(gòu):深度 195
8.5.4 本節(jié)設(shè)計(jì)的比較 200
8.5.5 已經(jīng)過(guò)時(shí)了 201
8.6 總結(jié) 201
8.7 練習(xí)題 201
8.8 本章小結(jié) 202
第 2部分 從現(xiàn)實(shí)世界的圖像中學(xué)習(xí):肺癌的早期檢測(cè)
第9章 使用PyTorch來(lái)檢測(cè)癌癥 205
9.1 用例簡(jiǎn)介 205
9.2 為一個(gè)大型項(xiàng)目做準(zhǔn)備 206
9.3 到底什么是CT掃描 207
9.4 項(xiàng)目:肺癌的端到端檢測(cè)儀 210
9.4.1 為什么我們不把數(shù)據(jù)扔給神經(jīng)網(wǎng)絡(luò)直到它起作用呢 213
9.4.2 什么是結(jié)節(jié) 216
9.4.3 我們的數(shù)據(jù)來(lái)源:LUNA大挑戰(zhàn)賽 217
9.4.4 下載LUNA數(shù)據(jù)集 218
9.5 總結(jié) 219
9.6 本章小結(jié) 219
第 10章 將數(shù)據(jù)源組合成統(tǒng)一的數(shù)據(jù)集 220
10.1 原始CT數(shù)據(jù)文件 222
10.2 解析LUNA的標(biāo)注 數(shù)據(jù) 222
10.2.1 訓(xùn)練集和驗(yàn)證集 224
10.2.2 統(tǒng)一標(biāo)注和候選 數(shù)據(jù) 225
10.3 加載單個(gè)CT掃描 227
10.4 使用病人坐標(biāo)系定位結(jié)節(jié) 230
10.4.1 病人坐標(biāo)系 230
10.4.2 CT掃描形狀和體素大小 232
10.4.3 毫米和體素地址之間的轉(zhuǎn)換 233
10.4.4 從CT掃描中取出一個(gè)結(jié)節(jié) 234
10.5 一個(gè)簡(jiǎn)單的數(shù)據(jù)集實(shí)現(xiàn) 235
10.5.1 使用getCtRawCandidate()函數(shù)緩存候選數(shù)組 238
10.5.2 在LunaDataset.__init__()中構(gòu)造我們的數(shù)據(jù)集 238
10.5.3 分隔訓(xùn)練集和驗(yàn)證集 239
10.5.4 呈現(xiàn)數(shù)據(jù) 240
10.6 總結(jié) 241
10.7 練習(xí)題 241
10.8 本章小結(jié) 242
第 11章 訓(xùn)練分類(lèi)模型以檢測(cè)可疑腫瘤 243
11.1 一個(gè)基本的模型和訓(xùn)練循環(huán) 243
11.2 應(yīng)用程序的主入口點(diǎn) 246
11.3 預(yù)訓(xùn)練和初始化 247
11.3.1 初始化模型和優(yōu)化器 247
11.3.2 數(shù)據(jù)加載器的維護(hù)和供給 249
11.4 我們的首次神經(jīng)網(wǎng)絡(luò)設(shè)計(jì) 251
11.4.1 核心卷積 251
11.4.2 完整模型 254
11.5 訓(xùn)練和驗(yàn)證模型 257
11.5.1 computeBatchLoss()函數(shù) 258
11.5.2 類(lèi)似的驗(yàn)證循環(huán) 260
11.6 輸出性能指標(biāo) 261
11.7 運(yùn)行訓(xùn)練腳本 265
11.7.1 訓(xùn)練所需的數(shù)據(jù) 266
11.7.2 插曲:enumerateWithEstimate()函數(shù) 266
11.8 評(píng)估模型:得到99.7%的正確率是否意味著我們完成了任務(wù) 268
11.9 用TensorBoard繪制訓(xùn)練指標(biāo) 269
11.9.1 運(yùn)行TensorBoard 269
11.9.2 增加TensorBoard對(duì)指標(biāo)記錄函數(shù)的支持 272
11.10 為什么模型不學(xué)習(xí)檢測(cè)結(jié)節(jié) 274
11.11 總結(jié) 275
11.12 練習(xí)題 275
11.13 本章小結(jié) 275
第 12章 通過(guò)指標(biāo)和數(shù)據(jù)增強(qiáng)來(lái)提升訓(xùn)練 277
12.1 高級(jí)改進(jìn)計(jì)劃 278
12.2 好狗與壞狗:假陽(yáng)性與假陰性 279
12.3 用圖表表示陽(yáng)性與陰性 280
12.3.1 召回率是Roxie的強(qiáng)項(xiàng) 282
12.3.2 精度是Preston的強(qiáng)項(xiàng) 283
12.3.3 在logMetrics()中實(shí)現(xiàn)精度和召回率 284
12.3.4 我們的終極性能指標(biāo):F1分?jǐn)?shù) 285
12.3.5 我們的模型在新指標(biāo)下表現(xiàn)如何 289
12.4 理想的數(shù)據(jù)集是什么樣的 290
12.4.1 使數(shù)據(jù)看起來(lái)更理想化 292
12.4.2 使用平衡的LunaDataset與之前的數(shù)據(jù)集運(yùn)行情況對(duì)比 296
12.4.3 認(rèn)識(shí)過(guò)擬合 298
12.5 重新審視過(guò)擬合的問(wèn)題 300
12.6 通過(guò)數(shù)據(jù)增強(qiáng)防止過(guò)擬合 300
12.6.1 具體的數(shù)據(jù)增強(qiáng)技術(shù) 301
12.6.2 看看數(shù)據(jù)增強(qiáng)帶來(lái)的改進(jìn) 306
12.7 總結(jié) 308
12.8 練習(xí)題 308
12.9 本章小結(jié) 309
第 13章 利用分割法尋找可疑結(jié)節(jié) 310
13.1 向我們的項(xiàng)目添加第 2個(gè)模型 310
13.2 各種類(lèi)型的分割 312
13.3 語(yǔ)義分割:逐像素分類(lèi) 313
13.4 更新分割模型 317
13.5 更新數(shù)據(jù)集以進(jìn)行分割 319
13.5.1 U-Net有非常具體的對(duì)輸入大小的要求 320
13.5.2 U-Net對(duì)三維和二維數(shù)據(jù)的權(quán)衡 320
13.5.3 構(gòu)建真實(shí)、有效的數(shù)據(jù)集 321
13.5.4 實(shí)現(xiàn)Luna2dSegmentationDataset 327
13.5.5 構(gòu)建訓(xùn)練和驗(yàn)證數(shù)據(jù) 331
13.5.6 實(shí)現(xiàn)TrainingLuna2dSegmentationDataset 332
13.5.7 在GPU上增強(qiáng)數(shù)據(jù) 333
13.6 更新用于分割的訓(xùn)練腳本 335
13.6.1 初始化分割和增強(qiáng)模型 336
13.6.2 使用Adam優(yōu)化器 336
13.6.3 骰子損失 337
13.6.4 將圖像導(dǎo)入TensorBoard 340
13.6.5 更新指標(biāo)日志 343
13.6.6 保存模型 344
13.7 結(jié)果 345
13.8 總結(jié) 348
13.9 練習(xí)題 348
13.10 本章小結(jié) 349
第 14章 端到端的結(jié)節(jié)分析及下一步的方向 350
14.1 接近終點(diǎn)線 350
14.2 驗(yàn)證集的獨(dú)立性 352
14.3 連接CT分割和候選結(jié)節(jié)分類(lèi) 353
14.3.1 分割 354
14.3.2 將體素分組為候選結(jié)節(jié) 355
14.3.3 我們發(fā)現(xiàn)結(jié)節(jié)了嗎?分類(lèi)以減少假陽(yáng)性 357
14.4 定量驗(yàn)證 360
14.5 預(yù)測(cè)惡性腫瘤 361
14.5.1 獲取惡性腫瘤信息 361
14.5.2 曲線基線下的區(qū)域:按直徑分類(lèi) 362
14.5.3 重用預(yù)先存在的權(quán)重:微調(diào) 365
14.5.4 TensorBoard中的輸出 370
14.6 在診斷時(shí)所見(jiàn)的內(nèi)容 374
14.7 接下來(lái)呢?其他靈感和數(shù)據(jù)的來(lái)源 376
14.7.1 防止過(guò)擬合:更好的正則化 377
14.7.2 精細(xì)化訓(xùn)練數(shù)據(jù) 379
14.7.3 競(jìng)賽結(jié)果及研究論文 380
14.8 總結(jié) 381
14.9 練習(xí)題 382
14.10 本章小結(jié) 383
第3部分 部署
第 15章 部署到生產(chǎn)環(huán)境 387
15.1 PyTorch模型的服務(wù) 388
15.1.1 支持Flask服務(wù)的模型 388
15.1.2 我們想從部署中得到的東西 390
15.1.3 批處理請(qǐng)求 391
15.2 導(dǎo)出模型 395
15.2.1 PyTorch與ONNX的互操作性 396
15.2.2 PyTorch自己的導(dǎo)出:跟蹤 397
15.2.3 具有跟蹤模型的服務(wù)器 398
15.3 與PyTorch JIT編譯器交互 398
15.3.1 超越經(jīng)典Python/PyTorch的期望是什么 399
15.3.2 PyTorch作為接口和后端的雙重特性 400
15.3.3 TorchScript 400
15.3.4 為可追溯的差異編寫(xiě)腳本 404
15.4 LibTorch:C++中的PyTorch 405
15.4.1 從C++中運(yùn)行JITed模型 405
15.4.2 從C++ API開(kāi)始 408
15.5 部署到移動(dòng)設(shè)備 411
15.6 新興技術(shù):PyTorch
模型的企業(yè)服務(wù) 416
15.7 總結(jié) 416
15.8 練習(xí)題 416
15.9 本章小結(jié) 416