[Python人工智能] 十六.Keras環(huán)境搭建、入門基礎(chǔ)及回歸神經(jīng)網(wǎng)絡(luò)案例(Python人工智能需要學(xué)什么)
代碼-:https://github.com/eastmountyxz/AI-for-TensorFlow

代碼-:https://github.com/eastmountyxz/AI-for-Keras
文章目錄
一.為什么要使用Keras
二.安裝Keras和兼容Backend
1.如何安裝Keras
2.兼容Backend
三.白話神經(jīng)網(wǎng)絡(luò)
四.Keras搭建回歸神經(jīng)網(wǎng)絡(luò)
六.總結(jié)
華為云社區(qū)前文賞析:
[Python人工智能] 一.TensorFlow2.0環(huán)境搭建及神經(jīng)網(wǎng)絡(luò)入門
[Python人工智能] 二.TensorFlow基礎(chǔ)及一元直線預(yù)測案例
[Python人工智能] 三.TensorFlow基礎(chǔ)之Session、變量、傳入值和激勵函數(shù)
[Python人工智能] 四.TensorFlow創(chuàng)建回歸神經(jīng)網(wǎng)絡(luò)及Optimizer優(yōu)化器
[Python人工智能] 五.Tensorboard可視化基本用法及繪制整個神經(jīng)網(wǎng)絡(luò)
[Python人工智能] 六.TensorFlow實現(xiàn)分類學(xué)習(xí)及MNIST手寫體識別案例
[Python人工智能] 七.什么是過擬合及dropout解決神經(jīng)網(wǎng)絡(luò)中的過擬合問題
[Python人工智能] 八.卷積神經(jīng)網(wǎng)絡(luò)CNN原理詳解及TensorFlow編寫CNN
[Python人工智能] 九.gensim詞向量Word2Vec安裝及《慶余年》中文短文本相似度計算
[Python人工智能] 十.Tensorflow+Opencv實現(xiàn)CNN自定義圖像分類及與KNN圖像分類對比
[Python人工智能] 十一.Tensorflow如何保存神經(jīng)網(wǎng)絡(luò)參數(shù)
[Python人工智能] 十二.循環(huán)神經(jīng)網(wǎng)絡(luò)RNN和LSTM原理詳解及TensorFlow編寫RNN分類案例
[Python人工智能] 十三.如何評價神經(jīng)網(wǎng)絡(luò)、loss曲線圖繪制、圖像分類案例的F值計算
[Python人工智能] 十四.循環(huán)神經(jīng)網(wǎng)絡(luò)LSTM RNN回歸案例之sin曲線預(yù)測 丨【百變AI秀】
[Python人工智能] 十五.無監(jiān)督學(xué)習(xí)Autoencoder原理及聚類可視化案例詳解
[Python人工智能] 十六.Keras環(huán)境搭建、入門基礎(chǔ)及回歸神經(jīng)網(wǎng)絡(luò)案例
一.為什么要使用Keras
Keras是一個由Python編寫的開源人工神經(jīng)網(wǎng)絡(luò)庫,可以作為Tensorflow、Microsoft-CNTK和Theano的高階應(yīng)用程序接口,進行深度學(xué)習(xí)模型的設(shè)計、調(diào)試、評估、應(yīng)用和可視化 。其主要開發(fā)者是谷歌工程師Fran?ois Chollet。
Keras在代碼結(jié)構(gòu)上由面向?qū)ο蠓椒ň帉懀耆K化并具有可擴展性,其運行機制和說明文檔有將用戶體驗和使用難度納入考慮,并試圖簡化復(fù)雜算法的實現(xiàn)難度 。Keras支持現(xiàn)代人工智能領(lǐng)域的主流算法,包括前饋結(jié)構(gòu)和遞歸結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),也可以通過封裝參與構(gòu)建統(tǒng)計學(xué)習(xí)模型。在硬件和開發(fā)環(huán)境方面,Keras支持多操作系統(tǒng)下的多GPU并行計算,可以根據(jù)后臺設(shè)置轉(zhuǎn)化為Tensorflow、Microsoft-CNTK等系統(tǒng)下的組件。
Keras這部分內(nèi)容,我準備講解的流程如下:
首先分享Keras基礎(chǔ)原理及語法
接著使用Keras搭建回歸神經(jīng)網(wǎng)絡(luò)、分類神經(jīng)網(wǎng)絡(luò)、CNN、RNN、LSTM、Autoencoder等
最后結(jié)合Keras實現(xiàn)各種自然語言處理、圖像分類、文本挖掘、語音識別、視頻分析等案例
PS:強推大家學(xué)習(xí)莫煩老師AI教程:https://morvanzhou.github.io/tutorials
二.安裝Keras和兼容Backend
1.如何安裝Keras
首先需要確保已經(jīng)安裝了以下兩個包:
Numpy
Scipy
調(diào)用“pip3 list”命令可以看到相關(guān)包已經(jīng)安裝成功。
activate tensorflow pip3 install keras pip install keras
搭建過程詳見這篇文章:
[Python人工智能] 一.TensorFlow環(huán)境搭建及神經(jīng)網(wǎng)絡(luò)入門
安裝如下圖所示:
安裝成功之后,我們嘗試一個簡單的代碼。打開Anaconda,然后選擇已經(jīng)搭建好的“tensorflow”環(huán)境,運行Spyder。
測試代碼如下:
# -*- coding: utf-8 -*- """ Created on Fri Feb 14 16:43:21 2020 @author: Eastmount CSDN """ import numpy as np from keras.preprocessing.sequence import TimeseriesGenerator # 時間序列 y = np.array(range(5)) tg = TimeseriesGenerator(y, y, length=3, sampling_rate=1) for i in zip(*tg[0]): print(*i)
運行結(jié)果如下圖所示,究竟“Using TensorFlow backend.”表示什么意思呢?
2.兼容Backend
Backend是指Keras基于某個框架來做運算,包括基于TensorFlow或Theano,上面的那段代碼就是使用TensorFlow來運算的。后面要講解的神經(jīng)網(wǎng)絡(luò)也是基于TensorFlow或Theano來搭建的。
如何查看Backend呢?當(dāng)我們導(dǎo)入Keras擴展包時,它就會有相應(yīng)的提示,比如下圖使用的就是Theano來搭建底層的神經(jīng)網(wǎng)絡(luò)。
如果想要改成TensorFlow,怎么辦呢?
第一種方法,找到“keras/keras.json”這個文件,然后打開它。所有的backend信息就存儲在這里,每次導(dǎo)入Keras包就會檢測這個“keras.json”文件的backend。接著我們嘗試修改。
第二種方法是在命令行中輸入下面這句命令,每次運行腳本時它會直接幫你修改成臨時的TensorFlow。
import os os.environ['KERAS_BACKEND']='tensorflow' import keras
三.白話神經(jīng)網(wǎng)絡(luò)
該部分還是有必要再給大家普及一遍,參考"莫煩大神"網(wǎng)易云課程對神經(jīng)網(wǎng)絡(luò)的介紹,講得清晰透徹,推薦大家閱讀。開始吧!讓我們一起進入神經(jīng)網(wǎng)絡(luò)和TensorFlow的世界。
首先,什么是神經(jīng)網(wǎng)絡(luò)(Neural Networks)?
計算機神經(jīng)網(wǎng)絡(luò)是一種模仿生物神經(jīng)網(wǎng)絡(luò)或動物神經(jīng)中樞,特別是大腦的結(jié)構(gòu)和功能,它是一種數(shù)學(xué)模型或計算機模型。神經(jīng)網(wǎng)絡(luò)由大量的神經(jīng)元連接并進行計算,大多數(shù)情況下人工神經(jīng)網(wǎng)絡(luò)能在外界信息的基礎(chǔ)上改變內(nèi)部結(jié)構(gòu),是一種自適應(yīng)的過程。
現(xiàn)代神經(jīng)網(wǎng)絡(luò)是一種基于傳統(tǒng)統(tǒng)計學(xué)建模的工具,常用來對輸入和輸出間復(fù)雜的關(guān)系進行建模,或探索數(shù)據(jù)間的模式,神經(jīng)網(wǎng)絡(luò)是一種運算模型,有大量的節(jié)點或神經(jīng)元及其聯(lián)系構(gòu)成。和人類的神經(jīng)元一樣,它們負責(zé)傳遞信息和加工信息,神經(jīng)元也能被訓(xùn)練或強化,形成固定的神經(jīng)形態(tài),對特殊的信息有更強烈的反應(yīng)。
神經(jīng)網(wǎng)絡(luò)是如何工作的呢?
如上圖所示,不管這是一只跳躍飛奔的貓,或是一只靜靜思考的貓,你都知道它是一只貓,因為你的大腦已經(jīng)被告知過圓眼睛、毛茸茸、尖耳朵的就是貓,你通過成熟的視覺神經(jīng)系統(tǒng)判斷它是貓。計算機也是一樣,通過不斷的訓(xùn)練,告訴哪些是貓、哪些是狗、哪些是豬,它們會通過數(shù)學(xué)模型來概括這些學(xué)習(xí)的判斷,最終以數(shù)學(xué)的形式(0或1)來分類。目前,谷歌、百度圖片搜索都能清晰識別事物,這些都歸功于計算機神經(jīng)系統(tǒng)的飛速發(fā)展。
神經(jīng)網(wǎng)絡(luò)系統(tǒng)由多層神經(jīng)層構(gòu)成,為了區(qū)分不同的神經(jīng)層,我們分為:
輸入層:直接接收信息的神經(jīng)層,比如接收一張貓的圖片
輸出層:信息在神經(jīng)元中傳遞中轉(zhuǎn)和分析權(quán)衡,形成輸出結(jié)果,通過該層輸出的結(jié)果可以看出計算機對事物的認知
隱藏層:在輸入和輸出層之間的眾多神經(jīng)元連接組成的各個層面,可以有多層,負責(zé)對傳入信息的加工處理,經(jīng)過多層加工才能衍生出對認知的理解
神經(jīng)網(wǎng)絡(luò)舉例說明
如下圖所示,通常來說,計算機處理的東西和人類有所不同,無論是聲音、圖片還是文字,它們都只能以數(shù)字0或1出現(xiàn)在計算機神經(jīng)網(wǎng)絡(luò)里。神經(jīng)網(wǎng)絡(luò)看到的圖片其實都是一堆數(shù)字,對數(shù)字的加工處理最終生成另一堆數(shù)字,并且具有一定認知上的意義,通過一點點的處理能夠得知計算機到底判斷這張圖片是貓還是狗。
計算機是怎么訓(xùn)練的呢?
首先,需要很多的數(shù)據(jù),比如需要計算機判斷是貓還是狗,就需要準備上千萬張有標記的圖片,然后再進行上千萬次的訓(xùn)練。計算機通過訓(xùn)練或強化學(xué)習(xí)判斷貓,將獲取的特征轉(zhuǎn)換為數(shù)學(xué)的形式。
我們需要做的就是只給計算機看圖片,然后讓它給我們一個不成熟也不準確的答案,有可能100次答案中有10%是正確的。如果給計算機看圖片是一張飛奔的貓(如下圖),但計算機可能識別成一條狗,盡管它識別錯誤,但這個錯誤對計算機是非常有價值的,可以用這次錯誤的經(jīng)驗作為一名好老師,不斷學(xué)習(xí)經(jīng)驗。
那么計算機是如何學(xué)習(xí)經(jīng)驗的呢?
它是通過對比預(yù)測答案和真實答案的差別,然后把這種差別再反向傳遞回去,修改神經(jīng)元的權(quán)重,讓每個神經(jīng)元向正確的方向改動一點點,這樣到下次識別時,通過所有改進的神經(jīng)網(wǎng)絡(luò),計算機識別的正確率會有所提高。最終每一次的一點點,累加上千萬次的訓(xùn)練,就會朝正確的方向上邁出一大步。
最后到驗收結(jié)果的時候,給計算機再次顯示貓的圖片時,它就能正確預(yù)測這是一只貓。
激勵函數(shù)是什么東東?
接著再進一步看看神經(jīng)網(wǎng)絡(luò)是怎么訓(xùn)練的。原來在計算機里每一個神經(jīng)元都有屬于它的激勵函數(shù)(Active Function),我們可以利用這些激勵函數(shù)給計算機一個刺激行為。當(dāng)我們第一次給計算機看一只飛奔的貓時,神經(jīng)網(wǎng)絡(luò)中只有部分神經(jīng)元被激活或激勵,被激活傳遞下去的信息是計算機最為重視的信息,也是對輸出結(jié)果最有價值的信息。
如果預(yù)測的結(jié)果是一只狗,所有神經(jīng)元的參數(shù)就會被調(diào)整,這時有一些容易被激活的神經(jīng)元就會變得遲鈍,而另一些會變得敏感起來,這就說明了所有神經(jīng)元參數(shù)正在被修改,變得對圖片真正重要的信息敏感,從而被改動的參數(shù)就能漸漸預(yù)測出正確的答案,它就是一只貓。這就是神經(jīng)網(wǎng)絡(luò)的加工過程。
四.Keras搭建回歸神經(jīng)網(wǎng)絡(luò)
推薦前文:[Python人工智能] 二.TensorFlow基礎(chǔ)及一元直線預(yù)測案例,最終輸出的結(jié)果如下圖所示:
1.導(dǎo)入擴展包
Sequential(序貫?zāi)P停┍硎景错樞蚪⒛P停亲詈唵蔚木€性、從頭到尾的結(jié)構(gòu)順序,不分叉,是多個網(wǎng)絡(luò)層的線性堆疊。Dense是layers中的屬性,表示全連接層。Keras還可以實現(xiàn)各種層,包括core核心層、Convolution卷積層、Pooling池化層等非常豐富有趣的網(wǎng)絡(luò)結(jié)構(gòu)。
import numpy as np from keras.models import Sequential from keras.layers import Dense import matplotlib.pyplot as plt
2.創(chuàng)建散點圖數(shù)據(jù)
通過numpy.linspace隨機生成200個散點,并構(gòu)建y=0.5*x+2的虛擬數(shù)據(jù),并調(diào)用 np.random.normal(0, 0.05, (200,)) 增加噪聲。
import numpy as np from keras.models import Sequential from keras.layers import Dense import matplotlib.pyplot as plt #---------------------------創(chuàng)建散點數(shù)據(jù)--------------------------- # 輸入 X = np.linspace(-1, 1, 200) # 隨機化數(shù)據(jù) np.random.shuffle(X) # 輸出 y = 0.5*X + 2 + np.random.normal(0, 0.05, (200,)) #噪聲平均值0 方差0.05 # 繪制散點圖 plt.scatter(X, y) plt.show() # 數(shù)據(jù)集劃分(訓(xùn)練集-測試集) X_train, y_train = X[:160], y[:160] # 前160個散點 X_test, y_test = X[160:], y[160:] # 后40個散點
這里通過matplotlib簡單繪制散點圖,輸出結(jié)果如下圖所示,基本滿足:y = 0.5*x + 2 + noise。
3.添加神經(jīng)網(wǎng)絡(luò)層
創(chuàng)建Sequential模型。
添加神經(jīng)網(wǎng)絡(luò)層。在Keras中,增加層的操作非常簡單,調(diào)用model.add(Dense(output_dim=1, input_dim=1))函數(shù)添加即可。注意,如果再添加一個神經(jīng)層,默認上一層的輸出為下一層的輸入數(shù)據(jù),此時不需要定義input_dim,比如model.add(Dense(output_dim=1, ))。
搭建模型并選擇損失函數(shù)(loss function)和優(yōu)化方法(optimizing method)。
#----------------------------添加神經(jīng)層------------------------------ # 創(chuàng)建模型 model = Sequential() # 增加全連接層 輸出個數(shù)和輸入個數(shù)(均為1個) model.add(Dense(output_dim=1, input_dim=1)) # 搭建模型 選擇損失函數(shù)(loss function)和優(yōu)化方法(optimizing method) # mse表示二次方誤差 sgd表示亂序梯度下降優(yōu)化器 model.compile(loss='mse', optimizer='sgd')
PS:是不是感覺Keras代碼比TensorFlow和Theano都簡潔很多,但還是建議大家先學(xué)習(xí)前者,再深入Keras。
4.訓(xùn)練并輸出誤差
print("訓(xùn)練") # 學(xué)習(xí)300次 for step in range(301): # 分批訓(xùn)練數(shù)據(jù) 返回值為誤差 cost = model.train_on_batch(X_train, y_train) # 每隔100步輸出誤差 if step % 100 == 0: print('train cost:', cost)
5.測試神經(jīng)網(wǎng)絡(luò)并輸出誤差\權(quán)重和偏置
print("測試") # 運行模型測試 一次傳入40個測試散點 cost = model.evaluate(X_test, y_test, batch_size=40) # 輸出誤差 print("test cost:", cost) # 獲取權(quán)重和誤差 layers[0]表示第一個神經(jīng)層(即Dense) W, b = model.layers[0].get_weights() # 輸出權(quán)重和偏置 print("weights:", W) print("biases:", b)
6.繪制預(yù)測圖形
y_pred = model.predict(X_test) plt.scatter(X_test, y_test) plt.plot(X_test, y_pred) plt.show()
輸出結(jié)果如下所示:
誤差從4.002261下降到0.0030148015,說明學(xué)習(xí)到知識。同時,誤差為0.47052705接近我們的初始值0.5,偏置為1.9944116也接近2。
訓(xùn)練 train cost: 4.002261 train cost: 0.07719966 train cost: 0.005076804 train cost: 0.0030148015 測試 40/40 [==============================] - 0s 1ms/step test cost: 0.0028453178238123655 weights: [[0.47052705]] biases: [1.9944116]
完整代碼如下:
# -*- coding: utf-8 -*- """ Created on Fri Feb 14 16:43:21 2020 @author: Eastmount CSDN YXZ O(∩_∩)O Wuhan Fighting!!! """ import numpy as np from keras.models import Sequential from keras.layers import Dense import matplotlib.pyplot as plt #---------------------------創(chuàng)建散點數(shù)據(jù)--------------------------- # 輸入 X = np.linspace(-1, 1, 200) # 隨機化數(shù)據(jù) np.random.shuffle(X) # 輸出 y = 0.5*X + 2 + np.random.normal(0, 0.05, (200,)) #噪聲平均值0 方差0.05 # 繪制散點圖 # plt.scatter(X, y) # plt.show() # 數(shù)據(jù)集劃分(訓(xùn)練集-測試集) X_train, y_train = X[:160], y[:160] # 前160個散點 X_test, y_test = X[160:], y[160:] # 后40個散點 #----------------------------添加神經(jīng)層------------------------------ # 創(chuàng)建模型 model = Sequential() # 增加全連接層 輸出個數(shù)和輸入個數(shù)(均為1個) model.add(Dense(output_dim=1, input_dim=1)) # 搭建模型 選擇損失函數(shù)(loss function)和優(yōu)化方法(optimizing method) # mse表示二次方誤差 sgd表示亂序梯度下降優(yōu)化器 model.compile(loss='mse', optimizer='sgd') #--------------------------------Traning---------------------------- print("訓(xùn)練") # 學(xué)習(xí)300次 for step in range(301): # 分批訓(xùn)練數(shù)據(jù) 返回值為誤差 cost = model.train_on_batch(X_train, y_train) # 每隔100步輸出誤差 if step % 100 == 0: print('train cost:', cost) #--------------------------------Test------------------------------- print("測試") # 運行模型測試 一次傳入40個測試散點 cost = model.evaluate(X_test, y_test, batch_size=40) # 輸出誤差 print("test cost:", cost) # 獲取權(quán)重和誤差 layers[0]表示第一個神經(jīng)層(即Dense) W, b = model.layers[0].get_weights() # 輸出權(quán)重和偏置 print("weights:", W) print("biases:", b) #------------------------------繪制預(yù)測圖形----------------------------- y_pred = model.predict(X_test) plt.scatter(X_test, y_test) plt.plot(X_test, y_pred, "red") plt.show()
下面補充代碼對比各訓(xùn)練階段擬合的直線,可以看到隨著訓(xùn)練次數(shù)增加,誤差逐漸降低并且擬合的直線越來越好。
# -*- coding: utf-8 -*- """ Created on Fri Feb 14 16:43:21 2020 @author: Eastmount CSDN YXZ """ import numpy as np from keras.models import Sequential from keras.layers import Dense import matplotlib.pyplot as plt #---------------------------創(chuàng)建散點數(shù)據(jù)--------------------------- # 輸入 X = np.linspace(-1, 1, 200) # 隨機化數(shù)據(jù) np.random.shuffle(X) # 輸出 y = 0.5*X + 2 + np.random.normal(0, 0.05, (200,)) #噪聲平均值0 方差0.05 # 繪制散點圖 # plt.scatter(X, y) # plt.show() # 數(shù)據(jù)集劃分(訓(xùn)練集-測試集) X_train, y_train = X[:160], y[:160] # 前160個散點 X_test, y_test = X[160:], y[160:] # 后40個散點 #----------------------------添加神經(jīng)層------------------------------ # 創(chuàng)建模型 model = Sequential() # 增加全連接層 輸出個數(shù)和輸入個數(shù)(均為1個) model.add(Dense(output_dim=1, input_dim=1)) # 搭建模型 選擇損失函數(shù)(loss function)和優(yōu)化方法(optimizing method) # mse表示二次方誤差 sgd表示亂序梯度下降優(yōu)化器 model.compile(loss='mse', optimizer='sgd') #--------------------------------Traning---------------------------- print("訓(xùn)練") k = 0 # 學(xué)習(xí)1000次 for step in range(1000): # 分批訓(xùn)練數(shù)據(jù) 返回值為誤差 cost = model.train_on_batch(X_train, y_train) # 每隔100步輸出誤差 if step % 100 == 0: print('train cost:', cost) #----------------------------------------------------------- # 運行模型測試 一次傳入40個測試散點 cost = model.evaluate(X_test, y_test, batch_size=40) # 輸出誤差 print("test cost:", cost) # 獲取權(quán)重和誤差 layers[0]表示第一個神經(jīng)層(即Dense) W, b = model.layers[0].get_weights() # 輸出權(quán)重和偏置 print("weights:", W) print("biases:", b) #----------------------------------------------------------- # 可視化繪圖 k = k + 1 plt.subplot(5, 2, k) y_pred = model.predict(X_test) plt.scatter(X_test, y_test) plt.plot(X_test, y_pred, "red", label='cost=%.4f k=%d' %(cost,k)) plt.legend() plt.show()
六.總結(jié)
寫到這里,這篇基礎(chǔ)性的Keras文章就講述完畢。它通過不斷地訓(xùn)練和學(xué)習(xí),將預(yù)測結(jié)果與實際直線y=0.5*x+2相匹配,這是非常基礎(chǔ)的一篇深度學(xué)習(xí)文章,同時文章中存在錯誤或不足之處,還請海涵!作為人工智能的菜鳥,我希望自己能不斷進步并深入,后續(xù)將它應(yīng)用于圖像識別、網(wǎng)絡(luò)安全、對抗樣本等領(lǐng)域,一起加油!讀博不易,寫文也不易,且行且珍惜。
真的感覺自己菜,要學(xué)要做的好多,慢慢加油吧!也放平心態(tài),付出就好。看到很多學(xué)生不斷成長,真開心,一起加油喔,同在。
感恩能與大家在華為云遇見!
希望能與大家一起在華為云社區(qū)共同成長。原文地址:https://blog.csdn.net/Eastmount/article/details/104313140
(By:娜璋之家 Eastmount 2021-11-08 夜于武漢)
參考文獻:
[1] 楊秀璋, 顏娜. Python網(wǎng)絡(luò)數(shù)據(jù)爬取及分析從入門到精通(分析篇)[M]. 北京:北京航天航空大學(xué)出版社, 2018.
[2]?“莫煩大神” 網(wǎng)易云視頻地址
[3]?https://study.163.com/course/courseLearn.htm?courseId=1003209007
[4]?https://morvanzhou.github.io/tutorials
[5]?https://github.com/eastmountyxz/AI-for-TensorFlow
[6]?Keras: The Python Deep Learning library
[7]?Keras文本分類 - 基基偉大神
Keras 深度學(xué)習(xí) 神經(jīng)網(wǎng)絡(luò)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。