機(jī)器學(xué)習(xí)與Python實踐課件 10TensorFlow基礎(chǔ)框架_第1頁
機(jī)器學(xué)習(xí)與Python實踐課件 10TensorFlow基礎(chǔ)框架_第2頁
機(jī)器學(xué)習(xí)與Python實踐課件 10TensorFlow基礎(chǔ)框架_第3頁
機(jī)器學(xué)習(xí)與Python實踐課件 10TensorFlow基礎(chǔ)框架_第4頁
機(jī)器學(xué)習(xí)與Python實踐課件 10TensorFlow基礎(chǔ)框架_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第十章

TensorFlow基礎(chǔ)框架機(jī)器學(xué)習(xí)主流框架TensorFlowTensorFlow是什么TensorFlow架構(gòu)TensorFlow基本使用TensorFlow機(jī)器學(xué)習(xí)例子---一元線性回歸TensorFlow

for

Android

Demo本章目錄主流機(jī)器學(xué)習(xí)框架庫名發(fā)布者支持語言支持系統(tǒng)TensorFlowGooglePython/C++/Java/GoPython/C++/MatlabPython/C++/BrainscriptPython/C++/Matlab/Julia/Go/R/ScalaLinux/Mac

OS/Android/iOSCaffeUC

BerkeleyLinux/Mac

OS/WindowsCNTKMicrosoftLinux/WindowsMXNetDMLC(分布式機(jī)器學(xué)習(xí)社區(qū))Linux/Mac

OS/Windows/Android/iOSTorchFacebookC/Lua/Linux/Mac

OS/Windows/Android/iOSTheano蒙特利爾大學(xué)PythonLinux/Mac

OS/WindowsNeonIntelPythonLinux主流機(jī)器學(xué)習(xí)框架TensorFlow★★★★★★★★★★★★★★★Caffe★★★★★★CNTK★★★★★★★★MXNet★★★★★★★★★★★★Torch★★★★★★★★★★★★★Theano★★★★★★★★★★Neon★★★★★★主流機(jī)器學(xué)習(xí)框架TensorFlow是什么?一個采用數(shù)據(jù)流圖(data

flow

graphs),用于數(shù)值計算的開源軟件庫。最初由Google大腦小組(隸屬于Google機(jī)器智能研究機(jī)構(gòu))的研究員和工程師們開發(fā)出來,用于機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)方面的研究。也廣泛用于其他計算領(lǐng)域。TensorFlow是什么?TensorFlow?是一個采用計算圖的形式表述數(shù)值計算的編程系統(tǒng),本身是一個開源軟件庫。TensorFlow計算圖中每一個節(jié)點表示一次數(shù)學(xué)計算,每一條邊表示計算之間的依賴關(guān)系。張量(tensor)是計算圖的基本數(shù)據(jù)結(jié)構(gòu),可以理解為多維數(shù)據(jù),流(Flow)表達(dá)了張量之間通過計算互相轉(zhuǎn)化的過程。它靈活的架構(gòu)可以在多種平臺上展開計算,例如臺式計算機(jī)中的一個或多個CPU(或GPU),服務(wù)器,移動設(shè)備等等。TensorFlow最初由Google大腦小組(隸屬于Google機(jī)器智能研究機(jī)構(gòu))的研究員和工程師們開發(fā)出來,用于機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)方面的研究,但這個系統(tǒng)的通用性使其也可廣泛用于其他計算領(lǐng)域。TensorFlow特性Python

API高度的靈活性

可移植性(Portability),Tensorflow在CPU和GPU上運行,比如可以運行在臺式機(jī)、服務(wù)器、手機(jī)移動設(shè)備等等。自動求微分性能最優(yōu)化龐大的社群支持TensorFlow架構(gòu)TensorFlow的系統(tǒng)結(jié)構(gòu)以C

API為界,將整個系統(tǒng)分為「前端」和「后端」兩個子系統(tǒng)前端系統(tǒng)(Front

End)

