徐巖 劉林 李中遠(yuǎn) 高照 李曉振
摘要:為了解決傳統(tǒng)算法中人工提取特征的缺陷,提出了基于卷積神經(jīng)網(wǎng)絡(luò)的玉米品種識(shí)別算法。以登海518、浚單20和鄭單958 3個(gè)玉米品種為研究對(duì)象,制作數(shù)據(jù)集并進(jìn)行分類標(biāo)簽,分別標(biāo)記為0、1、2。使用Keras學(xué)習(xí)框架搭建網(wǎng)絡(luò)模型,包括1個(gè)輸入層、5個(gè)連續(xù)的卷積池化結(jié)構(gòu)、3個(gè)全連接層和1個(gè)輸出層。卷積層提取有效的特征信息,結(jié)合Leaky ReLU激活函數(shù)傳遞至下一層,輸出層采用Softmax函數(shù)實(shí)現(xiàn)玉米品種的識(shí)別。使用完成訓(xùn)練的模型對(duì)預(yù)測集進(jìn)行預(yù)測。結(jié)果表明:登海518、浚單20、鄭單958的識(shí)別率分別達(dá)到100.00%、93.99%、92.49%,平均識(shí)別率達(dá)到95.49%。
關(guān)鍵詞:玉米;品種識(shí)別;卷積神經(jīng)網(wǎng)絡(luò);Keras學(xué)習(xí)框架
中圖分類號(hào):TP391文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1000-4440(2020)01-0018-06
Abstract:In order to overcome the shortcomings of artificial featur extraction in traditional algorithm, a maize variety recognition algorithm based on convolutional neural network was proposed in this study. Taking maize variety Denghai 518, Jundan 20 and Zhengdan 958 as the research objects, the data sets were created and classified with labels of 0, 1, and 2. Keras learning framework was selected to build the network model, which included one input layer, five continuous convolution pooling structures, three full connection layers and one output layer. The convolution layer extracted effective feature information and transmitted it to the next layer with Leaky ReLU activation function. The output layer used Softmax function to realize the identification of maize varieties. The prediction set was predicted by the completed training model. The prediction results showed that the recognition rates of Denghai 518, Jundan 20 and Zhengdan 958 were 100.00%, 93.99% and 92.49% respectively, with an average recognition rate of 95.49%.
Key words:maize;variety recognition;convolutional neural network;Keras learning framework
中國是世界上主要的玉米生產(chǎn)國和消費(fèi)國,玉米作為中國主要的農(nóng)作物,在食品、飼料、醫(yī)療和工業(yè)原料等行業(yè)中備受關(guān)注[1]。玉米種子的質(zhì)量直接關(guān)系到玉米的產(chǎn)量及品質(zhì),但假種子事件頻發(fā)給農(nóng)業(yè)造成了巨大的損失。隨著科學(xué)技術(shù)的發(fā)展,計(jì)算機(jī)視覺技術(shù)和機(jī)器學(xué)習(xí)技術(shù)已廣泛應(yīng)用于棉花、小麥、玉米、花生等種子的破損識(shí)別以及水稻、棉花、大豆、番茄等種子的品種識(shí)別。在玉米品種識(shí)別中,學(xué)者們主要通過提取玉米種子的多個(gè)有效特征,如形態(tài)特征、顏色特征、紋理特征、胚部特征、光譜特征等,結(jié)合人工神經(jīng)網(wǎng)絡(luò)或支持向量機(jī)實(shí)現(xiàn)玉米品種的有效識(shí)別[2-9]。
傳統(tǒng)的機(jī)器學(xué)習(xí)方法需要人工總結(jié)規(guī)律并設(shè)計(jì)特征量,在圖像預(yù)處理及評(píng)估提取特征的有效性上耗費(fèi)大量時(shí)間,而深度學(xué)習(xí)可以有效解決這一問題。卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)中非常典型且重要的網(wǎng)絡(luò)模型,能夠?qū)崿F(xiàn)局部連接和權(quán)值共享,從而減少大量參數(shù),有效降低計(jì)算難度和減少運(yùn)算時(shí)間[10]。1989年,Yann構(gòu)建了應(yīng)用于圖像分類的卷積神經(jīng)網(wǎng)絡(luò),即LeNet的最初版本,并于1998年構(gòu)建了更加完備的卷積神經(jīng)網(wǎng)絡(luò)模型——LeNet-5。LeNet-5加入了池化層對(duì)輸入特征進(jìn)行篩選,但由于數(shù)據(jù)集規(guī)模及軟硬件基礎(chǔ)設(shè)施的限制,使得在大規(guī)模數(shù)據(jù)集分類任務(wù)中并未取得良好的效果。2006年以來,卷積神經(jīng)網(wǎng)絡(luò)得到迅速發(fā)展,2012年Krizhevsky等提出了一種與LeNet-5類似但具有更深結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)模型——AlexNet,該模型奪得2012 ImageNet大規(guī)模視覺識(shí)別競賽的冠軍[11]。隨著AlexNet的成功構(gòu)建,卷積神經(jīng)網(wǎng)絡(luò)成為研究的熱點(diǎn),學(xué)者們通過對(duì)其進(jìn)行改進(jìn),不斷提出新的卷積神經(jīng)網(wǎng)絡(luò)模型,如:VGG模型、GoogLeNet模型、ResNet模型等[12-14];同時(shí),卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用快速增長,但多用于各領(lǐng)域的識(shí)別分類問題。2016年,魏英姿[15]等將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于玉米種子的完整性識(shí)別,但卷積神經(jīng)網(wǎng)絡(luò)在玉米種子品種識(shí)別中的應(yīng)用還比較少。本研究將使用Keras深度學(xué)習(xí)框架搭建卷積神經(jīng)網(wǎng)絡(luò)模型,對(duì)登海518、浚單20和鄭單958 3個(gè)玉米品種進(jìn)行識(shí)別。
1材料與方法
1.1試驗(yàn)材料
以登海518、浚單20和鄭單958三個(gè)玉米品種為研究對(duì)象,均為華北地區(qū)高產(chǎn)玉米品種。從每個(gè)品種中選取150粒正常種子,共計(jì)450粒。按固定順序與方向?qū)⒎N子擺放于ECOSYS M6530cdn多功能一體機(jī)的玻璃平臺(tái)上,為了使掃描背景為黑色,種子上方覆蓋黑色吸光布。具體參數(shù)設(shè)置如下:分辨率為600 DPI,色彩模式為彩色,圖像格式為png。掃描獲取的試驗(yàn)樣本的數(shù)字化圖像?;赑hotoShop軟件獲取像素為100×100單粒種子數(shù)據(jù)。由于神經(jīng)網(wǎng)絡(luò)模型需要大量的數(shù)據(jù)進(jìn)行訓(xùn)練,以降低模型對(duì)某些屬性的依賴,提高神經(jīng)網(wǎng)絡(luò)模型的泛化能力,本研究主要通過2種方式的翻轉(zhuǎn)處理(鏡像翻轉(zhuǎn)、垂直翻轉(zhuǎn))和不同角度的旋轉(zhuǎn)處理(90°、180°、270°)進(jìn)行數(shù)據(jù)增強(qiáng),經(jīng)過處理的數(shù)據(jù)有效信息會(huì)發(fā)生改變,從而對(duì)試驗(yàn)結(jié)果有所影響。數(shù)據(jù)增強(qiáng)后每個(gè)玉米品種的數(shù)據(jù)量為1 200個(gè),總數(shù)據(jù)量達(dá)到3 600個(gè)。
1.2試驗(yàn)方法
1.2.1卷積神經(jīng)網(wǎng)絡(luò)常見的卷積神經(jīng)網(wǎng)絡(luò)通常由輸入層、卷積層、池化層、全連接層和輸出層構(gòu)成(圖1)。其中,連續(xù)的卷積、池化結(jié)構(gòu)和全連接層構(gòu)成了卷積神經(jīng)網(wǎng)絡(luò)的隱含層[16]。
卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心,通過卷積運(yùn)算提取圖像的不同特征。卷積層由多個(gè)特征圖構(gòu)成,同一特征圖的所有神經(jīng)元共享同一個(gè)卷積核參數(shù),而每一個(gè)神經(jīng)元通過卷積核與上一層特征圖的部分神經(jīng)元連接,用來學(xué)習(xí)局部特征[17]。將卷積核的每個(gè)元素作為一個(gè)權(quán)值參數(shù)與輸入特征圖進(jìn)行卷積運(yùn)算,每項(xiàng)卷積求和并加上偏置作為激活函數(shù)的輸入特征圖,通過激活函數(shù)的非線性映射得到卷積層的輸出特征圖[18]。池化層緊跟在卷積層之后,主要是通過對(duì)輸入的特征圖進(jìn)行壓縮,簡化網(wǎng)絡(luò)計(jì)算的復(fù)雜度,同時(shí)進(jìn)行特征壓縮,提取有效的特征信息。在經(jīng)過多個(gè)連續(xù)的卷積池化結(jié)構(gòu)之后,連接著一個(gè)或多個(gè)全連接層。全連接層中的每個(gè)神經(jīng)元與其前一層的所有神經(jīng)元全部連接,用于獲取卷積池化結(jié)構(gòu)中具有類別區(qū)分性的局部信息。
1.2.2卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)建Keras是一個(gè)高度模塊化的深度學(xué)習(xí)程序庫,由神經(jīng)網(wǎng)絡(luò)模塊、損失函數(shù)模塊、激活函數(shù)模塊等18個(gè)模塊組成,只要將所需模塊自由組合在一起就可以設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)。Keras同時(shí)支持卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò),從CPU切換到GPU加速計(jì)算不需要對(duì)代碼作任何更改。以TensorFlow為后端,使得Keras訓(xùn)練模型的性能相比于TensorFlow基本上沒有任何損耗,只是極大程度地簡化了編程的復(fù)雜度。近年來,Keras在工業(yè)界和學(xué)術(shù)界得到廣泛應(yīng)用,其應(yīng)用率高于除TensorFlow之外的任何深度學(xué)習(xí)框架。
使用Python在Keras中搭建深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)雖然非常簡單,但需要嚴(yán)格遵循模型的生命周期,其生命周期由選擇模型、構(gòu)建網(wǎng)絡(luò)層、編譯、訓(xùn)練和測試5個(gè)步驟組成(圖2)。
Keras的核心數(shù)據(jù)結(jié)構(gòu)是模型,它是一種組織網(wǎng)絡(luò)層的方式。使用Keras搭建網(wǎng)絡(luò)模型的方法有2種:一種是單輸入單輸出,多個(gè)神經(jīng)網(wǎng)絡(luò)層線性堆疊,層與層之間只存在相鄰關(guān)系的序貫?zāi)P停⊿equential);另一種是多輸入多輸出,層與層之間可以任意連接,編譯速度較慢,是模型復(fù)雜度較高的函數(shù)式模型(Model)。序貫?zāi)P涂梢钥醋魇呛瘮?shù)式模型的一種特殊情況。在選用序貫?zāi)P秃?,序貫?zāi)P偷牡谝粚有枰邮芤粋€(gè)關(guān)于輸入數(shù)據(jù)狀態(tài)的參數(shù),后面各層可以自動(dòng)推導(dǎo)出數(shù)據(jù)狀態(tài),因此不需要為每個(gè)層都指定這個(gè)參數(shù)。網(wǎng)絡(luò)層的構(gòu)建只需要使用add函數(shù)加入需要的每一層。本研究搭建的模型由輸入層、5個(gè)連續(xù)的卷積池化結(jié)構(gòu)、平坦層、3個(gè)全連接層和輸出層組成。
模型搭建完成之后需要對(duì)模型進(jìn)行編譯和訓(xùn)練。通過調(diào)用compile方法編譯學(xué)習(xí)過程,編譯需要接收3個(gè)重要參數(shù):優(yōu)化函數(shù)、損失函數(shù)和性能評(píng)估。優(yōu)化函數(shù)用來計(jì)算和更新影響模型訓(xùn)練和輸出的網(wǎng)絡(luò)參數(shù),使其逼近或達(dá)到最優(yōu)值;損失函數(shù)用來度量神經(jīng)網(wǎng)絡(luò)輸出的預(yù)測值與真實(shí)值之間的誤差,通過誤差的反向傳播指導(dǎo)網(wǎng)絡(luò)參數(shù)學(xué)習(xí);性能評(píng)估用于監(jiān)控網(wǎng)絡(luò)訓(xùn)練,對(duì)于分類問題,一般將性能評(píng)估指標(biāo)設(shè)置為accuracy。調(diào)用fit函數(shù)對(duì)模型進(jìn)行訓(xùn)練,模型訓(xùn)練不僅需要輸入數(shù)據(jù)及標(biāo)簽,還需要指定batch_size、epochs及validation_split。batch_size是指進(jìn)行梯度下降時(shí)每一批次數(shù)據(jù)包含的樣本數(shù)量,在訓(xùn)練過程中,1個(gè)batch樣本會(huì)被計(jì)算1次梯度下降,使目標(biāo)函數(shù)優(yōu)化一步;epochs是訓(xùn)練的輪數(shù),每個(gè)epoch是對(duì)整個(gè)輸入數(shù)據(jù)的一次迭代;validation_split用來指定訓(xùn)練集中一定比例的數(shù)據(jù)作為驗(yàn)證集,驗(yàn)證集不參與訓(xùn)練,在每輪迭代結(jié)束后用來測試模型的損失函數(shù)、精確度等指標(biāo)。最后,使用測試數(shù)據(jù)集評(píng)估模型的準(zhǔn)確率,當(dāng)模型準(zhǔn)確率達(dá)到所需要的水平時(shí),使用該模型進(jìn)行預(yù)測。
1.2.3網(wǎng)絡(luò)模型參數(shù)輸入圖像均為100×100像素的3通道圖片,網(wǎng)絡(luò)共25層,具體網(wǎng)絡(luò)結(jié)構(gòu)及其參數(shù)如圖3所示。
式中,a為1到正無窮的一個(gè)固定參數(shù),本研究取a為0.001。Leaky ReLU函數(shù)具有ReLU激活函數(shù)的所有優(yōu)點(diǎn),并且Leaky ReLU函數(shù)在x<0時(shí)有一個(gè)很小的斜率,解決Relu函數(shù)進(jìn)入硬飽和區(qū)導(dǎo)致神經(jīng)元不學(xué)習(xí)的問題[19]。為了抑制SGD震蕩,SGDM是在SGD的基礎(chǔ)上引入一階動(dòng)量,也就是常說的“慣性”,使得下降方向由當(dāng)前時(shí)刻的梯度方向和累積的動(dòng)量方向共同決定。下降初期,梯度方向與動(dòng)量方向一致,可以起到加速的作用;下降中后期,在局部最小值震蕩,累積的動(dòng)量能使權(quán)重更新幅度加大,容易跳過局部最優(yōu)值。SGDM的相關(guān)參數(shù)設(shè)置如下:學(xué)習(xí)速率初始化為0.000 5,動(dòng)量參數(shù)設(shè)置為0.96,并且每次更新后的學(xué)習(xí)率衰減值為學(xué)習(xí)率與迭代次數(shù)的比值。
1.2.4對(duì)比試驗(yàn)在20世紀(jì)80年代,MLP(多層感知器,Multilayer Perceptron)是一種受歡迎的機(jī)器學(xué)習(xí)模型,尤其在圖像識(shí)別、語音識(shí)別等多個(gè)領(lǐng)域[20]。20世紀(jì)90年代,MLP受到來自更簡單的模型(例如支持向量機(jī))強(qiáng)烈競爭。近年來,隨著深度學(xué)習(xí)的發(fā)展,MLP又重新受到業(yè)界的重視。將MLP應(yīng)用于玉米品種識(shí)別,輸入層的輸入數(shù)據(jù)是100×100的數(shù)字圖像,以reshape轉(zhuǎn)換為一維的向量,也就是10 000個(gè)浮點(diǎn)數(shù),作為10 000個(gè)神經(jīng)元的輸入;隱含層共有3層,各層包含的神經(jīng)元數(shù)分別為4 096、4 096、1 000;輸出層含有3個(gè)神經(jīng)元,對(duì)應(yīng)預(yù)測的3個(gè)品種。輸入層和隱含層的激活函數(shù)均選用Leaky ReLU函數(shù),輸出層選用Softmax函數(shù),可以實(shí)現(xiàn)對(duì)預(yù)測數(shù)據(jù)的分類。
2結(jié)果與分析
在進(jìn)行模型訓(xùn)練之前,隨機(jī)選取數(shù)據(jù)集中85%的數(shù)據(jù)作為訓(xùn)練集,剩下的15%的數(shù)據(jù)作為測試集, 訓(xùn)練集共有3 060個(gè)數(shù)據(jù)樣本,測試集共有540個(gè)數(shù)據(jù)樣本。取訓(xùn)練集的20%作為驗(yàn)證集供模型訓(xùn)練使用。當(dāng)模型訓(xùn)練完成后,使用該模型對(duì)測試集進(jìn)行測試,測試結(jié)果如表1所示:
利用MLP和卷積神經(jīng)網(wǎng)絡(luò)模型對(duì)相同數(shù)量的樣本進(jìn)行訓(xùn)練、測試,多層感知器模型的平均識(shí)別率僅為74.26%,卷積神經(jīng)網(wǎng)絡(luò)模型是在多層感知器的基礎(chǔ)上加入連續(xù)的卷積、池化結(jié)構(gòu),將平均識(shí)別率提高到95.49%(表1)。兩個(gè)網(wǎng)絡(luò)對(duì)鄭單958的識(shí)別率都最低,但在表現(xiàn)較好的卷積神經(jīng)網(wǎng)絡(luò)模型中,識(shí)別率達(dá)到92.49%。在對(duì)卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練時(shí),將訓(xùn)練過程中的數(shù)據(jù)保存并上傳至Tensorflow的可視化工具Tensorboard,得到準(zhǔn)確率和損失率的變化曲線(圖4、圖5)。
由圖4可知,訓(xùn)練在前50次迭代時(shí),識(shí)別準(zhǔn)確率上升較快,經(jīng)過80次迭代后達(dá)到一個(gè)穩(wěn)定狀態(tài),識(shí)別準(zhǔn)確率可以達(dá)到100%。由圖5可知,訓(xùn)練過程中前100次迭代使得誤差以較快的速率下降,隨后的600次迭代是一個(gè)平穩(wěn)收斂的過程,當(dāng)?shù)螖?shù)為700次時(shí),總誤差趨近于0。因此,本研究設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)模型能夠完成對(duì)玉米品種的識(shí)別工作。將本研究結(jié)果與前人的研究結(jié)果進(jìn)行對(duì)比(表2),由表2可知,本研究獲得的識(shí)別率最高,且解決了傳統(tǒng)算法中需要人工提取特征的缺陷。
3結(jié)論
玉米品種識(shí)別是機(jī)器視覺技術(shù)在農(nóng)業(yè)領(lǐng)域的一個(gè)重要研究方向。傳統(tǒng)玉米品種識(shí)別方法需要人工提取特征,存在操作復(fù)雜、識(shí)別率低等缺陷。本研究提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的玉米品種識(shí)別方法,該方法能自動(dòng)提取圖像特征,克服了人工提取特征的缺陷,試驗(yàn)結(jié)果表明其平均識(shí)別率高達(dá)95.49%,高于傳統(tǒng)玉米品種識(shí)別算法。說明該方法在玉米品種識(shí)別上準(zhǔn)確可靠,對(duì)今后研究種子識(shí)別具有重要指導(dǎo)性意義。
參考文獻(xiàn):
[1]傅兆翔. 中國糧食消費(fèi)現(xiàn)狀分析及展望[J]. 農(nóng)業(yè)展望,2017,13(5):91-94.
[2]王玉亮,劉賢喜,蘇慶堂,等. 多對(duì)象特征提取和優(yōu)化神經(jīng)網(wǎng)絡(luò)的玉米種子品種識(shí)別[J]. 農(nóng)業(yè)工程學(xué)報(bào), 2010,26(6): 199- 204.
[3]張?jiān)汽?,韓憲忠,王克儉. 基于深度顏色特征的灰度直方圖玉米品種識(shí)別研究[J]. 作物雜志, 2015(1):156-159.
[4]程洪,史智興,馮娟,等. 基于玉米胚部特征參數(shù)優(yōu)化的玉米品種識(shí)別研究[J]. 中國糧油學(xué)報(bào), 2014, 29(6): 22-26.
[5]DENG L M , LUAN T , MA W J . Research on maize varieties recognition system based on image processing[J]. Applied Mechanics and Materials, 2013, 397-400:2335-2339.
[6]寧紀(jì)鋒. 玉米品種的計(jì)算機(jī)視覺識(shí)別研究[D]. 咸陽:西北農(nóng)林科技大學(xué),2002:25-40.
[7]陳建,陳曉,李偉,等. 基于近紅外光譜技術(shù)和人工神經(jīng)網(wǎng)絡(luò)的玉米品種鑒別方法研究[J]. 光譜學(xué)與光譜分析,2008 (8):1806-1809.
[8]楊蜀秦,寧紀(jì)鋒,何東健. BP人工神經(jīng)網(wǎng)絡(luò)識(shí)別玉米品種的研究[J]. 西北農(nóng)林科技大學(xué)學(xué)報(bào)(自然科學(xué)版), 2004,32(S1):162-164.
[9]程洪,史智興,么煒,等. 基于支持向量機(jī)的玉米品種識(shí)別[J]. 農(nóng)業(yè)機(jī)械學(xué)報(bào), 2009, 40(3):180-183.
[10]BENGIO Y. Learning deep architectures for AI[J]. Foundations and Trends Machine Learning, 2009, 2(1):1-127.
[11]KRIZHEVSKY A, SUTSKEVER I, HINTON G. Image net classification with deep convolutional neural networks[C]//PEREIRA F, BUTGES C J C, BOTTOU L, et al. Advances in neural information processing systems 25. Lake Tahoe, Nevada, USA: Curran Associates Inc, 2012:1097-1105.
[12]SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[J]. Computer Science, 2014, 14(9):1409-1556.
[13]SZEGEDY C, LIU W, JIA Y, et al. Going deeper with convolutions[C]//COHEN N, SHARIR O, SHASHUA A. 2015 IEEE conference on computer vision and pattern recognition (CVPR).Boston: IEEE, 2015:1-9.
[14]HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[C]//COHEN N, SHARIR O, SHASHUA A. 2016 IEEE conference on computer vision and pattern recognition (CVPR). Las Vegas: IEEE, 2016:770-778.
[15]魏英姿,譚龍?zhí)?,歐陽海飛,等. 玉米籽粒完整性識(shí)別的深度學(xué)習(xí)方法[J]. 沈陽理工大學(xué)學(xué)報(bào), 2016, 35(4):1-6.
[16]許偉棟,趙忠蓋. 基于卷積神經(jīng)網(wǎng)絡(luò)和支持向量機(jī)算法的馬鈴薯表面缺陷檢測[J].江蘇農(nóng)業(yè)學(xué)報(bào),2018,34(6):1378-1385.
[17]龔丁禧,曹長榮. 基于卷積神經(jīng)網(wǎng)絡(luò)的植物葉片分類[J].計(jì)算機(jī)與現(xiàn)代化,2014(4):12-15.
[18]張善文,謝澤奇,張晴晴. 卷積神經(jīng)網(wǎng)絡(luò)在黃瓜葉部病害識(shí)別中的應(yīng)用[J].江蘇農(nóng)業(yè)學(xué)報(bào),2018,34(1):56-61.
[19]張順,龔怡宏,王進(jìn)軍. 深度卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展及其在計(jì)算機(jī)視覺領(lǐng)域的應(yīng)用[J]. 計(jì)算機(jī)學(xué)報(bào),2019,42(3):453-482.
[20]林大貴. TensorFlowo +Keras 深度學(xué)習(xí)人工智能實(shí)踐應(yīng)用[M]. 北京: 清華大學(xué)出版社, 2018: 67-107.
(責(zé)任編輯:張震林)