BP算法的具體實(shí)現(xiàn)_第1頁(yè)
BP算法的具體實(shí)現(xiàn)_第2頁(yè)
BP算法的具體實(shí)現(xiàn)_第3頁(yè)
BP算法的具體實(shí)現(xiàn)_第4頁(yè)
BP算法的具體實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

BP算法的具體實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康暮投鄬忧跋蚓W(wǎng)絡(luò)工作原理實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)實(shí)驗(yàn)了解多層前向網(wǎng)絡(luò)的工作原理;通過(guò)實(shí)驗(yàn)掌握多層前向網(wǎng)絡(luò)用于字符識(shí)別的基本原理與方法;通過(guò)上機(jī)實(shí)驗(yàn)掌握BP算法的具體實(shí)現(xiàn)和神經(jīng)網(wǎng)絡(luò)工具箱中相關(guān)函數(shù)的使用。多層前向網(wǎng)絡(luò)工作原理:網(wǎng)絡(luò)結(jié)構(gòu)單隱層前向網(wǎng)絡(luò)多層前向網(wǎng)絡(luò)的一般層(第層結(jié)構(gòu)())激活函數(shù)隱層:1.Sigmoid激活函數(shù)2.對(duì)稱的Sigmoid激活函數(shù)。輸出層:分類問(wèn)題時(shí),選取Sigmoid或?qū)ΨQSigmoid作為激活函數(shù);函數(shù)逼近問(wèn)題時(shí),輸出層神經(jīng)元選取線性激活函數(shù)。BP算法(1)初始化:選擇很小的隨機(jī)數(shù)初始化權(quán)值和閾值,如。(2)前向計(jì)算(第k步),,,其中.(3)后向計(jì)算(第k步)對(duì)于(4)更新權(quán)值和閾值,動(dòng)量BP算法最速下降法的鋸齒現(xiàn)象是導(dǎo)致BP算法收斂速度慢的主要原因。為了克服這種震蕩現(xiàn)象,加快收斂速度,一個(gè)經(jīng)典的解決辦法是:使用低通濾波器來(lái)平滑震蕩。低通濾波器(IIR)考慮下面的一階濾波器,其中,是濾波器的輸入,是濾波器的輸出,是動(dòng)量常數(shù),滿足.對(duì)上式兩邊同時(shí)進(jìn)行離散時(shí)間Fourier變換,有,。顯然,有,(當(dāng)動(dòng)量常數(shù)接近1時(shí))。因此,上述濾波器是一個(gè)低通濾波器。動(dòng)量BP算法其中實(shí)際使用1)權(quán)值和閾值的初始化選擇很小的隨機(jī)數(shù):如取中均勻分布的隨機(jī)數(shù),目的是避免網(wǎng)絡(luò)的節(jié)點(diǎn)飽和,從而大大減少網(wǎng)絡(luò)所需的訓(xùn)練次數(shù)。2)隱層神經(jīng)元個(gè)數(shù)的選擇網(wǎng)絡(luò)隱層神經(jīng)元個(gè)數(shù)太少,通常導(dǎo)致欠擬合,而網(wǎng)絡(luò)隱層神經(jīng)元個(gè)數(shù)太多,通常導(dǎo)致過(guò)擬合,使網(wǎng)絡(luò)缺乏泛化能力3)訓(xùn)練的停止準(zhǔn)則(1)給定迭代次數(shù);(2)停止:,其中為第次迭代后對(duì)應(yīng)所有訓(xùn)練樣本的均方誤差;(3)交叉確定法(Cross-Validation法)圖中繪出了分別對(duì)應(yīng)于training集、validation集和test集的誤差下降曲線。使用交叉確認(rèn)法的停止規(guī)則是:當(dāng)訓(xùn)練集的誤差曲線下降曲線與確認(rèn)的誤差曲線下降曲線相背離時(shí),則停止訓(xùn)練。從圖中的test集的誤差下降曲線可以看出,這種停止準(zhǔn)則的有效性。問(wèn)題描述字符識(shí)別是模式識(shí)別的一個(gè)重要的研究方向,在很多領(lǐng)域有著廣泛的應(yīng)用。本試驗(yàn)考慮設(shè)計(jì)一個(gè)多層前向網(wǎng)絡(luò)用于二十六個(gè)英文字母的識(shí)別。在計(jì)算機(jī)中,字符或圖像均可用位圖形式描述。圖1給出了字母A的位圖形式,如果用1表示,其余元素用0表示,則字母A可以用一個(gè)如下的矩陣表示圖1字母A的位圖圖2含噪字母A的位圖.如果將上述矩陣按行拉直,則得到字母A的理想特征向量表示,即.用同樣的方式,可以定義其它所有26個(gè)英文字母的理想特征向量,以作為多層前向網(wǎng)絡(luò)的輸入向量。26個(gè)英文字母每個(gè)字母對(duì)應(yīng)的神經(jīng)網(wǎng)絡(luò)的目標(biāo)輸出,用一個(gè)26維的向量表示,例如,字母A、B的目標(biāo)輸出分別為其它字母依次類推。26個(gè)英文字母的理想特征向量及其所對(duì)應(yīng)的目標(biāo)輸出,可通過(guò)調(diào)用”prprob”函數(shù)得到,位圖可使用”plotchar”畫出。利用多層前向網(wǎng)絡(luò)進(jìn)行字符識(shí)別,就是通過(guò)設(shè)計(jì)和訓(xùn)練一個(gè)網(wǎng)絡(luò),使網(wǎng)絡(luò)能夠?qū)?yīng)于字符的特征向量輸入得到相應(yīng)的目標(biāo)輸出。然而,在實(shí)際識(shí)別過(guò)程中,待識(shí)別字符的特征向量通常是所對(duì)應(yīng)的理想特征向量的含噪版本,圖2給出了一個(gè)含有高斯白噪聲的字母A的位圖。因此,在訓(xùn)練和設(shè)計(jì)網(wǎng)絡(luò)時(shí),應(yīng)該使網(wǎng)絡(luò)具有一定的抑制噪聲的能力。實(shí)驗(yàn)內(nèi)容神經(jīng)網(wǎng)絡(luò)工具箱中的函數(shù)介紹newff:生成一個(gè)新的多層前向網(wǎng)絡(luò);traingdx:具有自適應(yīng)學(xué)習(xí)率的動(dòng)量BP學(xué)習(xí)算法;train:對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練;sim:對(duì)網(wǎng)絡(luò)進(jìn)行仿真,即求網(wǎng)絡(luò)對(duì)給定輸入所對(duì)應(yīng)的輸出。訓(xùn)練網(wǎng)絡(luò)選取隱層神經(jīng)元的個(gè)數(shù)為10,采用每個(gè)字母理想特征向量的20個(gè)加噪的版本(均值為0,標(biāo)準(zhǔn)方差為0.1和0.2的高斯白噪各10個(gè))作為訓(xùn)練樣本,選取適當(dāng)?shù)某跏紮?quán)值、初始閾值和動(dòng)量值對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,直到網(wǎng)絡(luò)收斂(停止準(zhǔn)則:設(shè)定迭代次數(shù)或?qū)嶋H輸出與期望輸出的均方誤差值小于一個(gè)給定的值,例如,迭代次數(shù)為1000;均方誤差為0.1)。本次訓(xùn)練網(wǎng)絡(luò)的迭代次數(shù)為3000,均方誤差為0.001(程序見bp.m)。檢驗(yàn)網(wǎng)絡(luò)識(shí)別能力產(chǎn)生一系列加噪的特征向量(噪聲為均值為0高斯白噪)作為網(wǎng)絡(luò)的輸入向量,檢驗(yàn)在噪聲方差依次為0:0.05:0.5下的正確識(shí)別率,繪出識(shí)別率與噪聲方差的變化關(guān)系曲線如下,當(dāng)噪聲方差增大時(shí),識(shí)別率下降?!?-’表示訓(xùn)練樣本未加噪,‘*’表示加噪,可以看出,加噪訓(xùn)練樣本得到的識(shí)別率要高于不加噪樣本的識(shí)別率。(bp1.m)選取不同初始權(quán)值和初始閾值對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練選取[-0.1,0.1],[-0.5,0.5]為兩組初始權(quán)值和閾值范圍,利用MATLAB繪出訓(xùn)練誤差收斂曲線如下。[-0.5,0.5][-0.1,0.1]由曲線可以看出,初始閾值和權(quán)值在[-0.5,0.5]區(qū)間時(shí)迭代次數(shù)小于[-0.1,0.1],且兩條曲線均成階梯狀下降。(bp2.m)使用交叉確認(rèn)發(fā)確定最優(yōu)隱層神經(jīng)元的個(gè)數(shù)用于交叉確認(rèn)的隱層神經(jīng)元的個(gè)數(shù)為:5,10,15,20,30,40;總樣本樣本:每個(gè)字母理想特征向量的80個(gè)加噪的版本(均值為0,標(biāo)準(zhǔn)方差為0.1和0.2的高斯白噪各40個(gè))。其中,50%為訓(xùn)練樣本,25%為驗(yàn)證樣本,25%為檢測(cè)樣本。5個(gè)隱層神經(jīng)元10個(gè)隱層神經(jīng)元15個(gè)隱層神經(jīng)元20個(gè)隱層神經(jīng)元30個(gè)隱層神經(jīng)元40個(gè)隱層神經(jīng)元由上可知,最優(yōu)隱層神經(jīng)元個(gè)數(shù)為40個(gè)。對(duì)于該網(wǎng)絡(luò),計(jì)算噪聲方差依次為0:0.05:0.5下的正確恢復(fù)率如下。易得,當(dāng)噪聲方差增大時(shí),識(shí)別率成下降趨勢(shì),但仍高于66%。(bp3.m)增加含噪訓(xùn)練樣本選取含噪訓(xùn)練樣本數(shù)量為50、100、200、500、1000且分別選擇方差0、0.1、0.2、0.5的高斯含噪訓(xùn)練樣本分別訓(xùn)練網(wǎng)絡(luò)(隱層神經(jīng)元個(gè)數(shù)為30),并對(duì)應(yīng)隨機(jī)產(chǎn)生200個(gè)檢驗(yàn)數(shù)據(jù)。方差訓(xùn)練樣本數(shù)00.10.20.5501.00000.99000.94000.65001001.00000.98000.95500.66002001.00000.99500.94500.69505001.00000.93500.80500.805010001.00000.99500.97000.7600由表可得,當(dāng)訓(xùn)練樣本數(shù)一定時(shí),增大方差,會(huì)使得識(shí)別率下降。但當(dāng)方差一定,增加訓(xùn)練樣本個(gè)數(shù)時(shí),識(shí)別率會(huì)出現(xiàn)波動(dòng),并不是訓(xùn)練樣本個(gè)數(shù)越多,識(shí)別效果越好。(bp4.m)增加隱層神經(jīng)元個(gè)數(shù)方差神經(jīng)元個(gè)數(shù)00.10.20.5301.00000.99000.96000.8000401.00000.99500.95500.7450501.00001.00000.94500.79501001.00001.00000.93500.76001501.00000.99000.96500.7500從上表可以看出,當(dāng)隱層神經(jīng)元一定時(shí),增大方差,會(huì)使得識(shí)別率下降。但當(dāng)方差一定,增加神經(jīng)元個(gè)數(shù)時(shí),識(shí)別率會(huì)出現(xiàn)波動(dòng),并不是神經(jīng)元個(gè)數(shù)越多,識(shí)別效果越好。(bp5.m)實(shí)驗(yàn)主要結(jié)論及改進(jìn)意見主要結(jié)論:設(shè)計(jì)一個(gè)輸入層和輸出層神經(jīng)元個(gè)數(shù)為35、26的單隱層神經(jīng)網(wǎng)絡(luò),選取隱層神經(jīng)元個(gè)數(shù)為10,并給定初始權(quán)值和閾值為[-0.1,0.1],同時(shí)設(shè)置迭代次數(shù)為3000,均方誤差為0.0001。當(dāng)檢驗(yàn)樣本的噪聲方差增大時(shí),識(shí)別率下降。初始閾值和權(quán)值在[-0.5,0.5]區(qū)間時(shí)迭代次數(shù)小于[-0.1,0.1],且兩條曲線均成階梯狀下降。使用交叉確認(rèn)法確定了隱層神經(jīng)元的數(shù)量最優(yōu)為40,并給出了噪聲方差依次為0:0.05:0.5下的識(shí)別率。改進(jìn)意見:通過(guò)實(shí)驗(yàn)知,不能盲目通過(guò)增加含噪訓(xùn)練樣本個(gè)數(shù)和隱層神經(jīng)元個(gè)數(shù)來(lái)提高網(wǎng)絡(luò)識(shí)別能力,個(gè)人認(rèn)為,需要通過(guò)進(jìn)一步的學(xué)習(xí)來(lái)確定。五.程序附錄bp.mclc;clear;%??3y1¤×÷???Dμ?±?á?[alphabet,targets]=prprob;%í¨1yprproboˉêyμ?μ??μá·×????ˉoí??±ê?ˉ[R,Q]=size(alphabet);[S2,Q]=size(targets);S1=10;%òto?2???êynet=newff(minmax(alphabet),[S1S2],{'logsig''logsig'},'traingdx');%′′?¨é??-í???£?á?2?£?oˉêy?aLogsig?£net.IW{1}=0.2*rand(10,35)-0.1;%?D?μoíè¨?μ?ú[-0.1,0.1]????net.LW{2}=0.2*rand(26,10)-0.1;net.b{1}=0.2*rand(10,1)-0.1;net.b{2}=0.2*rand(26,1)-0.1;T=alphabet;%?μá·?ˉG=targets;%??±ê?ˉnet.trainParam.goal=0.001;%?μá·???è??±ê?a0.001net.trainParam.epochs=3000;%μü′ú3000′?G1=repmat(targets,1,20);%à??1??±ê?ˉT1=[];forj=1:10T1=[T1alphabet+randn(R,Q)*0.1,alphabet+randn(R,Q)*0.2];end[net,tr]=train(net,T1,G1);%?μá·óD??éùμ?é??-í???bp1.mclc;clear;%??3y1¤×÷???Dμ?±?á?[alphabet,targets]=prprob;%í¨1yprproboˉêyμ?μ??μá·×????ˉoí??±ê?ˉ[R,Q]=size(alphabet);%è?μ?×????ˉμ???êy[S2,Q]=size(targets);%è?μ???±ê?ˉμ???êy£??ú?aà???±ê?ˉê?26???t????êy?£·?±e′ú±íA~ZS1=10;%òto?2???êynet=newff(minmax(alphabet),[S1S2],{'logsig''logsig'},'traingdx');%′′?¨é??-í???£?á?2?£?oˉêy?aLogsig?£net.IW{1}=0.2*rand(10,35)-0.1;net.LW{2}=0.2*rand(26,10)-0.1;net.b{1}=0.2*rand(10,1)-0.1;net.b{2}=0.2*rand(26,1)-0.1;net.trainParam.goal=0.001;%?μá·???è??±ê?a0.001net.trainParam.epochs=3000;%μü′ú3000′?P=alphabet;%?μá·?ˉT=targets;%??±ê?ˉ[net,~]=train(net,P,T);%?μá·í???netn=net;%′′?¨′?óD??éùμ?í???netn.trainParam.goal=0.001;%?μá·???è??±ê?a0.001netn.trainParam.epochs=3000;%μü′ú3000′?G1=repmat(targets,1,20);%à??1??±ê?ˉT1=[];forj=1:10T1=[T1alphabet+randn(R,Q)*0.1,alphabet+randn(R,Q)*0.2];end[netn,tr]=train(netn,T1,G1);%?μá·óD??éùμ?é??-í???noise_fanwei=0:0.05:0.5;max_test=100;network1=[];network2=[];fornoiselevel=0:0.05:0.5errors1=0;errors2=0;fori=1:max_testP=alphabet+randn(35,26)*noiselevel;%·????ˉ?óè???éùA=sim(net,P);%??ó??T??éù?μá·μ?í?????DD·???AA=compet(A);%ê?3??a1μ???????ó|ê?è??òá??a?o?ù??ê¤μ?ê?è??òá?errors1=errors1+sum(sum(abs(AA-T)))/2;%?????ó2?An=sim(netn,P);%??ó?óD??éù?μá·μ?í?????DD·???AAn=compet(An);%ê?3??a1μ???????ó|ê?è??òá??a?o?ù??ê¤μ?ê?è??òá?errors2=errors2+sum(sum(abs(AAn-T)))/2;%?????ó2?endnetwork1=[network1(26*100-errors1)/26/100];%????3?Network1μ??ó2?network2=[network2(26*100-errors2)/26/100];%????3?Network2μ??ó2?endplot(noise_fanwei,network1*100,'--',noise_fanwei,network2*100,'*');title('?yè·ê?±e?ê');xlabel('??éù·?2?');ylabel('Network1--Network2*');bp2.mclc;clear;%??3y1¤×÷???Dμ?±?á?[alphabet,targets]=prprob;%í¨1yprproboˉêyμ?μ??μá·×????ˉoí??±ê?ˉ[R,Q]=size(alphabet);%è?μ?×????ˉμ???êy[S2,Q]=size(targets);%è?μ???±ê?ˉμ???êy£??ú?aà???±ê?ˉê?26???t????êy?£·?±e′ú±íA~ZS1=10;%òto?2???êynet=newff(minmax(alphabet),[S1S2],{'logsig''logsig'},'traingdx');%′′?¨é??-í???£?á?2?£?oˉêy?aLogsig?£net.IW{1}=1.0*rand(10,35)-0.5;net.LW{2}=1.0*rand(26,10)-0.5;net.b{1}=1.0*rand(10,1)-0.5;net.b{2}=1.0*rand(26,1)-0.5;P=alphabet;%?μá·?ˉT=targets;%??±ê?ˉnet.trainParam.goal=0.001;%?μá·???è??±ê?a0.001net.trainParam.epochs=3000;%μü′ú3000′?[net,tr]=train(net,P,T);%?μá·′úóD??éùμ?é??-í???bp3.mclc;clear;N=80;%2úéú?μá·?ù±?oí??±êê?3?[p,t]=prprob();[m,n]=size(p);p_new=repmat(p,1,N);%2úéúo???μ??μá·?ù±?t_new=repmat(t,1,N);noise=zeros(35,N*26);noise(:,1:n*N/2)=sqrt(0.1)*randn([m,n*N/2]);%???1°×???ù?μ?a0£?·?2??a0.1μ??μá·?ù±?noise(:,n*N/2+1:end)=sqrt(0.2)*randn([m,n*N/2]);%???1°×???ù?μ?a0£?·?2??a0.2μ??μá·?ù±?p_new=p_new+noise;[trainex,validate,testex]=dividevec(p_new,t_new,0.25,0.25);H=[5,10,15,20,30,40];%′y??μ?é??-?a??êyL=length(H);rate=zeros(1,L);c=cell(1,L);fori=1:L%D??¨ò???í???net=newff(minmax(p_new),[H(i),26],{'logsig','logsig'},'traingdx');net.IW{1}=0.2*rand(H(i),35)-0.1;net.LW{2}=0.2*rand(26,H(i))-0.1;net.b{1}=0.2*rand(H(i),1)-0.1;net.b{2}=0.2*rand(26,1)-0.1;%2?êyμ÷??net.trainParam.epochs=5000;%10Maximumnumberofepochstotrainnet.trainParam.goal=0.001;%0Performancegoal%?μá·í???[net,tr]=train(net,trainex.P,trainex.T,[],[],validate);c{1,i}=net;%?ì?éí???y=sim(net,testex.P);s=0;forj=1:size(testex.T,2)ifcompet(y(:,j))==testex.T(:,j);s=s+1;endendrate(:,i)=s/j;end[h,index]=max(rate);fprintf('×?ó?òt2?é??-?a??êy?a£o');H(index)%?ì?éí???ê?±e?üá|net=c{1,index};var=0:0.05:0.5;l=length(var);Rate=zeros(1,l);fori=1:ls=0;fork=1:100%???ú2úéú100???ó???ì?é?ù±?a1=randperm(26,1);p1=p(:,a1)+sqrt(var(i))*randn(35,1);a=sim(net,p1);index=find(compet(a)==1);ifindex==a1s=s+1;endendRate(1,i)=s/100;endplot(var,Rate,'*');xlabel('??éù·?2?');ylabel('ê?±e?ê');fork=1:length(var)text(var(k),Rate(k)-0.005,['(',num2str(var(k)),',',num2str(Rate(k)),')']);endbp4.m%???óo????μá·?ù±???êyclc;clear%2úéú?μá·?ù±?oí??±êê?3?NN=[50,100,200,500,1000];hiden=30;Var=[0,0.1,0.2,0.5];Rate=zeros(length(NN),length(Var));[p,t]=prprob();[m,n]=size(p);fori=1:length(NN)%2úéúo???μ??μá·?ù±?N=NN(i);p_new=repmat(p,1,N);t_new=repmat(t,1,N);noise=zeros(35,N*26);noise(:,1:n*N/2)=sqrt(0.1)*randn([m,n*N/2]);%???1°×???ù?μ?a0£?·?2??a0.1μ??μá·?ù±?noise(:,n*N/2+1:end)=sqrt(0.2)*randn([m,n*N/2]);%???1°×???ù?μ?a0£?·?2??a0.2μ??μá·?ù±?p_new=p_new+noise;%D??¨ò???í???net=newff(minmax(p_new),[hiden,26],{'logsig','logsig'},'traingdx');net.IW{1}=rand(hiden,35)-0.5;net.LW{2}=rand(26,hiden)-0.5;net.b{1}=rand(hiden,1)-0.5;net.b{2}=rand(26,1)-0.5;%2?êyμ÷??net.trainParam.epochs=5000;%10Maximumnumberofepochstotrainnet.trainParam.goal=1e-3;%0Performancegoal%?μá·í???[net,tr]=train(net,p_new,t_new);%?ì?éí???forj=1:length(Var)var=Var(j);s=0;K=200;fork=1:K%???ú2úéú200???ó???ì?é?ù±?a1=randperm(26,1);p1=p(:,a1)+sqrt(var)*randn(35,1);a=sim(net,p1);index=find(compet(a)==1);ifindex==a1s=s+1;endendRate(i,j)=s/Kendendbp5.m%???óòt2?é??-?a??êyclc;clear%2úéú?μá·?ù±?oí??±êê?3?H=[30,40,50,100,150];N=100;Var=[0,0.1,0.2,0.5];Rate=zeros(length(H),length(Var));[p,t]=prprob();[m,n]=size(p);fori=1:length(H)%2úéúo???μ??μá·?ù±?

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論