提供多語言編程環(huán)境,提供統(tǒng)一的編程模型支撐用戶構(gòu)造計算圖

通過Session的形式,連接TensorFlow后端的「運行時」,啟動計算圖的執(zhí)行過程后端系統(tǒng)(Exec

System)提供運行時環(huán)境,負(fù)責(zé)執(zhí)行計算圖安裝(Ubuntu

16.04

64bit)1、安裝Anaconda123官網(wǎng)下載對應(yīng)版本在下載目錄下執(zhí)行:bash

Anaconda3-4.4.0-Linux-x86_64.sh安裝Spyder

,sudo

apt

install

spyder2、安裝TensorFlow

CPU版本45方法一:pip

install

tensorflow方法二:下載源碼安裝(可對配置進(jìn)行修改)TensorFlow基本使用使用tensor表示數(shù)據(jù)通過變量(Variable)輸入訓(xùn)練數(shù)據(jù),維護(hù)狀態(tài)使用計算圖(computational

graph)來表示計算任務(wù)在會話(Session)的上下文(context)中執(zhí)行計算圖基本概念TensorFlow核心程序由2個獨立部分組成:a:Building

the

computational

graph構(gòu)建計算圖b:Running

the

computational

graph運行計算圖計算圖是一系列的TensorFlow操作排列成一個有向無環(huán)圖。TensorFlow基本使用---Tensor

Tensor是TensorFlow中的核心單元,TensorFlow程序使用tensor數(shù)據(jù)結(jié)構(gòu)來代表所

有的數(shù)據(jù),計算圖中,操作間傳遞的數(shù)據(jù)都是tensor.你可以把TensorFlow

tensor看作是一個n維的數(shù)組或列表,如同矩陣一樣導(dǎo)入tensorflowimport

tensorflow

as

tf使用Tensornode1

=

tf.constant(3.0,

tf.float32)node2

=

tf.constant([1.0,

2.0])

#

also

tf.float32

implicitlynode3

=

tf.constant(

[[1,

2],

[3,

4],

[5,

6]],

name="node3")print

node1,

"\n"

,node2,

"\n",node3Tensor("Const:0",

shape=(),

dtype=float32)Tensor("Const_1:0",

shape=(2,),

dtype=float32)Tensor(”node3:0",

shape=(3,

2),

dtype=int32)變量Variable當(dāng)訓(xùn)練模型時,用變量來存儲和更新參數(shù)。建模時它們需要被明確地初始化,當(dāng)創(chuàng)建一個變量時,你將一個張量作為初始值傳入構(gòu)造函數(shù)Variable()。TensorFlow提供了一系列操作符來初始化張量。weights

=

