版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AI建模师素养手册第20集基础建模技能 使用SAE降维By高焕堂/AI建模师俱乐部会长为什么需要降维呢?活用SAE:堆栈自编码实践范例-1:单层AE+分类器实践范例-2:StackedAE+分类器
***本文摘自北京【电子产品世界】杂志连载专栏
(2021〜2023)电子产品世界电子产品世界够題憩。翫吳也艷系统为例高焕堂(铭传大学、长庚大学教授,台北)1认识协同过滤(CF)推荐系统2使用传统的CF推荐算法***还有更多文章
为什么需要降维呢?为什么需要降维呢?I认识维度灾难为什么需要降维呢?为什么需要降维呢?I认识维度灾难为什么需要降维呢?为什么需要降维呢?|因为ML常常面临维度灾难•维度灾难是指在处理高维(High-dimensional)数据时,会遇到的一系列计算难题。•基于上一节课所介绍的空间对应(Spacemapping)关系,可以知道,训练数据集的特征(Feature)的数量愈多,其对应到计算空间的维度也就愈高。•具有大量特征的数据集,通常在数百或更多的数量级,就被称为高维数据。•维度灾难(维数灾难),又称为:维度的诅咒(Curseofdimensionality)。是指当我们尝试分析高维空间中的数据时,常常会发生的一些奇奇怪怪的现象。•维度灾难这个名词,最早是由理察•贝尔曼(RichardE.Bellman)在考虑优化问题时首次提出来的术语,用来描述当计算空间维度增加时,分析高维空间(如数千维)时,会遇到各种问题场景。
公开6—XA163.com/dy/article/GEDN0IP30514R9P4.html公开网易首页应用*网易首页>网易号>正文鄂维南院士:机器学习解维度灾难/dy/article/GEDN0IP30514R9P4.html-鄂维南教授说:“维数灾难是什么意思?就是随着变量的个数或者维数的增加,计算复杂度是指数增加的。从数学上来讲,它也有一个基本的困难,也就是多项式在高维不是一个有效的工具。-鄂维南教授说:"能解幵这一困局的或许正是深度学习。I以GWAS(基因关联分析)为例-例如,在基因医学领域里,基因排序相关的数据,却常常具有一项特性:特征的数量(即个数)非常多。这每一个特征在AI里都对应到计算空间里的一个维度,于是计算空间成为极高维度的空间。•如今,利用ML的自编码器(Autoencoder)模型的降维功能,在降维后的潜藏空间向量,仍保有原始数据空间的重要特征。•这样即可在低维度的潜藏空间中,进行高速的运算。善用SAE来降维•例如,ML领域的SAE(StackedAutoencoder)模型是最常用的。•它的特色在于深层的隐藏层及其神经元(Itischaracterizedbydeephiddenlayersandneurons.)挑战:高维度计算•Although,thesetypesofmachinelearningalgorithm(ie.,RF)arecompetentinhandlingcomplexcorrelationsandinteractionsamongasmallnumberoffeatures,theydonotscaletolargernumbersofSNPswhichisthecasewhenusingGWASdata(genotypesofalmostonemillionSNPsandthousandsofsamples).•虽然如ML等能处理少数特征(低维空间)之间的复杂关系,但是不易于扩大到GWAS分析中的高数量特征(通常有数千个样本,以及上百万的SNPs特征)。I挑战:高维度计算•ThehighdimensionalitypresentingeneticdatamakesitcomputationallydifficulttoexhaustivelyevaluateallSNPcombinations.•基因资料中的高维度,要计算所有可能的SNP各种组合,使得计算上变得困难。新方法:擅用非监督式深度学习•Usingunsuperviseddeeplearning(DL)algorithmseemsappealingsinceitexhibitsthepotentialtodealwithbigdataandthedetectionofcomplexfeaturesandassociatedinteractions.•使用非监督式深度学习(DL)算法前景诱人,因为它有巨大潜能可以处理巨量数据,以及检测复杂的特征及其组合性的相互作用。新方法:擅用非监督式深度学习•Usingunsuperviseddeeplearning(DL)algorithmseemsappealingsinceitexhibitsthepotentialtodealwithbigdataandthedetectionofcomplexfeaturesandassociatedinteractions.•使用非监督式深度学习算法前景诱人,因为它有巨大潜能可以处理高维度数据,以及检测复杂的特征及其组合性的相互作用。I深度学习的特点•WithregardstothediscoveryofSNP-to-SNPinteractions,deeplearning(DL)hasshownpromise.•关于SNP到SNP交互的发现,深度学习(DL)已显示出光明的前景。GWAS与机器学习以AE(Autoencoder)为例潛藏層以AE(Autoencoder)为例Anautoencoder(AE)isanunsupervisedlearningmethodthatcanbeusedtotrainoutputvaluesYtobesimilartoinputvaluesXusingbackpropagationAE可以透过反向传播技术来训练模型,让其输出Y值,非常接近于输入值X。EncoderDecoder丫GWAS与机器学习AE的第1项功能:降维-AE(自编码器)是一种可以实践编码和译码的神经网络。将原始数据透过Encoder进行压缩(降维);使用Decoder还原成原始数据。
活用活用SAE架构:将多个AE迭加起来活用活用SAE架构:将多个AE迭加起来-多个AE逐层堆栈以产生堆栈式自动编码器(SAE)。每一个AE模型的Encoder都可以实践〈降维>的效果。< -多个AE逐层堆栈以产生堆栈式自动编码器(SAE)。YxX活用SAEI步骤一:先训练AE•先训练一个单层的AE。
StackedAutoencoder活用SAE练第二个AE然后,使用来StackedAutoencoder活用SAE练第二个AE然后,使用来步骤一:先训练AE个单层的AE。个AE的隐藏层来活用活用SAE活用活用SAE-继续循环下去,可以创建任意深度的SAE。I08WH8IOI—HwnpJ58H80T-继续循环下去,可以创建任意深度的SAE。%gj(-ooogQflooo.・..ooool1-继续循环下去,可以创建任意深度的SAE。 。。…bQg8^80T\E3\1\1£1 ^QOOOHeoQOQ
loop出oofI步骤二:迁移学习-把各AE里的Encoder迁移过来,堆栈在一起。StackedAutoencoders .•Encoder1StackedAutoencoderooo活用活用SAE活用活用SAEI步骤三:迭成一个降维模型-形成一个多层次深度〈降维〉模型。步骤四:结合分类器降维后的输出值,成为分类器(即AI分类模型)的输入值。••活用SAE••活用SAEI更多组合形式-也可以结合起来,成为一个深度学习模型。
迁移过来,成为W&B的起始值学习模式之一只修正这部分权重学习模式之二修正权重修正权重修正权重OOOO图片图片:引自Google图片图片图片:引自Google图片Autoencoder3Autoencoder2MultilayerPerceptronOutputInputAutoencoder3Autoencoder2MultilayerPerceptronOutputInputStackedAutoencoderOutputIOutputOutputAutoencoder1SctotiJrraininnphd珀Firstrraininfiphase(OOP——ooo-n3rdHiddenLay«T2ndHiddenl_aycrOuipot1軌HiddenLaytrHQ0OO*・・・9OO0|InputLay<r活用SAE更多组合:SAE+ARMReceivedMay11,2020,acceptedJune7,2020,dateofpublicationJune16,2020,dateofcurrentversionJune29,2020.DigitalObjectIdentifier10.1109/ACCESS.2020.3002923SAERMA:StackedAutoencoderRuleMiningAlgorithmfortheInterpretationofEpistaticInteractionsinGWASforExtremeObesityCASIMIROA.CURBELOMONTANEZPAULFERGUS\CARLCHALMERS\NURULHASHIMAHAHAMEDHASSAINMALIM®2,BASMAABDULAIMMA1,DENISREILLY1,ANDFRANCESCOFALCIANI3FacultyofEngineeringandTechnology.LiveqpoolJohnMooresUniversity.LiverpoolL33AF.U.K.SchoolofComputerSciences,UniversitiSainsMalaysia.GeorgeTown11800.Malaysia3DepartmentofFunctionalandComparativeGenomics,InstituteofIntegrativeBiology.BiosciencesBuilding-UniversityofLiverpool.LiverpoolL697Z1Correspondingauthor:CasimiroA.CurbeloMontanez(contact@)•OurproposedapproachextendsGWASbycombiningdeeplearningstackedautoencoders(SAEs)andassociationrulemining(ARM)toidentifyepistaticinteractionsbetweenSNPs.•我们建议结合SAE和ARM技术来扩充GWAS。活用活用SAEI更多组合:SAE+ARM活用活用SAEI更多组合:SAE+ARM•FollowingtraditionalGWASqualitycontrolandassociationanalysis,themostsignificantSNPsareselectedandusedinthesubsequentanalysistoinvestigateepistasis.•从传统的GWAS质量控制和关联分析中,挑选出最显著的SNPs特征,来进行后续的模型分析,探索出上位显性相互作用。•FollowingtraditionalGWASqualitycontrolandassociationanalysis,themostsignificantSNPsareselectedandusedinthesubsequentanalysistoinvestigateepistasis.•从传统的GWAS质量控制和关联分析中,挑选出最显著的SNPs特征,来进行后续的模型分析,探索出上位显性相互作用。•Therefore,SAEsarecombinedwithassociationruleminingtodescribewhatSNPsandassociatedinteractionscontributetoclassificationresults.•因此,将SAE与ARM相结合,以描述哪些SNPs及其组合性交互作用有助于分类结果。•AssociationrulesareimplementedtorevealbiologicallyrelevantassociationsbetweenSNPs.IfSNPsfrequentlyappeartogether,thereisanunderlyingrelationshipbetweenthem.•ARM用来揭示SNPs之间的生物学的组合关联。如果SNPs经常出现在一起,则它们之间存在潜在的关系。活用SAE更多组合:SAE+MLPExtractingEpistaticInteractionsinType2
DiabetesGenome-WideDataUsingStacked
AutoencoderBasmaAbdulaimma,PaulFergus,CarlChalmers
LiverpoolJohnMooresUniversity,ByromStreet,Liverpool,L33AF,UK•Inthispaper,weconsidertheapplicationofdeeplearningstackedautoencoderstomodelepistaticinteractionsbetweenSNPsandfine-tuneafullyconnectedmulti-layerperceptron(MLP).•本论文里,我们使用SAE来建立SNPs之间的上位性相互作用;并且且优划一个全连接的MLP模型。活用SAEI更多组合:SAE+MLPThisisthefirststudyofitskindtocombinesunsupervisedlearningbuiltonstackedautoencoderswithanMLPclassifierfortheclassificationofT2DsusingGWASdata.-这是首次结合SAE与MLP模型,利用GWAS资料来对T2Ds进行分类。活用活用SAE活用活用SAEI更多组合:SAE+ANN分类器AnalysisofExtremelyObeseIndividualsUsingDeep
LearningStackedAutoencodersandGenome-Wide
GeneticDataCasimiroA.CurbeloMontanez1,PaulFergus1,CarlChalmers1andJadeHind1•InthispaperaDLstackedautoencoder(SAE)isusedtodealwithnonlinearitypresentinSNP-SNPinteractionsandtoinitializeamulti-layerfeedforwardartificialneuralnetwork(ANN)classifier.•本论文使用SAE来处理SNP之间的相互作用;并且且藉之初始化一个ANN分类器。
活用SAEI更多组合:SAE+ANN分类器•Hence,weperformedunsupervisedfeatureextractioninasetof2465SNPsstackingfoursinglelayerAEswith2000-1000-500-50hiddenunits.•由4个AE堆栈起来的SAE,各层分别是2000、1000、500和50个神经元。•透过这个AE来从2465个SNPs中,进行特征提取。•Hence,weperformedunsupervisedfeatureextractioninasetof2465SNPsstackingfoursinglelayerAEswith2000-1000-500-50hiddenunits.InpulLayer OutputLayerFig.2.ProposedSAE.Featuresarecompressedfrom2465to50usingfoursinglelayerAEs.活用SAEI更多组合:SAE+ANN分类器•Fourmulti-layerfeedforwardANN(softmax)weretrainedwiththecompressedhiddenunitsconsideredintheSAE.•基于这SAE所产生的4个隐藏层,来建立一个多层的ANN(使用softmax激活函数)模型。活用活用SAE活用活用SAESAE+ANN分类器的效果•Thisdemonstratesthepotentialofusingourdeeplearningmethodologytoabstractlarge,complexandunstructureddataintolatentrepresentationscapableofcapturingtheepistaticeffectbetweenSNPsinGWAS.•使用DL方法,对大量、复杂和非结构化的数据,抽象为潜藏空间的表示,该潜藏空间的表示形式能够捕获GWAS中SNP之间的上位性效应。活用活用SAESAE+ANN分类器的效果活用活用SAESAE+ANN分类器的效果•Usingdeeplearningstackedautoencoderstoinitializethemulti-layerfeedforwardANNclassifieroutperformedtheresultsobtainedinourpreviousstudyusingthesamedataset.•利用SAE来初始化一个多层的ANN分类器,获得比以往更棒的效果。•However,compressingthefeaturesusingSAEsmakesverydifficulttoidentifywhatinformationfromthe2465SNPscontributedtothecompresshiddenunits,mainlyduetothelackofinterpretationofdeeplearningmodelswhichactasablackbox.•但是,使用SAE压缩功能很难识别2465个SNP中的哪些信息会贡献到隐藏层的神经元,这主要是由于DL像黑盒子一样,人们难以解释其推论逻辑所致。活用活用SAESAE+ANN分类器的效果活用SAESAE+ANN分类器的效果•Thislimitationfosterstheneedtocreaterobustmethodsfortheinterpretationofdeeplearningnetworks.•因此想办法来解释这个DL模型。•WecombinedcommongenetictoolsandtechniquesforQCandassociationanalysiswithdeeplearningtocapturerelevantinformationandtheepistaticinteractionsbetweenSNPs.•因此想办法来解释这个DL模型。我们建议结合其它基因管控的技术或工具,来捕捉上位性相互作用的重要信息。范例实践范例实践-1从简单的AE模型出发范例实践范例实践-1从简单的AE模型出发EncoderDecoderEncoderDecoder范例实践范例实践-1|训练这个AE模型范例实践范例实践-1|训练这个AE模型训练
资料数据关联观点ABCDEFGHIJKLMN2x0x]x2x3368214116859721678227782181279996]110018911882112123613X(輸入值)正規化(X/10)AEH(潜藏空間)T(目標值)設定(T=X)學習23进行正规化23456189101112131415161718192021x0X]x2x30,0.80,90.70,0,X(輸入值)Encoder:正規化(X/10)O學習設定(T=X)2323I设定X=Tx00.6CDX(輸入值)xl0.8x20.29101112131415161718192021227
o.o.0.9
00.80.1Encoder:7o.8o.8
o.0.2x30.1G H I JKAEH(潜藏空間)hO hl h2622o.0.3812
・・・
oooo.0.6正規化
(X/10)Decoder:設定(T=X)tO0.900.80.1L MT(目標值)
tl't20.8 0.20.1 0.60.7 0.20.8 0.20.8 0.20.2 0.70.6 0.10.1 0.80.8 0.20.2 0.3學習21919OOOO.O.O.O.QOO按下〈学习〉,AE展幵训练ABCDEFGHIJKLMNO1X(輸入值)AEH(潜藏空間)Y(預測值)2x0xJx2x3hOh]h2yoy!y2y330.60.80,20.10.801-0.0280.9210,70.80,0.60.8-1.52-0.960.06050.90.70,20.11.0820.1410.6190.80,70,0,20.20.791-0.070.8420,70,70,050.0330.870.70.918-0.9990.27600.11,2540.0770.360.1100213-L0260.23600.11.0080.0940.830.10.6-0.66-0.8860.0490.1020.30.61314Encoder:Decoder:151.0330.6111-0.4461.5820.416-1.412-1.0916028790.14441.6761.0080.7461.097-0.5717-20040.49090.8266-0.531.6590.742-03918-1.139-1.031-03440.024-0.603-0.769-0.67190,4658-0.505-0.28320正規化(X/10)設定(T*21')-學習22
范例实践-1设计一个分类器OO•••设计一个分类器
范例实践-1拿训练好的AE的潜藏空间向量来训练分类器分类器Is131416171819202122231A|BCDE|FGHTJKLMN|0X(輸入值)AEH(潜藏空間)Y(預測值)xOxlx2x3hOhlh2yoyiy2y0.10.801-0.02-1.52-0.960.0600,1,0820,1410.691-0.070.842-0.9050.033项。^0.70.9-1.8-0,990.11.2540.07oT\xl0-2.13-1.026pX2JN00.1L0080.0940.830.30.6-0.66-0.8860.040.6EncoderDecoder:1.0330.6111-0.4461.5820.416-1.412-1.090.28790.14441.6761.0080.7461.097-0.57-0.53L6590.742-0.390,024-0,603-0.769-0.67-2.004-1.1390.4909-1,0310.8266-0.3440.4658-0.505-0.283正規化(X/10)設定(T=X)學習A123456789101112131415161718WhBh19BC成xOr(=AEHxl/-rz0.801-0.0280.921-1.516-0.960.061.0820.1410.6190.791-0.070.8420.9050.0330.876-1.802-0.9990.2761.2540,0770.369-2.134-1.0260.2361.0080.0940.832-0.658-0.8860.049EWoBoI
目標值TG101001011CH(潜藏空間)hOhlJK預測值Z(A類)(R類)(B類)(A類)(A類)(B類)(A類)(B類)(A類)(B類)匯入AEH學習汇入AE的潜藏空间向量
幵始训练分类器ABCDEFGHIJK1X(=AEH)CH(潜藏空間)目標值預測值2xOxlx2hOhlTZ30.801-0.0280.921-1.526-1.9651(A類)14-1.516-0.960.06L583.1710(B類)051.0820.1410.619-1.44-2.241(B類)160.791-0.070.842-1396-1.8641(A類)170.9050.0330.876-1.575-2.1261(A類)18-1.802-0,9990.2761.5213.4930(B類)091.2540.0770.369-1202-2.2991(A類)1102134-L0260.2361.7964.1220(B類)0111.0080.0940.832-1.624-2.2861(A類)112-0.658-0.8860.0491.004L6460(B類)131415Wh-0,6319-1.7635Wo-1.0033816-0.63-0.2968-2,18254匯人AEH學習17-L2241-0.8982Bo-0.1752—18Bh0.090302663完成了!19范例实践-1AE和分类器,两者都训练好了分类器范例实践-1设计一个整合模型-然后,将训练好的AE和分类器的W&B迁移到这个整合模型里。如下图所示:
把和 的&B迁移过来X(輸入值)CH(潜藏空間)預測值AEH)匯入W&B-1.0030.090.266(預測)0.4662.1830.1751.0330788Encoder:0.6110.1440.491-1.031-0.451.6760.827-0.34-0.28fflAE和分类器的W&B迁移过来CH(潜藏空間)預測值ABCD1 X(輸入值)9Encoder:10 1.0330.611-0.4511 0.2880.1441.67612 -20.4910.82713 CH(潜藏空間)預測值ABCD1 X(輸入值)9Encoder:10 1.0330.611-0.4511 0.2880.1441.67612 -20.4910.82713 -1.14-1.031-0.340.466-0.505-0.28X(=AEH)0.090.266測試(預測)Wo-1.003-2.183Bo-0.175匯入W&B准备测试资料CH(潜藏空間)預測值AEH)匯入W&B-L00321830*266測試(預測)Encoder:0.6110J.440.491-1.0311.0330.288-1.140.466-1.220,09-0.451.6760.827-0,34-0.28先降维降维ABCDEFGHIJX(輸入值)X(=AEH)x0xlx2x3xOx]x0J0,801-0.030.9210.10*10,60.8152-0.960.00J1.0820.1410.60.9-1.8-10.276Encoder:1.033Q611-0.45Wh-0.63-1.76Wo0.2880.1441.676-0.63-03-20.4910.827-1.22-0.9Bo-1.14-1*031-0.34Bh0*090.2660.466-0.505-0.28K2345678910-1.0031112131415-2.183-0,175CH(潛藏空間)h0hl16N
預測值Z匯入W&B測試
(預測)然后分类分美ABCDEFGHIJKLMN1X(輸入值)X(=AEH)CH(潛藏空間)預測值2x0xlx2x3xOxlx2hOhlZ0.10.801-0.030.921-L525,1.965140.10.1Q60.8-1.52-0.960.06L5793.17100.1L0820,1410.619-L44122410*9-1.8-10.2761.5213,49207匯入W&BEncoder:8910111213141.0330.288一営0.6110.1440.491-1.031-0.45 1.6760.827-0.34Bh-0.63-0.63-1.220.090.466-0.505-0.28176-0.90.266WoBo-L003 -2,183-0.175測試
(預測)复习刚才的步骤范例实践-1|训练AE范例实践-1训练分类器分类器范例实践范例实践-1设计一个整合模型范例实践范例实践-1设计一个整合模型-然后,将训练好的AE和分类器的W&B迁移到这个整合模
型里。如下图所示:范例实践范例实践-1已经训练好整合模型降维-►-分类OOOO■B■•••接下来,撰写Python程序来实践上述的模型FileEditFormatRunOptionsWindowHelp#vino_A08_00_modelpyijiipo11numpyisnpimportkerasfrcijiikeras.modelsimportSequentialfromkeras.layersimportDensekeia^:.optijiuzeib MGI)鼻 =nprarray([11oo11IX11IX=nprarray([11oo11IX11IXzo
2622271823
co1788261oo26197719081准备.^训练资料I,dtype=np.f1oat32)hl=KuiiaenWB=MoneCwbh=None- Cwbo=Noz-JieContinued 设计设计&训练一个AE模型设计设计&训练一个AE模型丈 _「rintiinad = =-匚- deftrain_ae():〜”Whl7gWB=4=10=3=4Epoch.3000dx=X/ID 、di=dx.Copy() 'en_dh=Dense(H,activation^11inear3name="en_dh",en_d=Dense(0,actIvation='sigmoid',name="en_d")model=Sequentia1()mcidel.add(en^dh)jaodelHald(en_d)pile(loss=keras.losses.MSE}optimizer=keras.optintizers,SGD(11=0.15),metrics=[1accuracy11)将X值转变为0〜1 丿mcidel.fit(dxtdt,将X值转变为0〜1 丿en*B=en_dh.get_wei^hts()amadel=kerdS.Mode1(made1.inputfmodel.get_liyer(index=0).output)hl=omodel.predict(dx) Cont inued continueddeftrain_ae():hl,enWB=4=10=3=4「s-Uno-Epoch■3000dt=dx.copy()A设定T=Xen_dh=Dense(H,activaticm='1inear',najne="en_dh"Tinput_dim=N>en_<i=DenSe(O,activatIon='SI^moid3name="en_d")model=Sequential()model.add(en_dh)model,add(en_d)pile(1oss=keras.losses.MSE,optimizer=keras.optimizers,SGD(li=0.15),metrlCS=[1accuracy1])model.fit(dxfdt,2,Epoch,0)AqviUTR—amiJkIratlira1erKIc/\arnodel=keras.Mode1(made1.inputfmodel.get_layer(indeJhl=ontodel.predict(dx) Continued 建立&训练AE模型AEAE范例实践-1|已经训练好了AI模型建立建立&训练分类器范例实践-1训练分类器分类器 rnntimiPr deftiainclassifier():N=3S=10H=20=1Epoch=30D0 dx=hl TT=rrpiarray(L1,D,1,1,1,U,1,U,1,0],ff^e^npTTToaTJZJ # c_dh=Dense(Hractivation='1inear1,name=ic_d=Dense(0,activation='sigmoid1,model=Sequential()model.add(c_dh)model,add(c_d)^iodel.cojupi1e(loss=keras.losses,MSE3optimizer=kerasroptimizers.SGD(1x=0•】5)貝 metrics=[1accuracyf])activation=iiaiiie="c1ViTitl+ 」1汇入 Hl向量model.fit(dxtdt,2,Epoch,0)c_wbh=c_dh.Jget_weights()c_wbo=c_d.get_weights() continued 提供标签array([提供标签array([1定义
分类器# continued-deftram_classifier():hl,c_wbh,c_wboN=3S=10H=20=1Epoch=30D0ype=np.float52)c_dh=Dense(H,activation='1inear1,name=Hc_dh"Tinput_dim=Nc_d=Dense(0,activation='sigmoid1,iiaiiie=c_d")model=Sequential()model.add(c_dh)model,add(c_d) 、^iodel.cojupi1e(loss=keras.losses,MSE3optimizer=kerasroptimizers.SGD(1‘勺metrics=[1accuracyf])model.fit(dxtdt,2,Epoch,0)c_wbh=c_dh.Jget_weights()c_wbo=c_d.get_weights() continued
# continued-deftram_class1fier():hl,c_wbh,c_wboN=3S=10H=20=1Epoch=30D0dx=hldt=np.array([1,0,1,1,1,0,1,0,1,0],dtype=np.float52)c_dh=Dense(H,activation='1inear1,name=Hc_dh"Tinput_dim=N)c_d=Dense(0,activation='sigmoid1,iiaiiie=c_d")model=Sequential()model.add(c_dh)model,add(c_d)^iodel.cojupi1e(loss=keras.losses,MSE3optimizer=kerasroptimizers.SGD(1x=0115),展开训练metrics=[1accuracyf])展开训练Mcael.fit(dx,dt,2fEpoch,0)c_wbh=c_dh.getc_wbo=c_d.get_weights() rnntinued-…范例实践-1已经训练好了分类器分类器OO•••建立建立&训练整合模型建立建立&训练整合模型# continueddefbulld_and_tesi_aec():enWB,c_wbh,cN=4Hl=3H2=20=1wbo建立整合模型 丿dhl=Dens8(Hl,activation='1inear1,name=''d^^Tinput_dim=N)dh2=Dense(H2,activation='1inear13nam射彳Id=Dense(0,activation=1sigMoid1,name="resulth)model=SequentIa1()modelpadd(dhl)model.add(iYi2)model.addfd)dhl.SA1 1gl-its(unWB)dh2.set_weightsxc_wbh)d,set_weights(c_wbo)TX=np.tx=TXarray(|[/1011Qo119-J7126279-J71oo1729-J?111-0711Continueddtype=np,floa132)汇入Decoder的W&B# continued deIbui1d_and_test_aec():enlVB,c_wbhrc_wboN=4Hl=3 汇入H2= 汇入,nam弟"dhl”,nam弟"dhl”,i.,name=',dh2n)■name="result11)I 分类器的W&Bdhl=Dense(Hl,activation='Iineardh2=Dense(H2,activation='1ineard=Dense(0,activation=*sigmoid1,model=SequentIa1()model.add(dhl)model.add(dh2) 分类器的W&Bdhl・$eighjs[皿叩)dh2.5研一娅]典6就L_wbh)d济etweight$(cwEd)/隹备测试资料11co112627817211-0711rLrLrLrLy(
aTx=TX/10 丿范例实践范例实践-1已经训练好整合模型范例实践范例实践-1已经训练好整合模型降维-►-分类OOOO■B■••• 范例实践-1实际执行上述Python程序# Continued —— —— —— print("\n Testingdata-——\nomode1=keras.Mode1(mode1,input,hl=omodel.prelict(tx) printfH\n Hl \nomodel=kerasMode1(model.input,h2=omodel.predictftx) TOC\o"1-5"\h\zprint(,p\n H2 \nz=model.predict(tx) print("\n Z \n# train_ae()train_classifier()builii_and_test_aec() #End,tx)model.get_layer(index=0).output),hl)model^et_layex(index=1).outpu!),h2),np.round(z,1))TX=np.array([[6,8,2,1],[1丄[9,7,2,1],[1,2,7,9]],dtype=np.float32)tx=TX/10W2BooWRB•••WRBW2BooWRB•••WRBoooo4 范例实践-1I输出结果:--Testin^data—[0,1]0.6D.81[0.104[0.90.7[040.70.9]]降维 [[0.01757288D.86208737-L0648603][-0.5327867[0.4837&85[-D.531201B4H10.778D0340.88695950.96856691,529264]-1.232594]1.755227]] H2 H2分类[2.01100371,4292483]分类-D.726819B-3.8074827]2.13527272.1117566[-0.7628951-丄3563647]] Z [1.0.]]»>
范例实践范例实践-2范例实践范例实践-2复习:StackedAE-多个AE逐层堆栈以产生堆栈式自动编码器(SAE)。-一旦训练了简单AE,使用来自第一个AE的隐藏层来训练第二个AE。通过重复此过程,可以创建任意深度的SAE。-首先设计简单AE,如下图:范例实践范例实践-2设计&训练AE_1设计一个分类器:分类器-SAE训练好了,拿其潜藏空间向量来训练分类器,如下图:范例实践-2I设计一个整合模型oo>W&B\ooo►W&B\\ooooo范例实践-2已经训练好了3个模型-一个是StackedAE(SAE)模型。-一个是分类器。-一个是从SAE和分类器迁移过来的整合模型。•其中,我们准备导出整合模型和分类器,如下图:SAE整合模型汇出■■■■>*.pb分类器汇出■■■■A*.pb范例实践-2汇出给OpenVino来进行推理接下来,接下来,撰写Python程序来实践上述的模型接下来,接下来,撰写Python程序来实践上述的模型FileEditFormatRunOptionsWindowHelp#vino_A08_01_modelpyImportnumpyasnpimportkerasfronikerHS<modelsijiiportfronikeras,1ayersimportfremkerHS.layersijiiportfromkeras<optimizersimportSGDkeras,modelsijiiportMode1fromkerasimp□11backendimport16nSorf1owastfSequentialDense,FlattenCanv2DfromasKdefsigniDid(s):return1/(1+np,exp(-s))array([353>_^u,p,^o-Jfli■-rL■-rL■-rL■-rL11oo11IX07-ro
262027837186oo121291-21-589准备训练资料oR--HInnT-II-□XMN 音报sFileEditFormatRunOptionsWindowHelp#vino_A08_01_modelpyImportnumpyasnpimportkerasfronikerHS<modelsijiiportfronikeras,1ayersimportfremkerHS.layersijiiportfromkeras<optimizersimportSGDkeras,modelsijiiportMode1fromkerasimp□11backendimport16nSorf1owastfSequentialDense,FlattenCanv2DfromasKdeisigmoid(s):return1/(1+np,exp(-s))8,2,1,们7,2,8",X=np.array([[6,[1,[土口,[10,8.2,[1,2,L[0,3,8, r—■wU2,U%9,2,9,1,2,I,5,切adx=X/10h1- 1hl=Ncmt!wbl=Nonewb2=*'IoneSCjmodel=None# continued将X值转变为0〜1 丿建立建立&训练AE1模型建立建立&训练AE1模型 deftrain_ae_l():一1_L 」l=111 1uxi,irimt6836Epoch=5000丿建立&训练AE1模型dt=dxncopy()#hiddenlayer #hiddenlayerdhl=DensetH,activatic>n=1Sigmoid1,najiie='dhl",Input_dijrt=N)dl=Dense]6,activation='si^moid',n&me="dl")model=Sequentia1()modelhadd(dhl)model.&dd(i1)pile(loss=keras,losses,MSE,optImizGr-keras.optijiilzeiS,SGD(11=0.15),metrics=[1accuracy1])modelhfit(dx,dt,3,Epoch,0)wbl=dhl.get_weights()omode1=keras.Mode1(mode1.inpu19jiiodel.^st_layer(index=0).c>utput)hl=omodelHpredict(dx)print(,R\nAE_ltrainedok.\n") continued
# --Continued itftrain_ae_l():dx,hl,wb1N=6S=3H=30=6Epoch=5000dt=dxncopy()it 定义AE_1模型 展幵训练#hiddenlayerdhl=DensetH,activatic>n=1Sigmoid1,najiie='dhl",Input_dijrt=N)dl=Dense]6,activation='si^moid',n&me="dl")model=Sequent定义AE_1模型 展幵训练#hiddenlayermodel.add]d1) modelrcoiaplle(Toss=I:eras,1modelrcoiaplle(Toss=I:eras,1osses.MSE,optImizGr-keras.optijiilzeiS,SGD(11=0.15),metrics=[1accuracy1]) wblmdlil.getweightTC7omode1=keras.Mode1(mode1.inpu19jiiodel.^st_layer(index=hl=omodelHpredict(dx)print(,R\nAE_ltrainedok.\n") continued 建立建立&训练AE1模型建立建立&训练AE1模型deftrain_ae_2():hl,0,optimizei=keras.optimize±2,SGD(1deftrain_ae_2():hl,0,optimizei=keras.optimize±2,SGD(11=0.15),metrics^t'accuracy1])N=3S=8H=20=3Epoch=5000dx=hl dt_=_fix,Copy()dh2=Dense(H,aciivation=*sigmoid',name="dh2"3input32=Dense(如activation='sigmoid'rname="d2")model=Sequentia1()model,add(dh2)model.add(d2)modelxompilet1qs$=keras,losses出$E,model.fit(dxrdt,3,Epoch,0)wb2=dh2.get_wei^htsf)omode1=keras,Mode1(mode1,input,jiiodel.^et_layer(index=0),c<utput)h2=omodelHpredict(dx)print("\nAE_2trainedok.\n") continued --Continueddx,Copy()dlm=N)Epochtrain,global定义2模型Epoch=5000dh2=Dense(H,aciivaiion=*sigmoid'3name="dh2d2=Dense(如activation='sigmoid'rnajne="d2")model=Sequentia1()model,add(dh2)model.add(d2)mou^isconrp11iou5~kc■iosu'cs*optimizei=keras.optimizeismetrics=['accuracy1])model,fit(dxwigiiTsr?omodel=kerasMode1(mode1.input,model.get_layer(indexh2=omodelHpredict(dx)print("\nAE_2trainedok.\n") continued 展开训练建立&训练分类器 建立&训练分类器 建立&训练scmoaei 分类器eftrain_classifier():N=2H3=40=1dx鷺—dtt=np,array([lt0v1,1,l,OvQ,Q]tdtype^np.floatS2)# dh3=Dense(HJ,activation='Iinear',name="dh3",iiLpiit_dim=N)d3=Dense(O,activation='sigmoid'fname=,hsaec_resu11M)sc_mode1=Sequential()sc_mode1.add(dh3)sc_model.add(13)sc_pile(loss=keras,losses.MSE,optimizer=kexas.optimizeis.SGD(1r=0.15),metrics=[1accuracy1])sc_modeLfit(dxx,dtt,1,IODO,0)pirint("\nClass1fiertrained口k,\n")# Savedto*,pb sess=K,get_session()sess.run(tf.local_variables_initializer())frozengraph=Xf.graph_util.ConvGrt_variab16S_to_ConStants(sess,1fnget_default_5raph().as_graph_def(),[1saec_result/BiasAdd*])tf.io.write_^raphffrozen_^iaph,*C:/pb/"r"saec*pb*Pas_text=False) continued 建立建立&训练分类器建立&训练分类器d臼ftrain_class1fier():globalh2,sc_modelN=2H3=4dx鷺=h2dit=np. li;u7i;i「17H,U7U」,dtype=np7troadh3=Dense(HJ,activation='Iinear',name="dh3",iiLpiit_dim=N)d3=Dense(O,activation='sigmoid'fname=,hsaec_resu11M)sc_mode1=Sequential()sc_mode1.add(dh3)sc_model.add(13)sc_pile(loss=keras,losses.MSE,optimizer=keras.Optimizers.SGD(1r=0.15),metrics=[1iccuracy'])sc_modeLfit(dxx,dtt,1,IODO,0)pirint("\nClass1fiertrained口k,\n")# Saved to*,pb sess=K,get_session()sess.run(thlocal_variables_initializerf))frozengraph=tf.graph_util.ConvGrt_variab16S_to_ConStants(sess,tf.get_dyfault_graph(),as_giaph_def()r[1saec_result/BiasAdd*])tf.ionwrite_^raph(frozen_^raph,
*C:/pb/","saec.pb"Pas_text^False) cont inued- - ContInuedarray(F1mode11000raineiConstant展开训练1,0,0.01.dtvDe=nDHfloat32)metrics=[1accuracyactivation^'Iinear',name=prlntContInuedarray(F1mode11000raineiConstant展开训练1,0,0.01.dtvDe=nDHfloat32)metrics=[1accuracyactivation^'Iinear',name=prlnt("\nuTass# Saveddefault_graph(),as_giaph_def()[1saec_result/BiasAdT])write_^raphffrozen_^raph,*C:/pb/",hsaec,pb\as_text=Fal£p) continued=Dense(H5=Dense(O,activation='sigmoid',name="saec_resultmode1=Sequential()mode1.add(dh3)model.add(d3)定义分类器BBSS1on()rocal_variables_initializer())=pile(loss=keras,losses.MSE;,optimizer=keras.OptimizerS.SGD(1r=0train_classifier():h2,sc_model建立建立&训练分类器分类器 Continued Continued 将整合模型汇入*pb檔deftrain_classifier():■z1oba1h2,SC_modelN=2H3=40=1dx鷺—dtt=np.array([1,丄1,1,1,0,0,0],dtype=np,float32)# dh3=Dense(HJ,activation='Iinear',name="dh3",iiLpiit_dim=N)d3=Dense(O,activation='sigmoid'fname=,hsaec_resu11M)sc_mode1=Sequential()sc_mode1.add(dh3)sc_model.add(d3)sc_pile(loss=keras,losses.MSE,optimizer=kexas.optimizeis.SGD(1r=0.15),metrics=[1accuracy1])sc_modeLfit(dxx,dtt,1,IODO,0)print(''\nClassifiPrtrainednk,\n")savedioT.pu——^7 sess=K,get_session()sess.run(tf.local_variables_initializer())frozengraph=tf.graph_util.ConvGrt_variab16S_to_ConStants(sess,1fnget_default_5raph().as_graph_def(),[1saec^result/BiasAdd*])tf.io.write_^raphffrozen_^raph,*C:/pb/"t"saec*pb*PaB_text=False) continued — 分类器汇出*.pb建立建立&训练整合模型建立建立&训练整合模型Jr Lrirt+If已— defsae_model():,—ax—niynz■厂wnz厂onzN=6H4=3Txy<
aQ^-1111Go^flo11
•MirLrLrLrLrLTx0862180,6,L2,2,6,71137811建立整合模型,name="dh?,name="dh?",inputname="saeiesult")dim=W)dh4=Dense(H4,activation=d4=Dense(O,activation='smodel=Sequential()model.ad(1(dh4)model,add(d4)continued /隹备
测试资料 丿 # continued defsae_mo(lel():globaldx,hl,h2,wh2,bh2N=6H4=30=2Txy<0862180,&L2,2,6,711378111111oo111,7],2],8],6],7j,1]],dtype=nprfloat52) ) ,name="dh?■"?,name="dh?■"?input_dim=N)name="saeiesult")d4=Dense(O,activation='smodel=Sequential()model.ad(1(dh4)model.adl(d4) continued # continued defsae_mo(lel():globaldx,hl,h2,wh2,bh2N=6H4=30=2Txy<a08722671137811■■11oo■■0,1,7],8,7,2],6,8,8],2,1,6],3:7],1]].dtyps^np.float32)dh4=Dense(H4,activation=d4=Dense(O,activation='smodel=Sequential()model.ad(1(dh4)model.adl(d4),name=”dh3"name="saeiesult")定义整合模型 丿dim=N)将将AE模型的Encoder的W&B,迁移到整合模型dhd.SEtweiKhtS(wbl)ContInueddhd.SEtweiKhtS(wbl)d4.setweights(wb2)z4=modelpredi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论