คำถามติดแท็ก gradient-descent

2
ทำไมเราต้องเรียก zero_grad () ใน PyTorch
zero_grad()ต้องมีการเรียกวิธีการนี้ในระหว่างการฝึกอบรม แต่เอกสารประกอบก็ไม่ค่อยมีประโยชน์ | zero_grad(self) | Sets gradients of all model parameters to zero. ทำไมเราต้องเรียกวิธีนี้?

4
Pytorch อาร์กิวเมนต์ไล่ระดับคืออะไร
ฉันกำลังอ่านเอกสารของ PyTorch และพบตัวอย่างที่พวกเขาเขียน gradients = torch.FloatTensor([0.1, 1.0, 0.0001]) y.backward(gradients) print(x.grad) โดยที่ x เป็นตัวแปรเริ่มต้นซึ่ง y ถูกสร้างขึ้น (เวกเตอร์ 3 ตัว) คำถามคืออาร์กิวเมนต์ 0.1, 1.0 และ 0.0001 ของเทนเซอร์ไล่ระดับสีคืออะไร? เอกสารประกอบยังไม่ชัดเจนในเรื่องนี้

9
เหตุใดจึงควรกำหนดน้ำหนักของโครงข่ายประสาทเทียมให้เป็นตัวเลขสุ่ม [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน28 วันที่ผ่านมา ปรับปรุงคำถามนี้ ฉันกำลังพยายามสร้างเครือข่ายประสาทตั้งแต่เริ่มต้น ในวรรณคดี AI ทั้งหมดมีความเห็นตรงกันว่าน้ำหนักควรเริ่มต้นเป็นตัวเลขสุ่มเพื่อให้เครือข่ายมาบรรจบกันได้เร็วขึ้น แต่ทำไมน้ำหนักเริ่มต้นของโครงข่ายประสาทเทียมจึงเริ่มต้นเป็นตัวเลขสุ่ม ฉันเคยอ่านที่ไหนสักแห่งว่าสิ่งนี้ทำเพื่อ "ทำลายสมมาตร" และทำให้โครงข่ายประสาทเทียมเรียนรู้ได้เร็วขึ้น การทำลายสมมาตรทำให้เรียนรู้เร็วขึ้นได้อย่างไร จะไม่เริ่มต้นน้ำหนักเป็น 0 เป็นความคิดที่ดีกว่าหรือ? ด้วยวิธีนี้น้ำหนักจะสามารถหาค่า (ไม่ว่าจะเป็นบวกหรือลบ) ได้เร็วขึ้น? มีปรัชญาพื้นฐานอื่น ๆ ที่อยู่เบื้องหลังการสุ่มน้ำหนักนอกเหนือจากการหวังว่าค่าเหล่านี้จะอยู่ใกล้ค่าที่เหมาะสมที่สุดเมื่อเริ่มต้นหรือไม่?

5
สาเหตุทั่วไปของ nans ในระหว่างการฝึกอบรม
ฉันพบว่าเกิดขึ้นบ่อยในช่วงการฝึกอบรมNANs ได้รับการแนะนำ บ่อยครั้งที่น้ำหนักในผลิตภัณฑ์ด้านใน / ชั้นที่เชื่อมต่อเต็มหรือ Convolution ถูกนำมาใช้ สิ่งนี้เกิดขึ้นเนื่องจากการคำนวณการไล่ระดับสีกำลังระเบิดหรือไม่? หรือเป็นเพราะน้ำหนักเริ่มต้น (ถ้าเป็นเช่นนั้นทำไมการเริ่มต้นน้ำหนักจึงมีผลเช่นนี้) หรือน่าจะเกิดจากลักษณะของข้อมูลเข้าหรือไม่ คำถามที่สรุปคือ: อะไรคือสาเหตุส่วนใหญ่ที่ทำให้ NAN เกิดขึ้นในระหว่างการฝึกอบรม? และประการที่สองมีวิธีใดบ้างในการต่อสู้กับสิ่งนี้ (และทำไมถึงได้ผล)?

1
R: การใช้อัลกอริทึมการเร่งการไล่ระดับสีของฉันเอง
ฉันพยายามเขียนอัลกอริทึมการไล่ระดับสีของฉันเอง ผมเข้าใจว่ามีแพคเกจที่มีอยู่เช่นgbmและxgboost,แต่ฉันต้องการที่จะเข้าใจว่าขั้นตอนวิธีการทำงานโดยการเขียนของตัวเอง ฉันกำลังใช้irisชุดข้อมูลและผลลัพธ์ของฉันคือSepal.Length(ต่อเนื่อง) ฟังก์ชั่นการสูญเสียของฉันคือmean(1/2*(y-yhat)^2)(พื้นข้อผิดพลาดยกกำลังสองเฉลี่ย 1/2 ในหน้า) y - yhatดังนั้นการไล่ระดับสีที่สอดคล้องกันของฉันเป็นเพียงที่เหลือ ฉันกำลังเริ่มต้นการทำนายที่ 0 library(rpart) data(iris) #Define gradient grad.fun <- function(y, yhat) {return(y - yhat)} mod <- list() grad_boost <- function(data, learning.rate, M, grad.fun) { # Initialize fit to be 0 fit <- rep(0, nrow(data)) grad <- grad.fun(y = data$Sepal.Length, yhat = fit) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.