AI - 深度学习之美十四章-概念摘要(8~14)
原文鏈接:https://yq.aliyun.com/topic/111
本文是對(duì)原文內(nèi)容中部分概念的摘取記錄,可能有輕微改動(dòng),但不影響原文表達(dá)。
08 - BP算法雙向傳,鏈?zhǔn)角髮?dǎo)最纏綿
反向傳播(Back Propagation,簡(jiǎn)稱(chēng)BP) 算法
在神經(jīng)網(wǎng)絡(luò)(甚至深度學(xué)習(xí))參數(shù)訓(xùn)練中,BP算法占據(jù)舉足輕重的地位。
實(shí)際上BP算法是一個(gè)典型的雙向算法,但通常強(qiáng)調(diào)的是反向傳播。
工作流程分兩大步:
反向傳播演示
反向傳播演示:https://google-developers.appspot.com/machine-learning/crash-course/backprop-scroll/
BP算法的不足
會(huì)存在“梯度擴(kuò)散(Gradient Diffusion)”現(xiàn)象,其根源在于對(duì)于非凸函數(shù),梯度一旦消失,就沒(méi)有指導(dǎo)意義,導(dǎo)致它可能限于局部最優(yōu)。
而且“梯度擴(kuò)散”現(xiàn)象會(huì)隨著網(wǎng)絡(luò)層數(shù)增加而愈發(fā)嚴(yán)重,也就是說(shuō),隨著梯度的逐層消減,導(dǎo)致它對(duì)調(diào)整網(wǎng)絡(luò)權(quán)值的調(diào)整效益,作用越來(lái)越小。
故此BP算法多用于淺層網(wǎng)絡(luò)結(jié)構(gòu)(通常小于等于3),這就限制了BP算法的數(shù)據(jù)表征能力,從而也就限制了BP的性能上限。
09 - 全面連接困何處,卷積網(wǎng)絡(luò)見(jiàn)解深
在本質(zhì)上,BP算法是一種全連接神經(jīng)網(wǎng)絡(luò),雖然有很多成功的應(yīng)用,但只能適用于“淺層”網(wǎng)絡(luò)。
因?yàn)椤澳w淺”,所以也就限制了它的特征表征能力,進(jìn)而也就局限了它的應(yīng)用范圍。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡(jiǎn)稱(chēng)CNN)
當(dāng)前適用在圖像、語(yǔ)音識(shí)別等眾多任務(wù)。
CNN能夠直接從原始圖像出發(fā),經(jīng)過(guò)非常少的預(yù)處理,就能從圖像中找出視覺(jué)規(guī)律,進(jìn)而完成識(shí)別分類(lèi)任務(wù),其實(shí)這就是端到端(end-end)的含義。
避免了對(duì)圖像進(jìn)行復(fù)雜的前期處理(即大量的人工圖像特征提取工作)
當(dāng)前主流的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其精華大致體現(xiàn)在3個(gè)核心操作和3個(gè)概念。
- 3個(gè)核心是指:卷積(Convolution)、池化(Poling)和非線性處理(ReLU)。
- 3個(gè)概念是指:局部感受域(Local receptive filed)、權(quán)值共享(Weight sharing)和亞采樣(Subsampling)。
10 - 卷地風(fēng)來(lái)忽吹散,積得飄零美如畫(huà)
卷積操作的數(shù)學(xué)意義:一個(gè)函數(shù)和另一個(gè)函數(shù)在某個(gè)維度上的加權(quán)“疊加”作用。
通常把函數(shù)f稱(chēng)為輸入函數(shù), g 稱(chēng)為濾波器(filter,也稱(chēng)為特征檢測(cè)器,feature detector)或卷積核(kernel),這兩個(gè)函數(shù)的疊加結(jié)果稱(chēng)為特征圖或特征圖譜(feature map)
特征圖譜也被稱(chēng)呼為做卷積特征(convolved feature)或激活圖(activation map)。
在本質(zhì)上,離散卷積就是一個(gè)線性運(yùn)算,因此離散卷積操作也被稱(chēng)為線性濾波。
常用于圖像處理的卷積核
同一化核(Identity)
卷積后得到的圖像和原圖一樣。
只有中心點(diǎn)的值是1,鄰域點(diǎn)的權(quán)值都是0,所以對(duì)濾波后的取值沒(méi)有任何影響。
邊緣檢測(cè)核(Edge Detection)
也稱(chēng)為高斯-拉普拉斯算子。
矩陣的元素總和為0(即中間元素為8,而周?chē)?個(gè)元素之和為-8),所以濾波后的圖像會(huì)很暗,而只有邊緣位置是有亮度的。
圖像銳化核(Sharpness Filter)
圖像的銳化和邊緣檢測(cè)比較相似。
首先找到邊緣,然后再把邊緣加到原來(lái)的圖像上面,強(qiáng)化了圖像的邊緣,使得圖像看起來(lái)更加銳利。
均值模糊(Box Blur /Averaging)
每個(gè)元素值都是1,它將當(dāng)前像素和它的四鄰域的像素一起取平均,然后再除以9。
均值模糊比較簡(jiǎn)單,但圖像處理得不夠平滑。因此,還可以采用高斯模糊核(Gaussian Blur),這個(gè)核被廣泛用在圖像降噪上。
11 - 局部連接來(lái)減參,權(quán)值共享肩并肩
相比于全連接的前饋網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)要簡(jiǎn)潔,但并不簡(jiǎn)單。
典型卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
在不考慮輸入層的情況下,一個(gè)典型的卷積神經(jīng)網(wǎng)絡(luò)通常由若干個(gè)卷積層、激活層、池化層及全連接層組成。
卷積層(Convolutional Layer)
- 是卷積神經(jīng)網(wǎng)絡(luò)的核心所在。 - 在卷積層,通過(guò)實(shí)現(xiàn)“局部感知”和“權(quán)值共享”等系列的設(shè)計(jì)理念,可達(dá)到兩個(gè)重要的目的:對(duì)高維輸入數(shù)據(jù)實(shí)施降維處理和實(shí)現(xiàn)自動(dòng)提取原始數(shù)據(jù)的核心特征。激活層(Activation Layer)
- 作用是將前一層的線性輸出,通過(guò)非線性激活函數(shù)處理,從而可模擬任意函數(shù),進(jìn)而增強(qiáng)網(wǎng)絡(luò)的表征能力。 - 在深度學(xué)習(xí)領(lǐng)域,ReLU(Rectified-Linear Unit,修正線性單元)是目前使用較多的激活函數(shù),原因是它收斂更快,且不會(huì)產(chǎn)生梯度消失問(wèn)題。池化層(Pooling Layer)
- 也稱(chēng)為亞采樣層(Subsampling Layer)。 - 簡(jiǎn)單來(lái)說(shuō),利用局部相關(guān)性,“采樣”在較少數(shù)據(jù)規(guī)模的同時(shí)保留了有用信息。 - 巧妙的采樣還具備局部線性轉(zhuǎn)換不變性,從而增強(qiáng)卷積神經(jīng)網(wǎng)絡(luò)的泛化處理能力。全連接層(Fully Connected Layer)
相當(dāng)于傳統(tǒng)的多層感知機(jī)(Multi-Layer Perceptron,簡(jiǎn)稱(chēng)MLP)。 通常來(lái)說(shuō),“卷積-激活-池化”是一個(gè)基本的處理?xiàng)?#xff0c;通過(guò)多個(gè)前棧處理之后,待處理的數(shù)據(jù)特性已有了顯著變化: 一方面,輸入數(shù)據(jù)的維度已下降到可用“全連接”網(wǎng)絡(luò)來(lái)處理了;另一方面,此時(shí)全連接層的輸入數(shù)據(jù)已不再是“泥沙俱下、魚(yú)龍混雜”,而是經(jīng)過(guò)反復(fù)提純過(guò)的結(jié)果,因此最后輸出的結(jié)果要可控得高。常見(jiàn)架構(gòu)模式
可以根據(jù)不同的業(yè)務(wù)需求,構(gòu)建出不同拓?fù)浣Y(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)
例如,可以先由m個(gè)卷積層和激活層疊加,然后(可選)進(jìn)行一次池化操作,重復(fù)這個(gè)結(jié)構(gòu)n次,最后疊加k個(gè)全連接層(m, n, k ≥ 1)。
總體來(lái)講,卷積神經(jīng)網(wǎng)絡(luò)通過(guò)多層處理,逐漸將初始的“低層”特征表示,轉(zhuǎn)化為“高層”特征表示,之后再用“簡(jiǎn)單模型”即可完成復(fù)雜的分類(lèi)等學(xué)習(xí)任務(wù)。
因此在本質(zhì)上,深度學(xué)習(xí)就是一個(gè)“特征學(xué)習(xí)(feature learning)”或“表示學(xué)習(xí)(representation learning)”。
卷積層的3個(gè)核心概念
卷積層的三個(gè)核心概念:局部連接、空間位置排列及權(quán)值共享。
局部連接(Local Connectivity)
全連接的前饋神經(jīng)網(wǎng)絡(luò)有個(gè)非常致命的缺點(diǎn),那就是可擴(kuò)展性(Scalability)非常差。 原因非常簡(jiǎn)單,網(wǎng)絡(luò)規(guī)模一大,需要調(diào)參的個(gè)數(shù)以神經(jīng)元數(shù)的平方倍增,導(dǎo)致它難以承受參數(shù)太多之痛。 局部連接(Local Connectivity)在能某種程度上緩解這個(gè)“參數(shù)之痛”。 局部連接也被稱(chēng)為“稀疏連接(Sparse Connectivity)”。對(duì)于卷積神經(jīng)網(wǎng)絡(luò)而言,隱藏層的神經(jīng)元僅僅需要與前一層的部分區(qū)域相連接。 這個(gè)局部連接區(qū)域有個(gè)特別的名稱(chēng)叫“感知域(receptive field)”,其大小等同于卷積核的大小 。 相比于原來(lái)的全連接,連接的數(shù)量自然是稀疏得多,因此,局部連接也被稱(chēng)為“稀疏連接(Sparse Connectivity)”。但需要注意的是,這里的稀疏連接,僅僅是指卷積核的感知域相對(duì)于原始圖像的高度和寬度而言的。 卷積核的深度(depth,在這里卷積核的深度實(shí)際上就是卷積核的個(gè)數(shù)。)則需要與原始數(shù)據(jù)保持一致,不能縮減。空間排列(Spatial arrangement)
在構(gòu)造卷積層時(shí),對(duì)于給定的輸入數(shù)據(jù),如果確定了卷積核的大小,卷積核的深度(個(gè)數(shù))、步幅以及補(bǔ)零個(gè)數(shù),那么卷積層的空間安排就能確定下來(lái)。 也就是說(shuō)固定4個(gè)參數(shù):卷積核的大小、深度、步幅及補(bǔ)零。卷積核的深度(depth)卷積核的深度對(duì)應(yīng)的是卷積核的個(gè)數(shù)。每個(gè)卷積核只能提取輸入數(shù)據(jù)的部分特征。每一個(gè)卷積核與原始輸入數(shù)據(jù)執(zhí)行卷積操作,會(huì)得到一個(gè)卷積特征,這樣的多個(gè)特征匯集在一起,稱(chēng)為特征圖譜。事實(shí)上,每個(gè)卷積核提取的特征都有各自的側(cè)重點(diǎn)。因此,通常說(shuō)來(lái),多個(gè)卷積核的疊加效果要比單個(gè)卷積核的分類(lèi)效果要好得多。步幅(stride)即濾波矩陣在輸入矩陣上滑動(dòng)跨越的單元個(gè)數(shù)。設(shè)步幅大小為S,當(dāng)S為1時(shí),濾波器每次移動(dòng)一個(gè)像素的位置。當(dāng)S為2時(shí),每次移動(dòng)濾波器會(huì)跳過(guò)2個(gè)像素。S越大,卷積得到特征圖就越小。補(bǔ)零(zero-padding)補(bǔ)零操作通常用于邊界處理。在有些場(chǎng)景下,卷積核的大小并不一定剛好就被輸入數(shù)據(jù)矩陣的維度大小整除,就會(huì)出現(xiàn)卷積核不能完全覆蓋邊界元素的情況。這時(shí),就需要在輸入矩陣的邊緣使用零值進(jìn)行填充,使得在輸入矩陣的邊界處的大小剛好和卷積核大小匹配。這樣做的結(jié)果,相當(dāng)于對(duì)輸入圖像矩陣的邊緣進(jìn)行了一次濾波。零填充的好處在于,它可以控制特征圖的大小。使用零填充的卷積叫做泛卷積(wide convolution),不適用零填充的叫做嚴(yán)格卷積(narrow convolution)。權(quán)值共享(Shared Weights)
權(quán)值實(shí)際上就是不同神經(jīng)元之間的連接參數(shù),也稱(chēng)為參數(shù)共享(Parameter Sharing)。 局部連接雖然降低了連接的個(gè)數(shù),但整體幅度并不大,需要調(diào)節(jié)的參數(shù)個(gè)數(shù)依然非常龐大,因此還是無(wú)法滿足高效訓(xùn)練參數(shù)的需求。 而權(quán)值共享能顯著降低參數(shù)的數(shù)量。對(duì)于同一個(gè)卷積核,它在一個(gè)區(qū)域提取到的特征,也能適用于于其他區(qū)域。 基于權(quán)值共享策略,將卷積層神經(jīng)元與輸入數(shù)據(jù)相連,同屬于一個(gè)特征圖譜的神經(jīng)元,將共用一個(gè)權(quán)值參數(shù)矩陣。權(quán)值共享保證了在卷積時(shí)只需要學(xué)習(xí)一個(gè)參數(shù)集合即可,而不是對(duì)每個(gè)位置都再學(xué)習(xí)一個(gè)單獨(dú)的參數(shù)集合。 因此參數(shù)共享也被稱(chēng)為綁定的權(quán)值(tied weights)。小結(jié)
空間位置排列確定了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)參數(shù),而局部連接和權(quán)值共享等策略顯著降低了神經(jīng)元之間的連接數(shù)。
示例:全連接(不包括偏置的權(quán)值連接)的參數(shù)為15個(gè),局部連接為7個(gè),而權(quán)值共享的參數(shù)為3個(gè)(即紅綠藍(lán)線分別共用一個(gè)參數(shù))
12 - 激活引入非線性,池化預(yù)防過(guò)擬合
欠擬合與過(guò)擬合
欠擬合(underfitting)
樣本不夠,或?qū)W習(xí)算法不精,連已有數(shù)據(jù)中的特征都沒(méi)有學(xué)習(xí)好,自然當(dāng)面對(duì)新樣本做預(yù)測(cè)時(shí),效果肯定也好不到哪里去。
欠擬合比較容易克服,比如在神經(jīng)網(wǎng)絡(luò)中增加訓(xùn)練的輪數(shù),從而可以更加“細(xì)膩”地學(xué)習(xí)樣本種的特征。
過(guò)擬合(overfitting)
構(gòu)建的模型一絲不茍地反映已知的所有數(shù)據(jù),但這樣一來(lái),它對(duì)未知數(shù)據(jù)(新樣本)的預(yù)測(cè)能力就會(huì)比較差。
卷積神經(jīng)網(wǎng)絡(luò)如何泛化(即防過(guò)擬合)
采樣(sampling) 采樣的本質(zhì)就是力圖以合理的方式“以偏概全”。 在卷積神經(jīng)網(wǎng)絡(luò)中,采樣是針對(duì)若干個(gè)相鄰的神經(jīng)元而言的,因此也稱(chēng)為“亞采樣(Subsampling)”,也就是“池化(Pooling)”。激活層
激活層存在的最大目的,莫過(guò)于引入非線性因素(選取合適的“激活函數(shù)”),以增加整個(gè)網(wǎng)絡(luò)的表征能力。
Sigmoid激活函數(shù)的缺點(diǎn)
激活函數(shù)修正線性單元(Rectified Linear Unit,簡(jiǎn)稱(chēng)ReLU)
池化層
池化層亦稱(chēng)子采樣層。 通常來(lái)說(shuō),當(dāng)卷積層提取目標(biāo)的某個(gè)特征之后,都要在兩個(gè)相鄰的卷積層之間安排一個(gè)池化層。 池化層函數(shù)實(shí)際上是一個(gè)統(tǒng)計(jì)函數(shù),常見(jiàn)的統(tǒng)計(jì)特性包括最大值、均值、累加和及L2范數(shù)等。 池化層設(shè)計(jì)的目的主要有兩個(gè):降低了下一層待處理的數(shù)據(jù)量、預(yù)防網(wǎng)絡(luò)過(guò)擬合。不同的池化策略在正向傳播和方向傳播中的差異 最大池化函數(shù)(max pooling)- 前向傳播操作:取濾波器最大值作為輸出結(jié)果- 反向傳播操作:濾波器的最大值不變,其余元素置0 平均池化函數(shù)(average pooling)- 前向傳播操作:取濾波器范圍所有元素的平均值作為數(shù)據(jù)結(jié)果- 后向傳播操作:濾波器中所有元素的值,都取平均值對(duì)于處理圖片而言,通過(guò)池化操作后,原始圖像就好像被打上了一層馬賽克。 但計(jì)算機(jī)的“視界”和人類(lèi)完全不同,池化后的圖片,絲毫不會(huì)影響它們對(duì)圖片的特征提取。 理論支撐就是局部線性變換的不變性(invariant):如果輸入數(shù)據(jù)的局部進(jìn)行了線性變換操作(如平移或旋轉(zhuǎn)等),那么經(jīng)過(guò)池化操作后,輸出的結(jié)果并不會(huì)發(fā)生變化。池化綜合了(過(guò)濾核范圍內(nèi)的)全部鄰居的反饋,即通過(guò)k個(gè)像素的統(tǒng)計(jì)特性而不是單個(gè)像素來(lái)提取特征,自然能夠大大提高神經(jīng)網(wǎng)絡(luò)的性能。全連接層(Fully Connected Layer,簡(jiǎn)稱(chēng)FC)
“全連接”意味著,前層網(wǎng)絡(luò)中的所有神經(jīng)元都與下一層的所有神經(jīng)元連接。 全連接層設(shè)計(jì)目的在于,它將前面各個(gè)層學(xué)習(xí)到的“分布式特征表示”,映射到樣本標(biāo)記空間,然后利用損失函數(shù)來(lái)調(diào)控學(xué)習(xí)過(guò)程,最后給出對(duì)象的分類(lèi)預(yù)測(cè)。實(shí)際上,全連接層是就是傳統(tǒng)的多層感知器。 不同于BP全連接網(wǎng)絡(luò)的是,卷積神經(jīng)網(wǎng)絡(luò)在輸出層使用的激活函數(shù)不同,比如說(shuō)它可能會(huì)使用Softmax函數(shù)。全連接層的參數(shù)冗余,導(dǎo)致該層的參數(shù)個(gè)數(shù)占據(jù)整個(gè)網(wǎng)絡(luò)參數(shù)的絕大部分。 由于全連接層因?yàn)閰?shù)個(gè)數(shù)太多,容易出現(xiàn)過(guò)擬合的現(xiàn)象,可采取Dropout措施來(lái)弱化過(guò)擬合。小結(jié)
卷積神經(jīng)網(wǎng)絡(luò)的所有核心層
- 卷積層:從數(shù)據(jù)中提取有用的特征
- 激活層:為網(wǎng)絡(luò)中引入非線性,增強(qiáng)網(wǎng)絡(luò)表征能力
- 池化層:通過(guò)采樣減少特征維度,并保持這些特征具有某種程度上的尺度變化不變性
- 全連接層:實(shí)施對(duì)象的分類(lèi)預(yù)測(cè)
13 - 循環(huán)遞歸RNN,序列建模套路深
馬爾科夫鏈思維
所謂馬爾科夫鏈,通俗來(lái)講,就是未來(lái)的一切,僅與當(dāng)前有關(guān),而與歷史無(wú)關(guān)。
人類(lèi)不具備馬爾科夫鏈思維。
也就是說(shuō),人類(lèi)不可避免地要受到歷史的影響,人們善于追求前后一致,首尾協(xié)調(diào),邏輯一貫。
換句話說(shuō),人類(lèi)的行為通常是歷史的產(chǎn)物、習(xí)慣的奴隸。
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的輸出結(jié)果不僅和當(dāng)前的輸入相關(guān),還和過(guò)往的輸出相關(guān),就是能將以往的信息連接到當(dāng)前任務(wù)之中。
由于利用了歷史信息,當(dāng)任務(wù)涉及到與時(shí)序或與上下文相關(guān)時(shí)(如語(yǔ)音識(shí)別、自然語(yǔ)言處理等),RNN就要比其他人工神經(jīng)網(wǎng)絡(luò)(如CNN)的性能要好得多。
RNN最先應(yīng)用在自然語(yǔ)言處理領(lǐng)域,后來(lái)應(yīng)用在“機(jī)器翻譯”、“語(yǔ)音識(shí)別(如谷歌的語(yǔ)音搜索,蘋(píng)果的Siri應(yīng)用等)”、“個(gè)性化推薦”等眾多領(lǐng)域。
RNN利用環(huán)路(即當(dāng)前隱藏層的上次輸出)來(lái)當(dāng)做本層的部分輸入。
循環(huán)神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)表現(xiàn)形式有循環(huán)結(jié)構(gòu),從而使得過(guò)去輸出的信息作為記憶而被保留下來(lái),并可應(yīng)用于當(dāng)前輸出的計(jì)算中。
也就是說(shuō),RNN的同一隱層之間的節(jié)點(diǎn)是有連接的。
RNN中的“深度”,不同于傳統(tǒng)的深度神經(jīng)網(wǎng)絡(luò),它主要是指時(shí)間和空間(如網(wǎng)絡(luò)中的隱層個(gè)數(shù))特性上的深度。
RNN通過(guò)使用帶有自反饋的神經(jīng)元,能夠處理理論上任意長(zhǎng)度的(存在時(shí)間關(guān)聯(lián)性的)序列數(shù)據(jù)。
相比于傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò),它更符合生物神經(jīng)元的連接方式。
也就是說(shuō),如果以模仿大腦來(lái)作為終極目標(biāo)的話,它更有前途。
訓(xùn)練RNN的算法叫做時(shí)間反向傳播(BackPropagation Through Time,簡(jiǎn)稱(chēng)BPTT)。
和傳統(tǒng)的反向傳播算法BP有類(lèi)似之處,核心任務(wù)都是利用反向傳播調(diào)參,從而使得損失函數(shù)最小化。
14 - LSTM長(zhǎng)短記,長(zhǎng)序依賴可追憶
長(zhǎng)短期記憶(Long Short-Term Memory,簡(jiǎn)稱(chēng)LSTM)
傳統(tǒng)RNN多采用反向傳播時(shí)間(BPTT)算法的弊端在于,隨著時(shí)間的流逝,網(wǎng)絡(luò)層數(shù)的增多,會(huì)產(chǎn)生梯度消失或梯度爆炸等問(wèn)題。
“梯度消失”:如果梯度較小的話(<1),多層迭代以后,指數(shù)相乘,梯度很快就會(huì)下降到對(duì)調(diào)參幾乎就沒(méi)有影響了。
“梯度爆炸”:如果梯度較大的話(>1),多層迭代以后,又導(dǎo)致了梯度大的不得了。
LSTM的核心本質(zhì)在于,通過(guò)引入巧妙的可控自循環(huán),以產(chǎn)生讓梯度能夠得以長(zhǎng)時(shí)間可持續(xù)流動(dòng)的路徑 。
具體說(shuō)來(lái),就是通過(guò)改造神經(jīng)元,添加了遺忘門(mén)、輸入門(mén)和輸出門(mén)等結(jié)構(gòu),讓梯度能夠長(zhǎng)時(shí)間的在路徑上流動(dòng),從而有效提升深度RNN的性能。
LSTM的參數(shù)訓(xùn)練算法,依然是熟悉的反向傳播算法。
轉(zhuǎn)載于:https://www.cnblogs.com/anliven/p/6285378.html
總結(jié)
以上是生活随笔為你收集整理的AI - 深度学习之美十四章-概念摘要(8~14)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python写入txt文件正常,但是写入
- 下一篇: 网易数据基础平台建设经验谈