การดำเนินการขั้นพื้นฐานกับเทนเซอร์ใน PyTorch

Kar Danein Kar Khan Phun Than Kab The N Sexr Ni Pytorch



เทนเซอร์เป็นรากฐานสำคัญของ PyTorch ซึ่งมอบโครงสร้างข้อมูลที่ทรงพลังและยืดหยุ่นสำหรับการคำนวณเชิงตัวเลขในการเรียนรู้เชิงลึก เช่นเดียวกับอาร์เรย์ NumPy พวกมันเป็นตัวแทนของอาร์เรย์หลายมิติ แต่มีคุณสมบัติเพิ่มเติมและการเพิ่มประสิทธิภาพที่ออกแบบมาโดยเฉพาะสำหรับงานการเรียนรู้เชิงลึก เนื่องจากเทนเซอร์เป็นวัตถุหลักในการจัดเก็บและจัดการข้อมูลตัวเลขใน PyTorch จึงสามารถมีมิติที่แตกต่างกันได้ ตั้งแต่สเกลาร์ (เทนเซอร์ 0 มิติ) ไปจนถึงเวกเตอร์ (เทนเซอร์ 1 มิติ) เมทริกซ์ (เทนเซอร์ 2 มิติ) และสูงกว่า -มิติเทนเซอร์

ข้อดีที่ใหญ่ที่สุดประการหนึ่งของเทนเซอร์คือความสามารถในการดำเนินการทางคณิตศาสตร์อย่างมีประสิทธิภาพ เทนเซอร์รองรับการดำเนินการทางคณิตศาสตร์ที่หลากหลาย รวมถึงการดำเนินการตามองค์ประกอบ เช่น การบวก การลบ การคูณ การหาร และการดำเนินการเมทริกซ์ เช่น การคูณเมทริกซ์และการเปลี่ยนตำแหน่ง

PyTorch มีชุดฟังก์ชันและวิธีการที่ครอบคลุมสำหรับการจัดการเทนเซอร์ ซึ่งรวมถึงการดำเนินการเพื่อปรับรูปร่างเทนเซอร์ การแยกองค์ประกอบเฉพาะหรือเทนเซอร์ย่อย และการเชื่อมหรือแยกเทนเซอร์ตามขนาดที่ระบุ นอกจากนี้ PyTorch ยังมีฟังก์ชันสำหรับการจัดทำดัชนี การแบ่งส่วน และการออกอากาศเทนเซอร์ ซึ่งช่วยให้ทำงานกับเทนเซอร์ที่มีรูปร่างและขนาดต่างกันได้ง่ายขึ้น







ในบทความนี้ เราจะเรียนรู้การทำงานขั้นพื้นฐานด้วยเทนเซอร์ใน PyTorch สำรวจวิธีสร้างเทนเซอร์ ดำเนินการพื้นฐาน จัดการรูปร่าง และย้ายพวกมันระหว่าง CPU และ GPU



การสร้างเทนเซอร์

Tensors ใน PyTorch สามารถสร้างได้หลายวิธี เรามาสำรวจวิธีการทั่วไปกัน



ในการสร้างเทนเซอร์ เราสามารถใช้คลาส 'torch.Tensor' หรือฟังก์ชัน 'torch.tensor' ลองดูตัวอย่างบางส่วน:





นำเข้า คบเพลิง

#สร้างก 1 - - เทนเซอร์มิติจากรายการ Python
tensor_1d = คบเพลิง. เทนเซอร์ ( [ 1 , 2 , 3 , 4 , 5 ] )
พิมพ์ ( tensor_1d )

#สร้างก 2 - - เทนเซอร์มิติจากรายการ Python ที่ซ้อนกัน
tensor_2d = คบเพลิง. เทนเซอร์ ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
พิมพ์ ( tensor_2d )

# สร้างเทนเซอร์ของศูนย์ที่มีรูปร่างเฉพาะ
ศูนย์_tensor = คบเพลิง. ศูนย์ ( 3 , 2 )
พิมพ์ ( ศูนย์_tensor )

# สร้างเทนเซอร์ที่มีรูปร่างเฉพาะ
ones_tensor = คบเพลิง. คน ( 2 , 3 )
พิมพ์ ( ones_tensor )

