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

      網(wǎng)友投稿 665 2025-04-01

      代碼-: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)練的呢?

      [Python人工智能] 十六.Keras環(huán)境搭建、入門基礎(chǔ)及回歸神經(jīng)網(wǎng)絡(luò)案例(python人工智能需要學(xué)什么)

      首先,需要很多的數(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)容。

      上一篇:如何快速將Excel單元格變成圖片不需要截圖直接換成圖片(excel如何把單元格變成圖片)
      下一篇:基于Kubernetes的容器云平臺實戰(zhàn)》——1Docker簡介
      相關(guān)文章
      亚洲网站视频在线观看| 亚洲福利精品一区二区三区| 亚洲综合色在线观看亚洲| 亚洲av无码专区首页| 精品日韩99亚洲的在线发布| 亚洲字幕在线观看| 亚洲国产精品综合一区在线| 亚洲国产午夜电影在线入口| 亚洲成综合人影院在院播放| 亚洲的天堂av无码| 亚洲国产成人久久三区| 亚洲一区二区三区91| 亚洲人成综合网站7777香蕉| 亚洲综合精品伊人久久| 亚洲欧美日韩中文无线码 | 亚洲综合一区国产精品| 亚洲最大中文字幕无码网站| 亚洲砖码砖专无区2023| 亚洲av日韩综合一区久热| 亚洲av片一区二区三区| 亚洲日本va午夜中文字幕久久 | 亚洲国产精品专区| 在线综合亚洲中文精品| 亚洲另类自拍丝袜第五页| 自拍偷自拍亚洲精品偷一| 亚洲国产成人久久综合区| 三上悠亚亚洲一区高清| 亚洲精品国产品国语在线| 亚洲精品免费观看| 亚洲喷奶水中文字幕电影 | 亚洲乱码中文字幕久久孕妇黑人| 欧洲亚洲国产清在高| 亚洲资源在线观看| 精品日韩99亚洲的在线发布| 亚洲AV无码成人网站在线观看 | 亚洲国产精品日韩在线观看| 天堂亚洲国产中文在线| 亚洲av永久无码天堂网| 亚洲高清免费视频| 亚洲国产精品高清久久久| 亚洲欧洲日产国码二区首页|