tf.Variable(tf.random_normal([2,3],

stddev

=

2),name="weights"這里生成2×3的矩陣,元素的均值為0,標(biāo)準(zhǔn)差為2(可用mean指定均值,默認(rèn)值為0)。隨機(jī)數(shù)生成函數(shù):tf.truncated_normal()正太分布,偏離平均值超過兩個偏差,重新選擇tf.random_uniform(最小值,最大值)

平均分布(控制字符中可加入種子,seed=n

)常數(shù)生成函數(shù):全零數(shù)組tf.zeros([2,3],int32)全一數(shù)組tf.ones()全為給定的某數(shù)(例如tf.cinstant([1,2,3])初始化方式with

tf.Session()

as

sess:sess.run(weights.initializer)init

=

tf.initialize_all_variables()with

tf.Session()

as

sess:sess.run(init)基本概念TensorFlow

的數(shù)據(jù)模型為tensor(張量),可簡單理解為類型化的多維數(shù)組。0維張量是一個數(shù)字,也叫標(biāo)量,s=11維張量稱為“向量”,v=[1,2,3]2維張量稱為矩陣,m=[[1,2,3],[4,5,6],[7,8,9]]n維......但和Numpy中的數(shù)組不同是,一個張量中主要保留了三個屬性:name,shape,typeimport

tensorflow

as

tfa

=

tf.constant([1,2,3])b

=

tf.constant([2,3,5])result

=

tf.add(a,b,

name

=

“add”)print(result)tensor(“add:0",

shape=(3,),dtype=int32)add:0

表示result這個張量是計算節(jié)點“add”輸出的第一個結(jié)果

shape=(3,)表示張量是一個一維數(shù)組,這個數(shù)組的長度是3dtype=int32是數(shù)據(jù)類型,TensorFlow會對參與運算的所有張量進(jìn)行類型的檢查,當(dāng)類型不匹配時會報錯。運行結(jié)果TensorFlow是什么?張量(Tensor)是一個物理量,對高維(維數(shù)≥2)的物理量進(jìn)行“量綱分析”的一種工具。簡單的可以理解為:一維數(shù)組稱為矢量,二維數(shù)組為二階張量,三維數(shù)組為三階張量…計算圖用“結(jié)點”(nodes)和“線”(edges)的有向圖來描述數(shù)學(xué)計算的圖像。“節(jié)點”一般用來表示施加的數(shù)學(xué)操作,但也可以表示數(shù)據(jù)輸入(feedin)的起點/輸出(pushout)的終點,或者是讀取/寫入持久變量(persistentvariable)的終點?!熬€”表示“節(jié)點”之間的輸入/輸出關(guān)系。這些數(shù)據(jù)“線”可以輸運“size可動態(tài)調(diào)整”的多維數(shù)據(jù)數(shù)組,即“張量”(tensor)基本概念TensorFlow

的計算模型為graph(計算圖),一個TensorFlow圖描述了計算的過程.為了進(jìn)行計算,圖必須在會話里被啟動.會話將圖的op(節(jié)點)分發(fā)到諸如CPU或

GPU之類的設(shè)備上,同時提供執(zhí)行op的方法.這些方法執(zhí)行后,將產(chǎn)生的tensor

返回.TensorFlow中的每一個計算都是圖上的一個節(jié)點,而節(jié)點之間的邊描述了計算之間的依賴關(guān)系基本概念TensorFlow

的運行模型為session(會話),通過會話來執(zhí)行計算圖,當(dāng)計算完TensorFlow使用會話的方式主要有如下兩種模式:sess=tf.Session()#創(chuàng)建一個會話sess.run(result)Sess.close()#運行此會話#運行完畢關(guān)閉此會話with

tf.Session()

as

sess:sess.run(result)#通過python的上下文管理器來使用會話,當(dāng)上下文退出時會話管理和資源釋放也自動完成Placeholder

&

Feed一個計算圖可以參數(shù)化的接收外部的輸入,作為一個placeholder(占位符),在計算時需要提供一個字典feed_dict來指定placeholder的取值。input1

=

tf.constant(3.0)input2

=

tf.constant(2.0)mul

=

tf.multiply(input1,

input2

)with

tf.Session()

as

sess:result

=

sess.run(mul)print(result)input1=tf.placeholder(tf.float32)#占位符

input2=tf.placeholder(tf.float32)output

=

tf.multiply(input1,

input2)with

tf.Session()

as

sess:print(sess.run(output,

feed_dict={input1:3.0,

input2:2.0}))運行結(jié)果:6.0運行結(jié)果:6.0TensorFlow基本使用---計算圖計算圖是用圖中節(jié)點呈現(xiàn)一系列操作的圖表。包括:構(gòu)建計算圖運行計算圖構(gòu)建簡單的計算圖,每個節(jié)點將零個或多個tensor作為輸入,產(chǎn)生一個tensor作為輸出。一個典型的節(jié)點為常量,他將被tensorflow內(nèi)部存儲起來:import

tensorflow

as

tfinput1

=

tf.constant([1.0,

2.0,

3.0],

name

=

"x_const")input2

=

tf.Variable([3.0,

4.0,

5.0],

name

=

"y_var")output

=

tf.add(input1,

input2,

name

="add_op")print

input1,

"\n",input2,

"\n",outputTensor("x_const:0",

shape=(3,),dtype=float32)<tf.Variable

"y_var:0"

shape=(3,)

dtype=float32_ref>Tensor("add_op:0",shape=(3,),

dtype=float32)TensorFlow基本使用---計算圖計算圖是用圖中節(jié)點呈現(xiàn)一系列操作的圖表。包括:構(gòu)建計算圖運行計算圖構(gòu)建的計算圖必須在tensorflow的session中才能運行:#

-*-coding:

utf-8

-*-import

tensorflow

as

tfinput1=tf.constant([1.0,2.0,3.0],name=“x_const”)#常量input2=tf.Variable([3.0,4.0,5.0],name=“y_var")#變量必須有初值

output=tf.add(input1,input2,name="add_op")sess=tf.Session()#運行計算圖之前創(chuàng)建session#調(diào)用sess的‘run()"方法來執(zhí)行矩陣乘法op,feed用來傳入變量數(shù)據(jù)

result=sess.run(output,feed_dict={input2:[6.0,6.0,6.0]})#返回值"result"是一個numpy

`ndarray`對象.print"result:",result,",type:",type(result)#任務(wù)完成,關(guān)閉會話.sess.close()result:

[

7.

8.

9.]

,type:<type

"numpy.ndarray">為什么使用計算圖(Graph)更加結(jié)構(gòu)化的體現(xiàn)計算過程很利于我們提取中間某些節(jié)點的結(jié)果。更重要的是,這個圖的結(jié)構(gòu)天生就是方便求導(dǎo)如果要求dJ/da就只要:dj/dv

*

dv/da=3*1;TensorFlow機(jī)器學(xué)習(xí)例子---一元線性回歸回歸分析–確定兩種或兩種以上變量間相互依賴的定量關(guān)系的一種統(tǒng)計分析方法。一元線性回歸只涉及一個自變量和一個應(yīng)變量應(yīng)變量與自變量呈線性關(guān)系

應(yīng)變量與自變量的關(guān)系可以用一個線性方程表示TensorFlow機(jī)器學(xué)習(xí)例子---一元線性回歸?TensorFlow機(jī)器學(xué)習(xí)例子---一元線性回歸100個散點樣本,求出回歸方程構(gòu)建計算圖TensorFlow機(jī)器學(xué)習(xí)例子---一元線性回歸100個散點樣本,求出回歸方程運行計算圖TensorFlow機(jī)器學(xué)習(xí)例子---一元線性回歸100個散點樣本,求出回歸方程TensorBoard查看計算圖TensorFlow訓(xùn)練神經(jīng)網(wǎng)絡(luò)三個步驟:(1)定義神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和前向傳播的輸出結(jié)果;定義損失函數(shù)以及選擇反向傳播優(yōu)化的算法;生成會話并且在訓(xùn)練數(shù)據(jù)上反復(fù)運行反向傳播優(yōu)化算法。神經(jīng)網(wǎng)絡(luò)·

基本結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)由大量神經(jīng)元組成。每個神經(jīng)元獲得線性組合的輸入,經(jīng)過非線性的激活函數(shù),然后得到非線性的輸出。神經(jīng)網(wǎng)絡(luò)· 激活函數(shù)線性模型的最大特點是任意線性模型的組合仍然是線性模型,只通過線性變換,任意層的全連接神經(jīng)網(wǎng)絡(luò)和單層神經(jīng)網(wǎng)絡(luò)沒有任何區(qū)別,因此非線性是深度學(xué)習(xí)的重要特性。目前TensorFlow提供了

7種不同的非線性激活函數(shù),常見的有:tf.nn.relu、tf.sigmoid和tf.tanhHard

ReLU:

g(x)=max(0,x)Noise

ReLU:

max(0,x+N(0,σ(x))該函數(shù)的導(dǎo)函數(shù):g(x)"=0或1ReLu(Rectified

Linear

Units)函數(shù)S形函數(shù)(Sigmoid

Function)函數(shù)表達(dá)式和導(dǎo)函數(shù)雙曲正切函數(shù)(tanh)tanh(x)=2sigmoid(2x)?1,但tanh是0均值的。函數(shù)表達(dá)式:神經(jīng)網(wǎng)絡(luò)·softmax用于多分類神經(jīng)網(wǎng)絡(luò)輸出,公式如下:就是如果某一個zj大過其他z,那這個映射的分量就逼近于1,其他就逼近于0,主要應(yīng)用就是多分類。為什么要取指數(shù)?第一個原因是要模擬max的行為,所以要讓大的更大。第二個原因是需要一個可導(dǎo)的函數(shù)。tensorflow:tf.nn.softmax()神經(jīng)網(wǎng)絡(luò)·優(yōu)化算法為:神經(jīng)網(wǎng)絡(luò)模型的效果和優(yōu)化的目標(biāo)是通過代價函數(shù)(lost

function),也稱損失函數(shù)來定義的。神經(jīng)網(wǎng)絡(luò)的優(yōu)化算法可以分為兩個階段,第一階段先通過前向傳播算法計算得到預(yù)測值,計算損失函數(shù)。然后在第二階段通過反向傳播算法計算損失函數(shù)對每一個參數(shù)的梯度,再根據(jù)梯度和學(xué)習(xí)率使用梯度下降算法更新每一個參數(shù)。代價函數(shù):cross_entropy=-tf.reduce_sum(y_

*

tf.log(y))#代價函數(shù)train_step=tf.train.GradientDescentOptimizer(1e-3).minimize(cross_entropy)#梯度下降法一些好玩的TensorFlow項目卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)圖片風(fēng)格轉(zhuǎn)變卷積神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)(Convolutional

NeuralNetwork,CNN)由三部分構(gòu)成。第一部分是輸入層。第二部分由n個卷積層和池化層的組合組成。第三部分由一個全連結(jié)的多層感知機(jī)分類器構(gòu)成。這一結(jié)構(gòu)使得卷積神經(jīng)網(wǎng)絡(luò)天然適合處理二維特征數(shù)據(jù)。卷積神經(jīng)網(wǎng)絡(luò)·