# สร้างเทนเซอร์ที่มีค่าสุ่มจากการแจกแจงแบบสม่ำเสมอ
สุ่ม_tensor = คบเพลิง. แรนด์ ( 2 , 2 )
พิมพ์ ( สุ่ม_tensor )

ในตัวอย่างที่ให้มา เราสร้างเทนเซอร์ของรูปร่างที่แตกต่างกัน และเริ่มต้นด้วยค่าต่างๆ เช่น ตัวเลขเฉพาะ ศูนย์ ค่าหนึ่ง หรือค่าสุ่ม คุณควรเห็นผลลัพธ์ที่คล้ายกันเมื่อคุณเรียกใช้ข้อมูลโค้ดก่อนหน้า:



การดำเนินการเทนเซอร์

เมื่อเรามีเทนเซอร์แล้ว เราก็สามารถดำเนินการต่างๆ กับเทนเซอร์ได้ เช่น การดำเนินการทางคณิตศาสตร์ตามองค์ประกอบ การดำเนินการเมทริกซ์ และอื่นๆ

การดำเนินการทางคณิตศาสตร์เชิงองค์ประกอบ

การดำเนินการทางคณิตศาสตร์แบบองค์ประกอบช่วยให้เราสามารถคำนวณระหว่างเทนเซอร์แบบองค์ประกอบต่อองค์ประกอบได้ เทนเซอร์ที่เกี่ยวข้องในการทำงานควรมีรูปร่างเหมือนกัน

นี่คือตัวอย่างบางส่วน:

นำเข้า คบเพลิง

# สร้างเทนเซอร์
เทนเซอร์1 = คบเพลิง. เทนเซอร์ ( [ 1 , 2 , 3 ] )
เทนเซอร์2 = คบเพลิง. เทนเซอร์ ( [ 4 , 5 , 6 ] )

# ส่วนที่เพิ่มเข้าไป
ส่วนที่เพิ่มเข้าไป = เทนเซอร์1 + เทนเซอร์2
พิมพ์ ( 'ส่วนที่เพิ่มเข้าไป:' , ส่วนที่เพิ่มเข้าไป )

# การลบ
การลบ = เทนเซอร์1 - - เทนเซอร์2
พิมพ์ ( 'การลบ:' , การลบ )

# การคูณ
การคูณ = เทนเซอร์1 * เทนเซอร์2
พิมพ์ ( 'การคูณ:' , การคูณ )

# แผนก
แผนก = เทนเซอร์1 / เทนเซอร์2
พิมพ์ ( 'แผนก:' , แผนก )

ในโค้ดที่กำหนด เราทำการดำเนินการบวก ลบ คูณ และหารระหว่างเทนเซอร์สองตัว ซึ่งส่งผลให้เกิดเมตริกซ์ใหม่ที่มีค่าที่คำนวณได้ ผลลัพธ์ของข้อมูลโค้ดจะแสดงดังนี้:

การดำเนินงานเมทริกซ์

PyTorch ให้การดำเนินการเมทริกซ์ที่มีประสิทธิภาพสำหรับเทนเซอร์ เช่น การคูณเมทริกซ์และทรานสโพส การดำเนินการเหล่านี้มีประโยชน์อย่างยิ่งสำหรับงานต่างๆ เช่น พีชคณิตเชิงเส้นและการคำนวณโครงข่ายประสาทเทียม

นำเข้า คบเพลิง

# สร้างเทนเซอร์
เทนเซอร์1 = คบเพลิง. เทนเซอร์ ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
เทนเซอร์2 = คบเพลิง. เทนเซอร์ ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# การคูณเมทริกซ์
matrix_product = คบเพลิง. เสื่อ ( เทนเซอร์1 , เทนเซอร์2 )
พิมพ์ ( 'ผลิตภัณฑ์เมทริกซ์:' , matrix_product )

# เมทริกซ์ทรานสโพส
matrix_transpose = เทนเซอร์1
พิมพ์ ( 'เมทริกซ์ทรานสโพส:' , matrix_transpose )

ในตัวอย่างที่กำหนด เราทำการคูณเมทริกซ์โดยใช้ฟังก์ชัน 'torch.matmul' และรับทรานสโพสของเมทริกซ์โดยใช้แอตทริบิวต์ '.T'

การจัดการรูปร่างเทนเซอร์

