如果學習從零開始學習Pytorch,有優秀的開源專案可以推薦嗎?

時間 2021-05-12 05:19:50

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等網頁基本元素,完成階段可自行製作完整的網...