版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《深度學(xué)習(xí)入門
—
基于
Python
的實(shí)現(xiàn)》(吳喜之
張敏)從最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)說(shuō)起張敏October15,
2024October15,
20241
/
35張敏紀(jì)元和批次October15,
20242
/
35張敏神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,
通常需要進(jìn)行迭代,
而每次迭代都通過(guò)誤差梯度等特性來(lái)更新原有的參數(shù),
以改進(jìn)擬合.
但需要考慮訓(xùn)練模型時(shí)要用多少次整個(gè)訓(xùn)練集及每一次迭代需要用多少觀測(cè)值.
產(chǎn)生了紀(jì)元
(epoch)1和批/批次/批處理
(batch)
的概念.1術(shù)語(yǔ)
epoch
可以翻譯成常用詞
“時(shí)代”
或
“時(shí)期”,
這里用紀(jì)元主要是避免使用常用詞做專門術(shù)語(yǔ).October15,
20243
/
35張敏在通常統(tǒng)計(jì)課程中的樣本量(sample
size)
概念就是數(shù)據(jù)中全部觀測(cè)值的數(shù)量,
而把全部訓(xùn)練集數(shù)據(jù)用來(lái)訓(xùn)練模型在深度學(xué)習(xí)中則稱為一個(gè)紀(jì)元,
這是因?yàn)樵谏疃葘W(xué)習(xí)中往往需要用整個(gè)訓(xùn)練集數(shù)據(jù)來(lái)訓(xùn)練模型多次
(訓(xùn)練幾次就稱幾個(gè)紀(jì)元).由于無(wú)法在每個(gè)紀(jì)元的訓(xùn)練中一次將所有數(shù)據(jù)傳遞給計(jì)算機(jī),因此,
需要將整個(gè)訓(xùn)練集數(shù)據(jù)分成較小尺寸
(patch
size)
的批次,
逐個(gè)提供給計(jì)算機(jī),
并在每一步結(jié)束時(shí)更新神經(jīng)網(wǎng)絡(luò)的權(quán)重以使預(yù)測(cè)接近給定的目標(biāo)值.22在統(tǒng)計(jì)中稱為觀測(cè)值的是一行數(shù)據(jù),
是許多變量
(variable)
的觀測(cè)值組成的向量,
英文是
observation,
而稱一個(gè)數(shù)據(jù)集為樣本
(sample);
但是在計(jì)算機(jī)領(lǐng)域往往稱變量為特征
(feature),
觀測(cè)值為樣品或樣本
(sample),
也稱為實(shí)例
(instance)、觀測(cè)(observation)、輸入向量
(input
vector)
或特征向量
(
feature
vector).October15,
20244
/
35張敏紀(jì)元的數(shù)量很大,
可能為數(shù)百或數(shù)千,
這使得學(xué)習(xí)算法可以運(yùn)行,
直到將模型中的誤差充分最小化為止.
在一些文獻(xiàn)中可以看到紀(jì)元數(shù)目設(shè)置為
10、100、500、1000
和更大的示例.
為什么使用多個(gè)紀(jì)元呢?
這是因?yàn)槲覀兪褂玫氖怯邢薜臄?shù)據(jù)集,為了優(yōu)化由迭代積攢的學(xué)習(xí)效果,
僅通過(guò)一次或一次更新權(quán)重不夠,
需要將完整的數(shù)據(jù)集多次傳遞到同一個(gè)神經(jīng)網(wǎng)絡(luò).October15,
20245
/
35張敏當(dāng)所有訓(xùn)練樣本都用于創(chuàng)建一個(gè)批次時(shí),
該學(xué)習(xí)算法稱為批次梯度下降(batch
gradient
descent);
當(dāng)批次等于一個(gè)樣本的大小時(shí),
該學(xué)習(xí)算法稱為隨機(jī)梯度下降(stochastic
gradientdescent);
當(dāng)批次大小大于一個(gè)樣本且小于訓(xùn)練數(shù)據(jù)集的大小時(shí),
該學(xué)習(xí)算法稱為微型批次梯度下降(mini-batch
gradientdescent).October15,
20246
/
35張敏在小批量梯度下降的情況下,
常用的批量大小包括
32、64
和128
個(gè)樣本.
如果數(shù)據(jù)集沒(méi)有按批次大小平均劃分怎么辦?
在訓(xùn)練模型時(shí),
這種情況可能而且確實(shí)經(jīng)常發(fā)生.
這僅表示最終批次的樣品少于其他批次,
或者可以從數(shù)據(jù)集中刪除一些樣本或更改批次大小,
以使數(shù)據(jù)集中的樣本數(shù)量確實(shí)等于樣本量除以批次大小.October15,
20247
/
35張敏批次數(shù)目及紀(jì)元數(shù)目都是整數(shù)值,
是學(xué)習(xí)算法的超參數(shù),
而不是學(xué)習(xí)過(guò)程發(fā)現(xiàn)的內(nèi)部模型參數(shù).
為學(xué)習(xí)算法指定批處理大小和紀(jì)元數(shù)是必須的.
但如何配置這些參數(shù)則沒(méi)有規(guī)則,
必須嘗試不同的值,
以適合具體課題.October15,
20248
/
35張敏神經(jīng)網(wǎng)絡(luò)回歸October15,
20249
/
35張敏Example
1(sim0.csv)
這個(gè)數(shù)據(jù)有一個(gè)因變量,
三個(gè)自變量,
樣本量為
20.我們希望能夠找到一個(gè)用自變量來(lái)描述或預(yù)測(cè)因變量的模型.圖1為該數(shù)據(jù)的成對(duì)散點(diǎn)圖.October15,
202410
/
35張敏圖
1:
例1數(shù)據(jù)的成對(duì)散點(diǎn)圖October15,
202411
/
35張敏該數(shù)據(jù)因變量和自變量
(包括常數(shù)項(xiàng))
的關(guān)系可以用圖2來(lái)表示,
β
=
(β0,
β1,
β2,
β3)
可以看成是回歸系數(shù).圖
2:
例1數(shù)據(jù)因變量和自變量在線性回歸中的關(guān)系October15,
202412
/
35張敏線性最小二乘回歸對(duì)于線性模型i
=
1,
2,
.
.
.
,
nyi=β0+β1Xi1+β2Xi2+β3Xi3+
?i,或
(等價(jià)的矩陣形式)y=Xβ
+?October15,
202413
/
35張敏最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)類似于關(guān)于線性回歸的圖2,
圖3描述了最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò).圖
3:
例1數(shù)據(jù)因變量和自變量在神經(jīng)網(wǎng)絡(luò)中的關(guān)系October15,
202414
/
35張敏圖3中上面一層被稱為輸入層(input
layer),
其中的節(jié)點(diǎn)代表了3
個(gè)輸入節(jié)點(diǎn)及一個(gè)常數(shù)項(xiàng),
下面一層只有一個(gè)節(jié)點(diǎn)
(因?yàn)橹挥幸粋€(gè)因變量),
稱為輸出層(output
layer).
我們也要估計(jì)出相應(yīng)的權(quán)重
(w
=
(w0,
w1,
w2,
w3))
來(lái)形成線性組合0w +∑3i=1wiXi
=
w0
+
w1X1
+
w2X2
+
w3X3,
但是,
我們不是簡(jiǎn)單地用這個(gè)線性組合來(lái)近似因變量,
而是通過(guò)該線性組合的一個(gè)稱為激活函數(shù)(activation
function)
的函數(shù)0σ(w
+∑3i=1wiXi)
來(lái)近似因變量.October15,
202415
/
35張敏0這就是和前面線性回歸中簡(jiǎn)單地用線性組合
β
+∑3i=1βiXi來(lái)近似因變量的根本區(qū)別.
激活函數(shù)使得自變量和因變量之間的關(guān)系從單純的線性關(guān)系中解放出來(lái),
因此神經(jīng)網(wǎng)絡(luò)可以解決非常復(fù)雜的非線性問(wèn)題.October15,
202416
/
35張敏下面是激活函數(shù)的某些常用的選擇:σ(x)
=11+
e?x,σ(x)=tanh(x),σ(x)=max(0,
x).這三種激活函數(shù)的頭兩個(gè)稱為
S
型函數(shù)
(sigmoid):
第
1
個(gè)是logistic
函數(shù),
第
2
個(gè)是雙曲正切,
第
3
個(gè)稱為
ReLU
函數(shù)(rectified
linear
unit).
這三種激活函數(shù)的圖顯示在圖4中.October15,
202417
/
35張敏此外,
還有一種激活函數(shù)稱為
softmax,
它把一個(gè)描述記分的向量轉(zhuǎn)換成總和為
1
的概率向量,
該向量表示潛在結(jié)果列表的概率分布.σ(yi)
=eyi∑jeyj.上述激活函數(shù)有很多變種.
此外,
人們針對(duì)不同的目標(biāo)發(fā)明了大量其他類型的激活函數(shù),
這里不做過(guò)多介紹.October15,
202418
/
35張敏由于激活函數(shù)改變了值域,
因此激活函數(shù)用在輸出層時(shí)
(在隱藏層的激活函數(shù)不會(huì)對(duì)輸出層的值域有影響),
可能需要對(duì)因變量數(shù)據(jù)做變換,
比如,
在用
S
型激活函數(shù)時(shí),
值域在
0
和
1之間,
這時(shí)相應(yīng)的值也要變換到相應(yīng)的值域,
否則不會(huì)得到合理的結(jié)果.October15,
202419
/
35張敏神經(jīng)網(wǎng)絡(luò)是如何學(xué)習(xí)的首先,
調(diào)試權(quán)重有一個(gè)標(biāo)準(zhǔn),
也就是要給出一個(gè)損失函數(shù),
我們的迭代是以減少損失為目標(biāo)的.
這里的損失假定是平方損失
(如最小二乘法的損失函數(shù)):
∥y?
?
y∥2.
此外,
對(duì)于例1,
我們?nèi)〖せ詈瘮?shù)為
σ(x)
=
1/(1
+
exp(?x)).
在迭代之前,
需要給出一個(gè)初始權(quán)重值
(可以是隨機(jī)的).
后面從第
i
步開(kāi)展的具體步驟為:October15,
202420
/
35張敏前向傳播
(forward
propagation):
在某一步得到權(quán)重
W,并根據(jù)權(quán)重得到對(duì)因變量
y的一個(gè)估計(jì)值
y?
=
σ(XW)及損失
∥y
?
y?∥2.求梯度:
通過(guò)偏導(dǎo)數(shù)的鏈原理,
我們得到損失函數(shù)相對(duì)于權(quán)重的偏導(dǎo)數(shù)為:?W ?y??∥y
?
y?∥2 ?∥y
?
y?∥2
?σ(XW)
?XW?XW
?W= .October15,
202421
/
35張敏由于?∥y?
y?∥2=?2(y?
y?),?y??σ(XW)?XW=
σ(XW)
⊙
[1
?
σ(XW)]
,?XW?W=
X,(2.1)(2.2)(2.3)October15,
202422
/
35張敏得到偏導(dǎo)數(shù)為
(符號(hào)
“⊙”
是矩陣
(向量)
或同維度數(shù)組元素對(duì)元素的積,
也稱為
Hadamard
積
(Hadamard
Product))3:?loss
=?∥y?
y?∥2?W?=
?2X {(y
?
y?)
⊙
σ(XW)
⊙
[1
?
σ(XW)]}
.3如果
A
=
(aij)
及
B
=
(bij)都是
m
×
n
矩陣,
則這兩個(gè)矩陣的
Hadamard
積表示為A
⊙
B
也是
m
×
n
矩陣,
其元素為相應(yīng)元素的乘積:
A
⊙
B
=
(aijbij).October15,
202423
/
35張敏3
利用梯度下降法
(gradient
descent)
做反向傳播(backpropagation):
對(duì)權(quán)重的修正賦值為:W
?
W
?
α
⊙
?loss.(2.4)然后回到步驟
1,
繼續(xù)重復(fù)上述步驟,
直到誤差小到預(yù)定的范圍或者達(dá)到一定的迭代次數(shù)為止.October15,
202424
/
35張敏下面對(duì)于上面的式
(2.2)
和式
(2.4)
做出解釋.
式
(2.2)
其實(shí)就是簡(jiǎn)單的對(duì)
σ(x)
=
1/(1
+
exp(?x))
的導(dǎo)數(shù),
即′o(x)
=
exp(?x)
exp(?x)
exp(?x) [1
+
exp(?x)]2 1
+
exp(?x) 1+
exp(?x)[ ]= 1
? =
σ(x)[1為了解釋涉及梯度下降法的式
(2.4),
我們考慮某一維權(quán)重(w)
和誤差損失的關(guān)系圖
(見(jiàn)圖5).
人們希望改變權(quán)重以達(dá)到減少誤差損失的目的.
在圖5中間,
誤差損失達(dá)到極小值.October15,
202425
/
35張敏假定目前的
w0
的誤差在圖中左邊用
“0”
標(biāo)記的圓圈形狀的點(diǎn)表示,
這時(shí)誤差變化最大的方向是箭頭標(biāo)明的切線
(梯度)方向,
該梯度的方向是曲線在相應(yīng)點(diǎn)的導(dǎo)數(shù)
(斜率)
方向,
其
?
?wloss old值可記為 Error
或者
?
.
于是權(quán)重從原先的值
w
改變到新的值
wnew:wnew=wold?α
⊙?loss,(2.5)這里
α
是個(gè)調(diào)節(jié)步長(zhǎng)的正常數(shù).
那么,
為什么式中是減號(hào)呢?October15,
202426
/
35張敏從圖5中可以直觀看出,
左邊的導(dǎo)數(shù)為負(fù),
即
?loss
<
0,
而
w應(yīng)該增加,
在右邊導(dǎo)數(shù)為正,
而
w
應(yīng)該減少,
所以上式應(yīng)該是減號(hào).
如此,
從點(diǎn)
“0”
變化到點(diǎn)
“1”,再變化到點(diǎn)
“2”,等等,
如此下去,
越接近極小值,
斜率數(shù)值逐漸減小,
調(diào)整的步伐也相對(duì)越小,
直到誤差在極小值的某認(rèn)可的小鄰域之內(nèi).October15,
202427
/
35張敏?4?2024051015wErrorw01w12w23w300w01w12w23w3圖
5:
梯度下降法示意圖October15,
202428
/
35張敏神經(jīng)網(wǎng)絡(luò)分類October15,
202429
/
35張敏原理及簡(jiǎn)單二分類神經(jīng)網(wǎng)絡(luò)分類的原理和回歸完全一樣.
僅有的區(qū)別是輸出會(huì)有多個(gè)節(jié)點(diǎn).
如果因變量只有
(諸如
“成功”
和
“失敗”)
兩類,通常用啞元
1
和
0
表示,
那么只有一個(gè)節(jié)點(diǎn)就夠了,
通常輸出的值接近
1
或接近
0
則判別為
1
或
0.
如果因變量有
k
類,
則通常用
k
列啞元變量代替.October15,
202430
/
35張敏Example
2(sim1.csv)
這個(gè)數(shù)據(jù)有一個(gè)因變量
(0
和
1
兩類),
4
個(gè)自變量(都是
0/1
啞元變量).
樣本量為
6.
我們希望能夠找到一個(gè)用自變量來(lái)預(yù)測(cè)因變量類型的模型.October15,
202431
/
35張敏importnumpyasnpdef
Logit(x,d=False):if(d==True):returnx*(1-x)#np.exp(-x)/(1+np.exp(-x))**2#return
1/(1+np.exp(-x))np.random.seed(1010)w=np.random.random((X.shape[1],1))alpha=0.5L=[]
#記錄誤判率k=50
#最多迭代次數(shù)foriterin
range(k):#
前向傳播sigma_x
=
Logit(np.dot(X,w),False)
#激活函數(shù)resid=y-sigma_x
#誤差#計(jì)算梯度D=resid*
Logit(sigma_x,True)w
+=
alpha*np.dot(X.T,D)
#更新權(quán)重L.append(np.sum(resid**2))#輸出def
accu():yhat=[]forsin
sigma_x:ifs>0.5:yhat.append(1)else:
yhat.append(0)return
(yhat,np.mean(yhat==y.flatten()))yhat,r=accu()print("Output:\n{},\nprediction:\n{}\nOriginal
y=\n{}\nAccuracy={}"\.format(sigma_x.flatten(),yhat,y.flatten(),r))print('weights:\n{}'.format(w))October15,
202432
/
35張敏輸出為:Output:[0.101355510.192055110.830972170.835900480.95690312
0.18660617],prediction:[0,0,1,1,1,
0]Originaly=[00111
0]Accuracy=1.0weights:[[
3.08876206][
0.03274647][-1.48276799][-0.71465412]]輸出的原本不是整數(shù),
這里通過(guò)函數(shù)
accu()以
0.5
作為閾值來(lái)判別其為
0
還是
1(在實(shí)際應(yīng)用中,
0.5
并不一定是個(gè)合理的閾值).October15,
202433
/
35張敏多分類問(wèn)題如果因變量是多分類變量,
首先需要對(duì)因變量做啞元化,
因此,
我們?cè)诶?人造數(shù)據(jù)上添加一列
3
而成為因變量有
3
個(gè)水平的數(shù)據(jù).October15,
202434
/
35張敏多分類問(wèn)題輸出為:Output:[[0.783743470.185015250.1600475
][0.318984030.16515364
0.61361595][0.327000410.78848628
0.03514147][0.291833190.48909864
0.11623587][0.42732670.55411759
0.23021898][0.355779310.43513412
0.30544672]],prediction:[[1,
0,
0,
0,
0,
0],
[0,
0,
1,
0,
1,
0],
[0,
1,
0,
0,
0,
0]]Original
y=[10001100110001000
0]Accuracy=0.7777777777777778weights:[[-0.124118431.58977588
-2.51807154][-0.15944514-1.37544398
1.30346546][-0.602361 -0.25827461
-0.82541316][1.89967374-1.23574585
-0.84713896]]October15,
202435
/
35張敏《深度學(xué)習(xí)入門
—
基于
Python
的實(shí)現(xiàn)》(吳喜之
張敏)有隱藏層的神經(jīng)網(wǎng)絡(luò)張敏October15,
2024October15,
20241
/
14張敏一個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)October15,
20242
/
14張敏圖1由輸入層
(4
個(gè)節(jié)點(diǎn))、一個(gè)隱藏層
(5
個(gè)節(jié)點(diǎn))
及輸出層(1
個(gè)節(jié)點(diǎn))組成.
圖中最上面的是輸入層
(input
layer),
中間是隱藏層
(hidden
layer),
最下面是輸出層
(output
layer).I1H1H2H3H4H5OI2I3I4October15,
20243
/
14張敏符號(hào)定義記
L
為總層數(shù)
(包括隱藏層和輸出層),
而每一層節(jié)點(diǎn)數(shù)為
n?
(?
=
1,
2,
.
.
.
,
L),
對(duì)于圖1的模型,n1=4,n2=5,n3=
1.數(shù)據(jù)自變量
X
為
N
×
K
維,
因變量
y
為
N
×
M
維,
對(duì)于圖1的模型,
K
=
4,
M
=1.記激活函數(shù)為
σ(),
為了方便,
假定各個(gè)節(jié)點(diǎn)使用同樣的激活函數(shù).( )(i)
(i?1)
(i?1)
(1)
(L)記第
i
(i
>
1)
層節(jié)點(diǎn)的輸出為
H =
σ
H W ,
而定義
H =
X,
H =
y?,
對(duì)于圖1的模型,
L
=
3,
即
y?
=
H(3).記
Z(i)
=
H(i?1)W(i?1)
(i
>
1),
因此,
上面的
H(i)
=
σ
(H(i?1)W(i?1))
=
σ
(Z(i))
.記權(quán)重矩陣排序從形成第一個(gè)隱藏層
(第
2
層)
的權(quán)重
W(1)
開(kāi)始,
記為
{W(i)},
最后一個(gè)權(quán)重為{W(L?1)}.
在需要時(shí)
(比如當(dāng)
{X}
有常數(shù)項(xiàng)時(shí)),
各個(gè)權(quán)重可以包括也稱為偏差
(bias)
的截距項(xiàng).W(i)
的維數(shù)為
ni
×
ni+1.
這里的
ni
和
ni+1
為該層和下一層的節(jié)點(diǎn)數(shù).
對(duì)于圖1的模型,
有
W(1)的維數(shù)為
4
×
5,
W(2)
的維數(shù)為
5
×
1.October15,
20244
/
14張敏I1H1I2I3I4I1H2I2I3I4I1H3I2I3I4I1H4I2I3I4I1H5I2I3I4H1OH2H3H4H5圖
2:
有一個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)為若干簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)的組合October15,
20245
/
14張敏前向傳播從輸入層到隱藏層的傳播:H(2)
=
σ
(Z(2))
=
σ
(H(1)W(1))
=
σ
(XW(1))
.從隱藏層到輸出層的傳播:y?
=
H(3)
=
σ
(Z(3))
=
σ
(H(2)W(2))
.因此,
從輸入層到輸出層的前向傳播為:y?
=
H
=
σ
Z(3) (3)(2) (2)( ) ( )=
σ
H
W
=
σ
σ
Z(2)(2)W =
σ
σ[ ( )
] [ ((1.1)October15,
20246
/
14張敏反向傳播這里需要一個(gè)損失函數(shù),
假定為平方損失,
即
C(y,
y?)
=
∥y
?
y?∥2.
回顧對(duì)作為復(fù)合函數(shù)的損失函數(shù)對(duì)
W(2)
和
W(1)
分別做偏導(dǎo)數(shù)的鏈原理,
我們得到損失函數(shù)對(duì)各個(gè)階段權(quán)重的導(dǎo)數(shù)
(梯度)(下面符號(hào)中的
σ˙(Z)
=
?σ(Z)/?Z):?2
=(2)=?C(y,
y?)
?C(y,
y?)?W?y??σ
Z(3)( )?Z(3)?H W(2) (2)?W(2)=
?2(H(2))?
[(y
?
y?)
⊙
σ˙(Z(3))]
;(1.2)?1
=?C(y,
y?)?W(1)=?C(y,
y?)?y??Z(3)?σ
Z ?σ
Z(3) (2)( ) ( )?Z(2)W(2)?XW(1)?W(1)=
?2X?({[(y?
y](3) (2)
??)
⊙
σ˙
(Z
)
(W
)
⊙
σ˙
Z(2)} ( )).(1.3)并據(jù)此進(jìn)行權(quán)重修正:(2)new(2)old2W =
W ?α?
;(1)new(1)old1W =
W ?α?
.(1.4)October15,
20247
/
14張敏多個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)October15,
20248
/
14張敏多個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)和只有一個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)從本質(zhì)上沒(méi)有什么區(qū)別,
下面的公式使用前一節(jié)的符號(hào)系統(tǒng).
我們還是考慮完全的神經(jīng)網(wǎng)絡(luò),
而且假定每層使用相同的激活函數(shù)(雖然不同層可能用不同的激活函數(shù)).根據(jù)前面一節(jié)的符號(hào)系統(tǒng),
如果有
L
層,
這包括了輸入及輸出層,
那么隱藏層的層數(shù)為
L
?
2,
和前面一樣,
記
H(1)
=
X,H(L)=
y?.October15,
20249
/
14張敏前向傳播前向傳播公式為:H(i)
=
σ(i)
(Z(i))
=
σ(i)
(H(i?1)W(i?1))
,
i
=
2,
3,
.
.
.
,
L.(2.1)October15,
202410
/
14張敏反向傳播記損失函數(shù)為
C(y?)
(根據(jù)式
(2.1),
作為復(fù)合函數(shù),
它也是W(i)
(i
=
L
?
1,
L
?
2,
.
.
.
,
1)
的函數(shù));
記第
i
層
(i
=
2,
3,
.
.
.
,
L)
的激活函數(shù)為
σ(i)(Z(i)).
使用下面的偏導(dǎo)數(shù)記號(hào):C˙
=
?C(y?);(i)σ˙
=?y??σ(i)(Z(i))?Z(i).(2.2)關(guān)于公式中矩陣的維數(shù),
如前面的記號(hào)
n?
(?
=
1,
2,
.
.
.
,
L)
為各層的節(jié)點(diǎn)數(shù)目,
則有:N×K
N×K
N×M=
X ;
HL
= y?N×MN×ni
N×nini×ni+1 N×ni?1
ni?1×niH1 ;
H(i)
; W(i);Z(i)=H(i?1)W(i?1)
;C˙N×M
N×ni;σ˙(i)
.(2.3)October15,
202411
/
14張敏通過(guò)
PyTorch
實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)初等計(jì)算October15,
202412
/
14張敏PyTorch
和
NumPy
的相似性在
PyTorch
中
(在
import
torch之后),
可找到和
NumPy(在
import
numpy
as
np之后)
的許多相似之處,
下面是幾個(gè)矩陣運(yùn)算例子.
這里假定下面的
torch對(duì)象為
tensor,而
numpy的對(duì)象為
np.array.產(chǎn)生標(biāo)準(zhǔn)正態(tài)隨機(jī)數(shù)組:
PyTorch
用代碼
torch.randn(2,3),
而
NumPy
用代碼np.random.randn(2,3).矩陣相乘:
PyTorch
torch.tensor矩陣
A1和
B1矩陣相乘為
A1.mm(B1)或者A1
@
B1,
而
NumPy
np.array矩陣
A和
B相乘為
A.dot(B).矩陣的轉(zhuǎn)置:
torch.tensor矩陣
A1的轉(zhuǎn)置為
A1.t(),
而
np.array矩陣
A的轉(zhuǎn)置為
A.T.逐個(gè)元素的冪:
torch.tensor矩陣
A1的
a次冪為
A1.pow(a),
而np.array矩陣A的
a次冪為
A**a.在
PyTorch
中關(guān)于元素對(duì)元素相乘
(“*”)、張量
(數(shù)組)維度
(“.shape”)
等大量代碼幾乎和
NumPy
毫無(wú)區(qū)別.October15,
202413
/
14張敏PyTorch
作為深度學(xué)習(xí)軟件的獨(dú)特性利用
PyTorch
自帶的激活函數(shù)自定義有
autograd
功能的激活函數(shù)October15,
202414
/
14張敏《深度學(xué)習(xí)入門
—
基于
Python
的實(shí)現(xiàn)》(吳喜之
張敏)神經(jīng)網(wǎng)絡(luò)的
PyTorch
逐步深化張敏October15,
2024October15,
20241
/
41張敏簡(jiǎn)單的人造數(shù)據(jù)回歸October15,
20242
/
41張敏Example
1(cosdf.csv)
該數(shù)據(jù)為一段加了隨機(jī)干擾的余弦曲線.
自變量為在區(qū)間
[?6,
6]
包含
1000
個(gè)數(shù)目的等距數(shù)列,
另外還包含了一列常數(shù)
1,
因變量為自變量的余弦加上標(biāo)準(zhǔn)正態(tài)的干擾.
讀入該數(shù)據(jù)并轉(zhuǎn)換成
tensor形式的代碼為
(由于我們的程序基于矩陣運(yùn)算,
因此張量都定義成兩維的):importpandasaspdimportnumpyas
npdf=pd.read_csv('cosdf.csv',
sep=',',header=None)x=np.array(df.iloc[:,:-1])y=np.array(df.iloc[:,-1])x=torch.from_numpy(x).type(torch.FloatTensor)y=torch.from_numpy(y.reshape(-1,1)).type(torch.FloatTensor)October15,
20243
/
41張敏import
torchfromtorchimportautograd,nnlrelu=
nn.LeakyReLU()dtype=
torch.floatdevice=
torch.device("cpu")N,
D_in=x.shape
#N是樣本量,D_in
是自變量維數(shù)H1=200
#第1個(gè)隱藏層節(jié)點(diǎn)個(gè)數(shù)H2=100
#第2個(gè)隱藏層節(jié)點(diǎn)個(gè)數(shù)D_out=1
#因變量的維數(shù)w1
=torch.randn(D_in,H1,device=device,dtype=dtype,
requires_grad=True)w2
=torch.randn(H1,H2,device=device,dtype=dtype,
requires_grad=True)w3
=torch.randn(H2,D_out,device=device,dtype=dtype,requires_grad=True)learning_rate=
1e-7fortin
range(10000):y_pred=lrelu(torch.sigmoid(x.mm(w1)).mm(w2)).mm(w3)loss=(y_pred-
y).pow(2).sum()loss.backward()with
torch.no_grad():w1
-=learning_rate*w1.gradw2
-=learning_rate*w2.gradw3
-=learning_rate*
w3.grad#
更新權(quán)重后手工把梯度置0w1.grad.zero_()w2.grad.zero_()w3.grad.zero_()October15,
20244
/
41張敏得到的結(jié)果可以和原來(lái)的數(shù)據(jù)點(diǎn)出圖來(lái)
(見(jiàn)圖1).圖
1:
例1的原數(shù)據(jù)散點(diǎn)圖及擬合曲線圖October15,
20245
/
41張敏若干改進(jìn)的余地前向傳播必須寫出
lrelu(torch.sigmoid(x.mm(w1)).mm(w2)).mm(w3)這樣的公式.
這種“線性組合
?
激活函數(shù)
?
線性組合
?
激活函數(shù)
?
線性組合”的模型能不能以更加方便及可以再使用的方式表示呢?必須逐個(gè)定義線性組合部分的權(quán)重函數(shù),
并且在每次訓(xùn)練之后逐個(gè)更新,
這能不能簡(jiǎn)化一些呢?損失函數(shù)也是以公式形式給出,
有沒(méi)有更加方便的方式來(lái)給出各種損失函數(shù)呢?在權(quán)重標(biāo)明
requires_grad=True省了我們?yōu)榉聪騻鞑ビ?jì)算偏導(dǎo)數(shù)的部分,
但在更新權(quán)重時(shí)顯然采取了梯度下降法.
能不能用更好的方法
(比如優(yōu)于梯度下降法的改進(jìn)型)
來(lái)做優(yōu)化呢?
能不能更加精確地調(diào)整這些優(yōu)化方法呢?October15,
20246
/
41張敏改進(jìn)
PyTorch
神經(jīng)網(wǎng)絡(luò)模型改進(jìn)模型描述改進(jìn)損失函數(shù)的確定確定優(yōu)化方法改進(jìn)的程序自定義模型October15,
20247
/
41張敏MNIST
手寫數(shù)字?jǐn)?shù)據(jù)神經(jīng)網(wǎng)絡(luò)案例October15,
20248
/
41張敏Example
2下面提供
3
種形式數(shù)據(jù)文件
(5
個(gè)文件),
除了第一個(gè)
(第一行)
之外分別為
2
個(gè)文件
(第三行)一組和
4
個(gè)文件一組
(最后兩行):mnist.pklMNIST_images.csv,
MNIST_labels.csvtrain-images-idx3-ubyte.gz,train-labels-idx1-ubyte.gzt10k-images-idx3-ubyte.gz,
t10k-labels-idx1-ubyte.gzMNIST
數(shù)據(jù)庫(kù)a為包含了手寫數(shù)字?jǐn)?shù)據(jù)的一個(gè)大型庫(kù),
被廣泛用于訓(xùn)練各種圖像處理系統(tǒng).
它是通過(guò)重新混合
NIST
原始數(shù)據(jù)集的樣本而創(chuàng)建的,
對(duì)來(lái)自
NIST
的黑白圖像進(jìn)行了標(biāo)準(zhǔn)化處理,
以適合
28
×
28
像素的邊界框,
并進(jìn)行抗鋸齒處理,
從而引入了灰度等級(jí).
MNIST
手寫數(shù)字?jǐn)?shù)據(jù)庫(kù)包含
60000
張訓(xùn)練圖像和
10000
張測(cè)試圖像.
該數(shù)據(jù)有很多下載方式,
也有很多不同形式的數(shù)據(jù)文件.
數(shù)據(jù)中的每個(gè)觀測(cè)值的自變量都有28
×
28
=
784
個(gè)值,
代表各個(gè)像素的深淺,
每個(gè)觀測(cè)值的因變量
(label)
為該觀測(cè)值相應(yīng)的真實(shí)數(shù)字.
人們的目的就是要建模來(lái)通過(guò)自變量預(yù)測(cè)因變量的值,
因此這是分類問(wèn)題.aModifiedNationalInstituteof
StandardsandTechnology
database.October15,
20249
/
41張敏數(shù)據(jù)可以直接從網(wǎng)上下載1.
當(dāng)然,
也可以從本地?cái)?shù)據(jù)集讀取,
比如:對(duì)
mnist.pkl,可用下面代碼得到已經(jīng)分成訓(xùn)練集和測(cè)試集
(分別為自變量和因變量)
的
4
個(gè)數(shù)據(jù)集:import
picklewithopen("mnist.pkl",'rb')as
f:((x_train,y_train),(x_valid,y_valid),_)=pickle.load(f,encoding="latin-1")如果直接從
csv
文件讀取,
則可以用下面的代碼得到
4
個(gè)數(shù)據(jù)集(這里訓(xùn)練集和測(cè)試集是隨機(jī)分的):importpandasaspddf_label=pd.read_csv('MNIST_labels.csv',header=None)df_features=pd.read_csv('MNIST_images.csv',
header=None)fromsklearn.model_selectionimporttrain_test_splitX_train,X_cv,y_train,y_cv=
train_test_split(df_features,df_label,test_size=1/6,random_state=
1010)1可下載該數(shù)據(jù)的網(wǎng)頁(yè)包括/exdb/mnist/,
/data/mnist/,/ngbolin/mnist-dataset-digit-recognizer等.October15,
202410
/
41張敏熟悉圖像數(shù)據(jù)圖
2:
60
個(gè)手寫數(shù)字October15,
202411
/
41張敏對(duì)數(shù)據(jù)進(jìn)行包裝建立一般的神經(jīng)網(wǎng)絡(luò)分類模型對(duì)測(cè)試集做交叉驗(yàn)證October15,
202412
/
41張敏輸出的精確度
(對(duì)角線計(jì)數(shù)總和所占比例)
及混淆矩陣為:ModelAccuracy=
0.9687Confusionmatrix
=[[
966 0 601110133][ 0
1049 43000260][ 2 2
9666213260][ 1 1 1298711204111][ 0 5 20957141112][ 3 1 8123860132103][ 1 0 1012960020][ 2 7 62300
1057013][ 2 3 58343 29727][ 4 2 042031 104913]]October15,
202413
/
41張敏卷積神經(jīng)網(wǎng)絡(luò)October15,
202414
/
41張敏卷積神經(jīng)網(wǎng)絡(luò)
(convolutional
neural
network,
CNN
或
ConvNet)在
2010
年之后變得非常流行,
因?yàn)樗谝曈X(jué)數(shù)據(jù)上的表現(xiàn)優(yōu)于任何其他網(wǎng)絡(luò)體系結(jié)構(gòu),
但是
CNN
背后的概念并不是新概念.
實(shí)際上,
它很大程度上是受到人類視覺(jué)系統(tǒng)的啟發(fā).
它在一些領(lǐng)域的應(yīng)用比較突出,
比如:
面部識(shí)別系統(tǒng),
文檔的分析和解析,
智能城市
(比如監(jiān)控探頭數(shù)據(jù)的使用),
個(gè)性化推薦系統(tǒng)等.October15,
202415
/
41張敏卷積卷積(convolution)
也稱為褶積,
其實(shí)并不復(fù)雜,
最簡(jiǎn)單的例子就是大家熟知的
“3
點(diǎn)移動(dòng)平均”
或
“5
點(diǎn)移動(dòng)平均”
一類的運(yùn)算.
當(dāng)然,
所謂平均可能是某種加權(quán)平均.October15,
202416
/
41張敏一維卷積:
3
點(diǎn)移動(dòng)平均的例子如果有一串
10
個(gè)數(shù)目x
=
(x1,
x2,
.
.
.
,
x10)
=
(0,
5,
13,
18,
12,
8,
5,
14,
15,
14),
我們準(zhǔn)備做
“3
點(diǎn)移動(dòng)平均”(每次移動(dòng)一項(xiàng)),
權(quán)重
(這里稱為卷積核或核)
為
y=
(y?1,
y0,
y1)
=
(0.5,
1,
0.5).
由于
y
有
3
個(gè)值,
因此對(duì)于
x
的平均只能有
10
?
3
+
1
=
8
次,
得到
8
個(gè)值.October15,
202417
/
41張敏計(jì)算過(guò)程如下:第
1
個(gè)值
(以
x
第
2
個(gè)位置為中心,
記為
c(2)):? ?1∑i=?1c(2)
=
y
(x
,
x
,
x
)
=
(0.5,
1,
0.5)
(0,
5,
13)=
11.5
(= y
x2
3
4 i
3+1∑i=?1i
3?i
= yx
i).第
2
個(gè)值
(以
x
第
3
個(gè)位置為中心,
記為
c(3)):? ?1∑i=?1c(3)
=
y
(x
,
x
,
x
)
=
(0.5,
1,
0.5)
(5,
13,
18)=
24.5
(= y
x1
2
3 i
2+1∑i=?1i
2?i
= yx
i).其余以此類推.
第
8
個(gè)值
(以
x
第
9
個(gè)位置為中心,
記為
c(9)):? ?1∑i=?1c(9)=y(x,x,x
)=(0.5,1,0.5)(14,15,14)=29
(= y
x8
9
10 i
9+1∑i=?1i
9?i
= yx
i).因此,
我們有關(guān)于
c(a)(通常記卷積為
c(a)
=(x
?
y)(a))的公式:∞∑c(a)
=
(x
?
y)(a)
=
ya?i∞∑ ∑i
a?
ixi
= yx
i
= y
xj.i=?∞ i=?∞ i+j=a注意上面用的求和運(yùn)算符的上下限為
(?∞,
∞),這是一般卷積定義的表述,
對(duì)有限序列的例子沒(méi)有影響,
因?yàn)閥i
=
0,
?i
∈/
[?1,
0,
1]
以及
xi
=
0,
?i
∈/
[1,
2,
.
.
.
,
10].
表1、圖3和圖4為這個(gè)例子的數(shù)值和圖形描述.October15,
202418
/
41張敏Table
1:
一維卷積的例子a12345678910xa0513181285141514(x?
y)(a)11.524.530.52516.5162429.0October15,
202419
/
41張敏圖
3:
一維卷積的形成October15,
202420
/
41張敏圖
4:
3
點(diǎn)移動(dòng)平均的一維卷積結(jié)果圖October15,
202421
/
41張敏二維卷積的例子對(duì)于高維情況,
前面卷積定義形式不變,
僅僅把變?cè)紤]為向量即可,
比如在
2
維情況,—
—c(a,a)=(x?y)(a,a
)
= y
x1 21 2 1 2 i,ja?i,a
?j.i j二維卷積實(shí)際上多用于圖像處理.
以彩色圖像為例,
數(shù)據(jù)維數(shù)為h
×
w
×
d,
這里
h
和
w
分別代表豎直和水平方向的像素個(gè)數(shù),
d
通常為
2,代表紅綠藍(lán)
3
種顏色,
數(shù)據(jù)矩陣每個(gè)值為某顏色像素的強(qiáng)度.
一般神經(jīng)網(wǎng)絡(luò)是把這些矩陣?yán)背?/p>
3
個(gè)長(zhǎng)度為
h
×
w
的向量,
然后再進(jìn)行完全連接,這種做法計(jì)算量很大,
并且權(quán)重有很多的重復(fù).
前面例2數(shù)據(jù)本身代表一個(gè)圖片的每一行數(shù)據(jù)有
784
個(gè)值,
這就是從
28
×
28
的矩陣?yán)倍傻?October15,
202422
/
41張敏CNN
的作用是將圖像縮小為更易于處理的形式,
而不會(huì)丟失對(duì)獲得良好預(yù)測(cè)至關(guān)重要的特征.
在設(shè)計(jì)一個(gè)不僅擅長(zhǎng)學(xué)習(xí)特征而且可擴(kuò)展到海量數(shù)據(jù)集的體系結(jié)構(gòu)時(shí),
這是很重要的.下面給出一個(gè)把
2
維矩陣
(h
×
w)
數(shù)據(jù)
m
(可考慮成圖像的某個(gè)顏色層)通過(guò)在卷積層和一個(gè)
kh
×
kw
核矩陣或核(kernel),
也稱為過(guò)濾器
(filter)
矩陣
k
做卷積的簡(jiǎn)單示意.October15,
202423
/
41張敏下面的輸入矩陣
m
為
5
×
5
矩陣,
過(guò)濾矩陣
k
為
3
×
3
矩陣.然后把矩陣
k
和矩陣
m
的每個(gè)
3
×
3
子矩陣做內(nèi)積
(元素乘元素再求和)得到一個(gè)
(h
?
kh
+
1)
×
(w
?
kw
+
1)
=
3
×
3
的結(jié)果矩陣.
這是步長(zhǎng)
(stride)
為
1
的過(guò)程,
如果是每隔一個(gè)做一次,
則步長(zhǎng)為
2.
m
?
k
= 6
1
3
4825
36215
08
1
8
0
?
057610125341883586
1
0
1 1530
1110
=
2319
19
October15,
202424
/
41張敏1.
卷積核的選擇
00
0identity:010
;00
0
1
16
Gaussian
plur
(aproximation):
2
12
142
;12
1Boxblur
(normalized):19
11
1111
;11
1
0 ?1 00 ?1 0
sharpen:
?1 5 ?1
;
Edge
detection
(三種):
0?1
0
1
1 0
?1 0 1 0 ?1?1
?11 0 , 1?6
1
, ?1 4 ?1
.0 1 0 ?1?1
?1October15,
202425
/
41張敏2.
填充有時(shí)需要填充
(padding),
過(guò)濾器可能無(wú)法完全滿足輸入圖像的維數(shù).
有兩個(gè)選擇:用零填充圖片
(零填充)
以使其適合,
稱為同等填充(same
padding).刪除圖像中和過(guò)濾器不適合的部分,
僅保留圖像的有效部分,
稱為有效填充
(valid
padding).圖5是用上面
7
種卷積核對(duì)一個(gè)從彩色圖片
(FC.jpg)
轉(zhuǎn)換來(lái)的黑白圖片
(見(jiàn)圖5左上圖)
做卷積
(并做了填充)
的示例,
次序是從第一行左數(shù)第
2
個(gè)直到右下角的
7
個(gè)圖.October15,
202426
/
41張敏圖
5:
不同過(guò)濾器對(duì)一個(gè)黑白圖片卷積的效果October15,
202427
/
41張敏3.
過(guò)濾在卷積之后,
需要過(guò)濾掉負(fù)值,
使用非線性函數(shù)ReLU(Rectified
Linear
Unit)
作為激活函數(shù)來(lái)去掉負(fù)值
(使負(fù)值等于
0):
(x)
=
max(0,
x).
當(dāng)然,
也可以用
tanh
或
1/(1
+
e?x)(logistic
函數(shù))等各種
S
型函數(shù).October15,
202428
/
41張敏池化層在處理圖像時(shí)的池化
(pooling)
就是把小塊區(qū)域的數(shù)據(jù)匯總,以減少數(shù)據(jù)量.
池化有幾種類型.
比如:
最大池化
(maxpooling)
取小區(qū)域的最大值,
平均池化
(average
pooling)
取小區(qū)域的平均值,
總和池化
(sum
pooling)
取小區(qū)域的和.
下面是一個(gè)把剛才
5
×
4
數(shù)據(jù)陣
m
的
9
個(gè)
3
×
3
子矩陣化成
1
個(gè)3
×
3
池化矩陣的例子
(步長(zhǎng)為
1):October15,
202429
/
41張敏
m
=
6
4825
36215
08
1
8
0
?1576
38358
6
=
8
888
888
88
(max
pooling);
≈ 4.114.224.44
2.78
4.784.89
5.67
3.44 (average
pooling);4.89
3840
25= 3743
314451
44
(sum
pooling).October15,
202430
/
41張敏卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)造一個(gè)為分類而構(gòu)造的
CNN
的構(gòu)成可以示意如下:特征學(xué)習(xí)輸入
?
卷.
積
+relu+
池化
+
·
·
·
..+-
卷積
+relu+
池化
+
·
·、·
?
.拉這表明:
在經(jīng)過(guò)卷積池化等步驟后,
維數(shù)降低很多,
然后拉直矩陣成向量并傳入進(jìn)行完全連接的
(使用激活函數(shù)
softmax)分類多層神經(jīng)網(wǎng)絡(luò).實(shí)際上,
卷積神經(jīng)網(wǎng)絡(luò)有很多種構(gòu)成,
比如,
LeNet,
AlexNet,VGGNet,
GoogLeNet,
ResNet,
ZFNet,
等等.October15,
202431
/
41張敏MNIST
手寫數(shù)字?jǐn)?shù)據(jù)
(續(xù)): CNNOctober15,
202432
/
41張敏整理數(shù)據(jù)import
picklewithopen("mnist.pkl",'rb')as
f:((x_train,y_train),(x_valid,y_valid),_)=pickle.load(f,encoding="latin-1")import
torchx_train,y_train,x_valid,y_valid=
map(torch.tensor,(x_train,y_train,x_valid,
y_valid))x_train=x_train.reshape(50000,1,28,28)x_valid=x_valid.reshape(10000,1,28,28)batch_size_train=
64batch_size_test=
1000#Pytorchtrainandtest
setstrain=torch.utils.data.TensorDataset(x_train,y_train)test=torch.utils.data.TensorDataset(x_valid,
y_valid)train_loader=torch.utils.data.DataLoader(train,batch_size=
batch_size_train,shuffle=False)test_loader=torch.utils.data.DataLoader(test,batch_size=
batch_size_test,shuffle=False)October15,
202433
/
41張敏為模型擬合做準(zhǔn)備為要用的
lambda
函數(shù)做
PyTorch
包裝:class
Lambda(nn.Module):def
init
(self,func):super().
init
()self.func=
funcdefforward(self,x):return
self.func(x)October15,
202434
/
41張敏確定前向傳播
CNN
模型:fromtorchimportoptimmodel=
nn.Sequential(nn.Conv2d(1,16,kernel_size=3,stride=2,padding=1),nn.ReLU(),nn.Conv2d(16,16,kernel_size=3,stride=2,padding=1),nn.ReLU(),nn.Conv2d(16,10,kernel_size=3,stride=2,padding=1),nn.ReLU(),nn.AdaptiveAvgPool2d(1),Lambda(lambdax:x.view(x.size(0),
-1)),)October15,
202435
/
41張敏擬合及交叉驗(yàn)證最終擬合代碼和輸出為:0
0.195202277600765221
0.17164783701300622
0.156519725918769843
0.150830556452274334
0.1480826847255235
0.142191998660564426
0.135652282834053037
0.130659142136573798
0.1275297760963449
0.12674583941698075October15,
202436
/
41張敏CIFAR-10
數(shù)據(jù)圖像
CNN
案例October15,
202437
/
41張敏數(shù)據(jù)及載入Example
3CIFAR-10
是一個(gè)經(jīng)典的圖像識(shí)別問(wèn)題,
包括
60000
幅
32
×
32
像素的RGB
圖像
(50000
幅屬于訓(xùn)練集;
10000
幅屬于測(cè)試集).
這些圖像共包括10
類內(nèi)容:
plane(飛機(jī)),
car(汽車),
bird(鳥(niǎo)),
cat(貓),
deer(鹿),
dog(狗),
frog
(青蛙),
horse
(馬),
ship
(船),
truck
(卡車).
這里將用
PyTorch
給出的
CNN
網(wǎng)絡(luò)模型來(lái)擬合.
本例直接使用
PyTorch
的代碼載入文件,
但也可以用這里給出的數(shù)據(jù)文件
(在文件夾
cifar-10-batches-py中的文件:data_batch_1,data_batch_2,data_batch_3,data_batch_4,data_batch_5,
test_batch).
可以用下面的代碼把數(shù)據(jù)以
dict
形式讀入:October15,
202438
/
41張敏defunpickle(file):import
picklewithopen(file,'rb')as
fo:dict=pickle.load(fo,encoding='bytes')return
dictw=[]foriin
range(5):w.append(unpickle('cifar-10-batches-py/data_batch_'+str(i+1)))w.append(unpickle('cifar-10-batches-py/test_batch'))d=
{}fori,kinenumerate(w[0].keys()):if
i==0:d[k]=tuple(d[k]fordin
w)if
i!=0:d[k]=np.concatenate(list(d[k]fordin
w))x_train=d[b'data'].reshape(60000,3,32,32)[:50000]y_train=d[b'labels'][:50000].astype(int)x_test=d[b'da
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西省渾源縣2025屆物理高二第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 2025屆福建省寧德寧市-同心順-六校聯(lián)盟高一物理第一學(xué)期期中監(jiān)測(cè)試題含解析
- 2025屆山西省平遙縣和誠(chéng)物理高二上期中達(dá)標(biāo)檢測(cè)模擬試題含解析
- 陜西省西安市西光中學(xué)2025屆物理高二第一學(xué)期期末學(xué)業(yè)水平測(cè)試模擬試題含解析
- 甘肅省蘭州市二十七中2025屆物理高一上期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 2025屆浙江省杭州五校物理高二第一學(xué)期期末統(tǒng)考試題含解析
- 2025屆遼寧省鞍山市高二物理第一學(xué)期期末學(xué)業(yè)水平測(cè)試模擬試題含解析
- 2025屆朝陽(yáng)市重點(diǎn)中學(xué)物理高一上期中經(jīng)典模擬試題含解析
- 2025屆玉溪市重點(diǎn)中學(xué)高三物理第一學(xué)期期末綜合測(cè)試試題含解析
- 2025屆黑龍江省哈爾濱市第九中學(xué)物理高一上期中質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 2024全新物業(yè)服務(wù)培訓(xùn)
- 山東省日照地區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期期中考試數(shù)學(xué)試題(含答案)
- 《地產(chǎn)公司圖紙管理辦法》的通知
- 裝飾圖案(第2版)課件 李健婷 模塊7、8 裝飾圖案的組織形式裝飾圖案在現(xiàn)代設(shè)計(jì)中的應(yīng)用
- 中華民族共同體概論學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 腦出血課件完整版本
- 世界慢阻肺日
- 期末 (試題) -2024-2025學(xué)年人教PEP版英語(yǔ)六年級(jí)上冊(cè)
- 2024年安徽交通控股集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 軟件安全之惡意代碼機(jī)理與防護(hù)-武漢大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- GB/T 37356-2019色漆和清漆涂層目視評(píng)定的光照條件和方法
評(píng)論
0/150
提交評(píng)論