นอกเหนือจากการดำเนินการกับเทนเซอร์แล้ว เรายังจำเป็นต้องปรับเปลี่ยนรูปร่างให้เหมาะสมกับความต้องการเฉพาะอีกด้วย PyTorch มีฟังก์ชันหลายอย่างในการปรับรูปร่างเทนเซอร์ มาสำรวจฟังก์ชันเหล่านี้บางส่วนกัน:

นำเข้า คบเพลิง

#สร้างเทนเซอร์
เทนเซอร์ = คบเพลิง. เทนเซอร์ ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# ปรับรูปร่างเทนเซอร์
เปลี่ยนรูป_tensor = เทนเซอร์ ปรับรูปร่างใหม่ ( 3 , 2 )
พิมพ์ ( 'เทนเซอร์ที่ปรับโฉมใหม่:' , เปลี่ยนรูป_tensor )

#รับขนาดเทนเซอร์
ขนาด = เทนเซอร์ ขนาด ( )
พิมพ์ ( 'ขนาดของเทนเซอร์:' , ขนาด )

#รับจำนวนองค์ประกอบ ใน เทนเซอร์
num_elements = เทนเซอร์ ให้ชื่อ ( )
พิมพ์ ( 'จำนวนองค์ประกอบ:' , num_elements )

ในโค้ดที่ให้มา เราจะปรับรูปร่างเทนเซอร์ใหม่โดยใช้ฟังก์ชันปรับรูปร่าง ดึงขนาดของเทนเซอร์โดยใช้วิธีการวัดขนาด และรับจำนวนองค์ประกอบทั้งหมดในเทนเซอร์โดยใช้วิธีตัวเลข

การเคลื่อนย้ายเทนเซอร์ระหว่าง CPU และ GPU

PyTorch ให้การสนับสนุนการเร่งความเร็ว GPU ซึ่งช่วยให้เราสามารถคำนวณบนกราฟิกการ์ดซึ่งสามารถเร่งงานการเรียนรู้เชิงลึกได้อย่างมากโดยลดเวลาการฝึกอบรมลง เราสามารถย้ายเทนเซอร์ระหว่าง CPU และ GPU โดยใช้วิธี 'ถึง'

บันทึก : สามารถทำได้ก็ต่อเมื่อคุณมี NVIDIA GPU พร้อม CUDA บนเครื่องของคุณ

นำเข้า คบเพลิง

# สร้างเทนเซอร์บน CPU
tensor_cpu = คบเพลิง. เทนเซอร์ ( [ 1 , 2 , 3 ] )

# ตรวจสอบ ถ้า จีพียูพร้อมใช้งาน
ถ้า คบเพลิง. แตกต่าง . สามารถใช้ได้ ( ) : :
# ย้ายเทนเซอร์ไปที่ GPU
tensor_gpu = tensor_cpu ถึง ( 'แตกต่าง' )
พิมพ์ ( 'เทนเซอร์บน GPU:' , tensor_gpu )
อื่น : :
พิมพ์ ( 'จีพียูไม่พร้อมใช้งาน' )

ในโค้ดที่ให้มา เราจะตรวจสอบว่า GPU พร้อมใช้งานหรือไม่โดยใช้ torch.cuda.is_available() หากมี GPU เราจะย้ายเทนเซอร์จาก CPU ไปยัง GPU โดยใช้วิธี 'to' พร้อมด้วยอาร์กิวเมนต์ 'cuda'

บทสรุป

การทำความเข้าใจการทำงานของเทนเซอร์ขั้นพื้นฐานเป็นสิ่งสำคัญสำหรับการทำงานร่วมกับ PyTorch และการสร้างแบบจำลองการเรียนรู้เชิงลึก ในบทความนี้ เราได้ศึกษาวิธีสร้างเทนเซอร์ ดำเนินการขั้นพื้นฐาน ปรับแต่งรูปร่าง และย้ายระหว่าง CPU และ GPU ด้วยความรู้นี้ คุณสามารถเริ่มทำงานกับเทนเซอร์ใน PyTorch ทำการคำนวณ และสร้างโมเดลการเรียนรู้เชิงลึกที่ซับซ้อนได้แล้ว เทนเซอร์ทำหน้าที่เป็นรากฐานสำหรับการนำเสนอและการจัดการข้อมูลใน PyTorch ซึ่งช่วยให้คุณสามารถปลดปล่อยพลังเต็มรูปแบบของเฟรมเวิร์กแมชชีนเลิร์นนิงอเนกประสงค์นี้