卷積層對圖像和濾波矩陣做內(nèi)積(逐個元素相乘再求和)的操作就是所謂的『卷積』操作,也是卷積神經(jīng)網(wǎng)絡(luò)的名字來源。卷積的主要目的是為了從輸入圖像中提取特征。卷積可以通過從輸入的一小塊數(shù)據(jù)中學(xué)到圖像的特征,并可以保留像素間的空間關(guān)系。filter_weight

=

tf.Variable(tf.truncated_normal(shape,

stddev=0.1))conv

=

tf.nn.conv2d(x,

filter_weight,

strides

=

[1,

2,

2,

1]

padding

=

‘SAME’)#第1個參數(shù)對應(yīng)一個輸入batch;第2個參數(shù)提供卷積層的權(quán)重;第3個參數(shù)為不同維度上的步長,其中第一維和最后一維一定為1,因為卷積層的步長只對矩陣的長和寬有效;最后一個是填充方式。卷積神經(jīng)網(wǎng)絡(luò)·

池化層池化,簡言之,即取區(qū)域平均或最大,如下圖所示:pool

=

tf.nn.avg_pool(x,

ksize=[1,

2,

2,

1],

strides=[1,

2,

2,

1],

padding="SAME")#參數(shù)和卷積函數(shù)類似最大池化:tf.nn.max_pool池化有兩種:一種是最大池化,在選中區(qū)域中找最大的值作為抽樣后的值;一種是平均值池化,把選中的區(qū)域中的平均值作為抽樣后的值。卷積神經(jīng)網(wǎng)絡(luò)·

