1樓:OpenMMLab
不請自來,強烈推薦我們的 PyTorch 原始碼解讀,目前已經詳細介紹了 BN, nn.Module, autograd 等模組,後面還會持續更新。建議和 MMDetection 系列解讀配合食用,效果更佳哦~
PyTorch 原始碼解讀系列:
OpenMMLab:PyTorch 原始碼解讀之 torch.optim
OpenMMLab:PyTorch 原始碼解讀之 DP & DDP
OpenMMLab:PyTorch 原始碼解讀之 nn.Module
OpenMMLab:PyTorch 原始碼解讀之 torch.utils.data
OpenMMLab:PyTorch 原始碼解讀之 BN & SyncBN
OpenMMLab:PyTorch 原始碼解讀之 torch.autograd
MMDetection 解讀系列:
OpenMMLab:輕鬆掌握 MMDetection 整體構建流程(一)
OpenMMLab:輕鬆掌握 MMDetection 整體構建流程(二)
OpenMMLab:輕鬆掌握 MMDetection 中 Head 流程
OpenMMLab:輕鬆掌握 MMDetection 中常用演算法(一):RetinaNet 及配置詳解
2樓:技術
剛開始沒必要看書
也沒必要聽那些所謂的老手的建議
什麼學習路線的,那些都是扯淡的
沒什麼卵用的
為什麼呢?
因為想要提高你的水平,最重要的就是動手,實戰
你照著那些路線慢慢的學下去,學不了幾天,你的耐心就都被磨沒了
耐心都磨沒了,還學個屁
所以我的建議是,基本語法熟悉之後,直接去實戰
過程中遇到不懂的地方再去找答案,這樣你容易有成就感,也學的快
需要的話,我這裡有很多實戰的專案資料,有需要的可以找我來拿
參考下圖找我
l1 l2 l3 l4.
length l1 = length l2
(zip (l1,l2) = l3 ++ l4
l11 l12 l21 l22.
l1 = l11 ++ l12 ∧ l2 = l21 ++
l22 ∧ length l11 = length l3 ∧ length l21 = length l3 ∧
length l12 = length l4 ∧ length l22 = length l4 ∧
l3 = zip (l11, l21) ∧ l4 = zip (l12, l22))
Proof
Induct_on `l1` >> rw
>- metis_tac >>
Cases_on `l2` >> fs >> Cases_on `l3` >> fs
>- (eq_tac >> rw >> rw >> metis_tac [LENGTH_ZIP]) >>
eq_tac >> rw >> fs >> rw
>- (
qexists_tac `h::l11` >> rw >>
Cases_on `l11` >> Cases_on `l21` >> fs >> rw >> rfs >>
metis_tac
QEDl1 l2 l3 l4 x.
l1 ++ [x] ++ l2 = l3 ++ [x] ++ l4 /\
mem x l2 ∧ mem x l4
l1 = l3 ∧ l2 = l4
Proof
Induct_on `l1`
>- (rw >> Cases_on `l3` >> fs >> rfs ) >>
rpt gen_tac >>
Cases_on `l3`
>- (simp_tac (srw_ss()) >> CCONTR_TAC >> fs >> rw >> fs ) >>
simp_tac (srw_ss()) >> metis_tac
QEDl1 l2 l3 l4 x y.
l1 ++ [x] ++ l2 = l3 ++ [y] ++ l4 /\
length l2 = length l4
l1 = l3 ∧ x = y ∧ l2 = l4
Proof
Induct_on `l1` >-
(rw >> Cases_on `l3` >> fs >> rw >> fs ) >>
rpt gen_tac >> Cases_on `l3`
>- (simp_tac (srw_ss()) >> CCONTR_TAC >> fs >> rw >> fs ) >>
simp_tac (srw_ss()) >> metis_tac
QED(* ----- Theorems about log ----- *)
Theorem mul_div_bound:
m n. n ≠ 0 m - (n - 1) ≤ n * (m DIV n) ∧ n * (m DIV n) ≤ m
Proof
rw >>
`0 < n` by decide_tac >>
drule DIVISION >> disch_then (qspec_then `m` mp_tac) >>
decide_tac
QEDTheorem exp_log_bound:
b n. 1 < b ∧ n ≠ 0 n DIV b + 1 ≤ b ** (log b n) ∧ b ** (log b n) ≤ n
Proof
rw >> `0 < n` by decide_tac >>
drule LOG >> disch_then drule >> rw >>
fs [ADD1, EXP_ADD] >>
simp [DECIDE ``x y. x + 1 ≤ y x < y``] >>
`x. b = Suc x` by intLib.COOPER_TAC >>
`b * (n DIV b) < b * b ** log b n` suffices_by metis_tac [LESS_MULT_MONO] >>
pop_assum kall_tac >>
`b ≠ 0` by decide_tac >>
drule mul_div_bound >> disch_then (qspec_then `n` mp_tac) >>
decide_tac
QEDTheorem log_base_power:
n b. 1 < b log b (b ** n) = n
Proof
Induct >> rw [EXP, LOG_1] >>
Cases_on `n` >> rw [LOG_BASE] >>
first_x_assum drule >> rw >>
simp [Once EXP, LOG_MULT]
QEDTheorem log_change_base_power:
m n b. 1 < b ∧ m ≠ 0 ∧ n ≠ 0 log (b ** n) m = log b m DIV n
Proof
rw >> irule LOG_UNIQUE >>
rw [ADD1, EXP_MUL, LEFT_ADD_DISTRIB] >>
qmatch_goalsub_abbrev_tac `x DIV _` >>
drule mul_div_bound >> disch_then (qspec_then `x` mp_tac) >> rw
>- (
irule LESS_LESS_EQ_TRANS >>
qexists_tac `b ** (x+1)` >> rw >>
unabbrev_all_tac >>
simp [EXP_ADD] >>
`b * (m DIV b + 1) ≤ b * b ** log b m`
by metis_tac [exp_log_bound, LESS_MONO_MULT, MULT_COMM] >>
`m < b * (m DIV b + 1)` suffices_by decide_tac >>
simp [LEFT_ADD_DISTRIB] >>
`b ≠ 0` by decide_tac >>
`m - (b - 1) ≤ b * (m DIV b)` by metis_tac [mul_div_bound] >>
fs )
>- (
irule LESS_EQ_TRANS >>
qexists_tac `b ** (log b m)` >> rw >>
unabbrev_all_tac >>
metis_tac [exp_log_bound])
QED(* ----- Theorems about word stuff ----- *)
Theorem l2n_padding:
ws n. l2n 256 (ws ++ map w2n (replicate n 0w)) = l2n 256 ws
Proof
Induct >> rw [l2n_def] >> fs [map_replicate] >>
Induct_on `n` >> rw [l2n_def]
QEDTheorem l2n_0:
l b. b ≠ 0 ∧ every ($> b) l (l2n b l = 0 every ($= 0) l)
Proof
Induct >> rw [l2n_def] >>
eq_tac >> rw
QEDTheorem mod_n2l:
d n. 0 < d map (λx. x MOD d) (n2l d n) = n2l d n
Proof
rw >> drule n2l_BOUND >> disch_then (qspec_then `n` mp_tac) >>
qspec_tac (`n2l d n`, `l`) >>
Induct >> rwQED
如何從零開始學習滑冰?
鄭伊 1 首先鞋的選擇,主要有花樣和冰球,速滑不在初學者的考慮中,花樣冰刀適合初學者,有前刀齒和後跟 有利於身體保持平衡 冰球冰刀自由度很大,比上面的花樣冰刀更具靈活性,身體靈活性控制不好的話,容易前後摔倒。2 先學會站立,就和平常一樣,兩腳並行齊肩站立,雙臂平舉保持平衡。感受腳下刀刃上受力的那條線...
如何從零開始學習 Perl?
陽光 真正使用perl也就半年,為組裡寫了乙個自動化跑程式的指令碼。總的來說使用小駱駝跟perl例項程式設計兩本書就可以了。認真做乙個專案,張姿勢最快 晶鑫 實習工作應該很簡單啊,就是在別人的基礎上做擴充套件,甚至有可能是仿照別人的程式寫乙個類似的程式。把你要做擴充套件的程式拿過來,研究完了基本就能...
如何從零開始學習PHP?
貓咪咪 PHP入門很容易,也不用很高的學歷基礎。只要智力正常,只要想堅持下去,沒有三天打魚兩天曬網的好習慣就行了。如果只是愛好,那麼學到懂就行了。如果想把它當作事業,就必須堅持到底。 學習php的程序可能需要經歷下面這幾個階段 1 熟悉HTML CSS JS等網頁基本元素,完成階段可自行製作完整的網...