dropoutDropout

在模型訓(xùn)練時按照一定的概率暫時讓網(wǎng)絡(luò)某些隱含層節(jié)點的權(quán)重不工作(也稱丟棄),作用是防止過擬合。TensorFlow中,可以用一個placeholder來代表dropout的概率。這樣我們可以在訓(xùn)練過程中啟用dropout,在測試過程中關(guān)閉dropout。實例代碼(片段)……h(huán)_fc1

=

tf.nn.relu(tf.matmul(h_pool2_flat,

W_fc1)

+

b_fc1)keep_prob

=

tf.placeholder("float")

h_fc1_drop

=

tf.nn.dropout(h_fc1,

keep_prob)……皮膚癌圖像分類最終相關(guān)成果發(fā)表在Nature,而且在Nature的封面,這是一個特別成功地通過計算機(jī)視覺及深度學(xué)習(xí)相關(guān)的技術(shù),利用廉價的移動設(shè)備,能夠很有效地檢測是否有皮膚癌,大大節(jié)省了醫(yī)療檢測的成本MNIST數(shù)字識別實例import

tensorflow

as

tfimport

tensorflow.examples.tutorials.mnist.input_data

as

input_datafrom

tensorflow.python.framework

import

graph_utilmnist=input_data.read_data_sets("MNIST_data",one_hot=True)#下載并加載mnist數(shù)據(jù)

x=tf.placeholder(tf.float32,[None,784],name="input")#輸入的數(shù)據(jù)占位符y_=tf.placeholder(tf.float32,shape=[None,10])#輸入的標(biāo)簽占位符#定義一個函數(shù),用于初始化所有的權(quán)值Wdef

weight_variable(shape):initial

=

tf.truncated_normal(shape,

stddev=0.1)return

tf.Variable(initial)#定義一個函數(shù),用于初始化所有的偏置項bdef

bias_variable(shape):initial

=

tf.constant(0.1,

shape=shape)return

tf.Variable(initial)#定義一個函數(shù),用于構(gòu)建卷積層def

conv2d(x,W):return

tf.nn.conv2d(x,

W,

strides=[1,

1,

1,

1],

padding="SAME")#定義一個函數(shù),用于構(gòu)建池化層def

max_pool(x):return

tf.nn.max_pool(x,

ksize=[1,

2,

2,

1],

strides=[1,

2,

2,

1],

padding="SAME")#構(gòu)建網(wǎng)絡(luò)x_image=tf.reshape(x,[-1,28,28,1])#轉(zhuǎn)換輸入數(shù)據(jù)shape,以便于用于網(wǎng)絡(luò)中W_conv1=weight_variable([5,5,1,32])b_conv1=bias_variable([32])

h_conv1=tf.nn.relu(conv2d(x_image,W_conv1)+b_conv1)#第一個卷積層g(w*x+b)h_pool1=max_pool(h_conv1)#第一個池化層W_conv2

=

weight_variable([5,

5,

32,

64])b_conv2

=

bias_variable([64])h_conv2=tf.nn.relu(conv2d(h_pool1,W_conv2)+b_conv2)#第二個卷積層h_pool2=max_pool(h_conv2)#第二個池化層W_fc1

=

weight_variable([7

*

7

*

64,

1024])b_fc1

=

bias_variable([1024])h_pool2_flat=tf.reshape(h_pool2,[-1,7

*

7

*

64])#reshape成向量

h_fc1=tf.nn.relu(tf.matmul(h_pool2_flat,W_fc1)+b_fc1)#第一個全連接層keep_prob=tf.placeholder("float",name="keep_prob")h_fc1_drop=tf.nn.dropout(h_fc1,keep_prob)#dropout層W_fc2

=

weight_variable([1024,

10])b_fc2

=

bias_variable([10])y=tf.nn.softmax(tf.matmul(h_fc1_drop,W_fc2)+b_fc2,name="y")#softmax層cross_entropy=-tf.reduce_sum(y_

*

tf.log(y))#交叉熵

train_step=tf.train.GradientDescentOptimizer(1e-3).minimize(cross_entropy)#梯度下降法correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(y_,1))

accuracy=tf.reduce_mean(tf.c

溫馨提示

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

最新文檔

評論

0/150

提交評論