Pytorch Tensors และการทำงานของมัน

Pytorch Tensors และการทำงานของมัน

โหนดต้นทาง: 1988879

บทนำ

ความก้าวหน้าของความสนใจใน การเรียนรู้ลึก ๆ ในช่วงไม่กี่ปีที่ผ่านมาและการระเบิดของเครื่องมือการเรียนรู้ของเครื่องเช่น TensorFlow, PyTorch ฯลฯ ก็จะถูกอ้างถึงเช่นกัน ซึ่งจะช่วยให้ใช้งานง่ายและแก้จุดบกพร่องของโค้ดได้ง่าย

เฟรมเวิร์กยอดนิยมหลายตัว เช่น MxNet, Tensorflow, Jax, PaddlePaddle, Caffe 2, Mindspore และ Theano จะได้รับความนิยมเพราะจะสร้างกราฟโฟลว์ข้อมูลแบบคงที่ซึ่งแสดงถึงการคำนวณและสามารถนำไปใช้กับชุดข้อมูลได้ แม้ว่าพวกเขาจะให้การมองเห็นในการคำนวณทั้งหมดและในทางทฤษฎี พวกเขาใช้ประโยชน์จากการปรับปรุงประสิทธิภาพและความสามารถในการปรับขนาด ซึ่งจะมาพร้อมกับความยืดหยุ่น ความสะดวกในการดีบั๊ก และการใช้งานที่ง่าย

บทความนี้ให้ข้อมูลเชิงลึกเกี่ยวกับ Pytorch ซึ่งเป็นเฟรมเวิร์กการเรียนรู้ของเครื่องที่เขียนด้วย Python เนื่องจากเฟรมเวิร์ก Deep Learning ส่วนใหญ่เน้นที่ความสามารถในการใช้งานหรือความเร็ว แต่ Pytorch แสดงให้เห็นว่าเป้าหมายทั้งสองนี้เข้ากันได้: มันถูกออกแบบมาเพื่อรองรับความจำเป็นและ Pythonic Programming Style ซึ่งจะรองรับโค้ดเป็นโมเดล ซึ่งทำให้การดีบั๊กทำได้ง่าย และจะยังคงมีประสิทธิภาพและสนับสนุน เครื่องมือเร่งฮาร์ดแวร์เช่น GPU (หน่วยประมวลผลกราฟิก) และ TPU (หน่วยประมวลผลเทนเซอร์)

ไลบรารี Python จำนวนมากถูกสร้างขึ้นบน PyTorch เช่น torch-vision, Timm สำหรับคอมพิวเตอร์วิทัศน์, torch text และ Hug face สำหรับข้อความ และ torch audio สำหรับคำพูด ซึ่งเป็นสิ่งที่ทำให้ PyTorch มีพลัง

บทความนี้เผยแพร่โดยเป็นส่วนหนึ่งของไฟล์ Blogathon วิทยาศาสตร์ข้อมูล

สารบัญ

ทำไมต้อง Pytorch?

  • เป็นเฟรมเวิร์กการเรียนรู้เชิงลึกของการวิจัยที่ได้รับความนิยมมากที่สุด
  • สามารถเข้าถึงโมเดลการเรียนรู้เชิงลึกที่สร้างไว้ล่วงหน้าจำนวนมาก (Torch Hub/ torch-vision.models)
  • สแต็กทั้งหมด: ประมวลผลข้อมูลล่วงหน้า ข้อมูลโมเดล ปรับใช้โมเดลในแอปพลิเคชัน/คลาวด์ของคุณ
  • เดิมออกแบบและใช้งานโดย Facebook/Meta (ปัจจุบันเป็นโอเพ่นซอร์สและใช้งานโดยบริษัทต่างๆ เช่น Tesla, Microsoft และ Open AI)
  • PyTorch ช่วยลดค่าใช้จ่ายด้านความรู้ความเข้าใจในขณะที่มุ่งเน้นไปที่ความยืดหยุ่นและความเร็ว
  • นับตั้งแต่เปิดตัว PyTorch เมื่อต้นปี 2017 ก็จะได้รับความนิยม

แนวโน้มที่เพิ่มขึ้นของ Pytorch ตั้งแต่เปิดตัว

ไพทอร์ช

เมตริกซ์

Tensor เป็นหน่วยการสร้างพื้นฐานของ Pytorch และโดยพื้นฐานแล้วจะเหมือนกับ a อาร์เรย์ Numpy. ส่วนใหญ่จะใช้สำหรับการแปลงรูปภาพ เสียง เป็นรูปแบบทางคณิตศาสตร์ที่ใช้สำหรับการประมวลผล เนื่องจากคอมพิวเตอร์ไม่เข้าใจรูปภาพ แต่เป็นตัวเลขมาตรฐาน ดังนั้นจึงเป็นสิ่งสำคัญในการแปลงรูปภาพให้อยู่ในรูปแบบตัวเลข

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

ในแง่ง่ายๆ สเกลเลอร์ – เวกเตอร์ – เมทริกซ์ – เทนเซอร์เป็นโฟลว์

1. Scaler เป็นเวกเตอร์ 0 มิติ

2. เวกเตอร์ คือ เวกเตอร์ 1 มิติ

3. เมทริกซ์เป็นเวกเตอร์ 2 มิติ

4. เทนเซอร์เป็นเทนเซอร์ N มิติทั่วไป

ไพทอร์ชเทนเซอร์

กรณีการใช้เทนเซอร์

Pytorch เป็น Google Collab ในตัว ตอนนี้เรามาดูวิธีใช้โค้ดพื้นฐานเพื่อทำงานกับ Pytorch Tensors

1. นำเข้า Pytorch และรับเวอร์ชัน

 import torch print(torch.__version__) # Output 1.13.1+cu116

2. การสร้าง Scaler ใน Pytorch

scaler = torch.tensor(7)
scaler
# Output
tensor(7)

3. การสร้างเทนเซอร์ใน Pytorch

vector = torch.tensor([7,7])
vector
# output
tensor([7, 7])

4. เพื่อให้ได้ขนาดใน Torch เราสามารถใช้:

vector.ndim
# output
1

5. เพื่อให้ได้รูปร่างของเวกเตอร์ใน Torch

vector.shape
# Output
torch.Size([2])

6. เพื่อรับเมทริกซ์ใน Pytorch

Matrix = torch.tensor([[1,7], [2,7]])
# output
tensor([[1, 7], [2, 7]])

7. สำหรับการสร้างตัวเลขสุ่มใน Pytorch

random = torch.rand(7)
# output
tensor([0.0324, 0.9962, 0.0709, 0.7007, 0.6523, 0.0256, 0.4912])

8. ใช้ฟังก์ชันในตัว เช่น การคูณ การบวก และการลบในเทนเซอร์

9. การสร้างเทนเซอร์โฟลต

torch.FloatTensor([1.1, 1.2, 1.3])
# Output
tensor([1.1000, 1.2000, 1.3000])

10. การสร้างช่วงของตัวเลขโดยใช้ Pytorch

torch.arange(0,10) # Output
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

เหตุใด PyTorch Tensors จึงสำคัญสำหรับ ML และ DL

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

ข้อมูลลำดับหรือข้อมูลอนุกรมเวลาเป็นอีกตัวอย่างหนึ่งซึ่งในข้อมูล 2 มิติ หนึ่งมิติ (เวลา) ได้รับการแก้ไข ตัวอย่างเช่น:

1. ข้อมูลคลื่นไฟฟ้าหัวใจในเครื่องตรวจสอบ

2. กระแสข้อมูลการติดตามราคาในตลาดหุ้น

นี่คือตัวอย่างของการใช้เทนเซอร์ 2 มิติในการเรียนรู้ของเครื่องแบบคลาสสิก (การถดถอยเชิงเส้น ต้นไม้การตัดสินใจ การสนับสนุนเครื่องเวกเตอร์ สุ่มฟอเรสต์ การถดถอยโลจิสติก ฯลฯ) และอัลกอริทึมการเรียนรู้เชิงลึก

ภาพสีหรือโทนสีเทาจะถือเป็นเทนเซอร์ 3 มิติ เทนเซอร์ 3 มิติ (หรือเทนเซอร์อันดับ 3) เป็นลูกบาศก์หรืออาร์เรย์ของอาร์เรย์เช่นนั้น

ไพทอร์ชเทนเซอร์

ในเทนเซอร์ 3 มิติ แต่ละพิกเซลเชื่อมโยงกับ 'ช่องสี' ซึ่งเป็นเวกเตอร์ 3 ตัวเลขที่แสดงความเข้มในสีแดง-เขียว-น้ำเงิน (เมทริกซ์ RGB) โดยทั่วไปแล้ว Pixel จะถูกกำหนดสีตามจำนวนสีแดง สีเขียว และสีน้ำเงินที่เรียงลำดับภายในขอบเขตของไบต์เอกพจน์ ค่าอาร์เรย์ 0 - 255 เหล่านี้จะมีลักษณะดังนี้ [255,255,255] สำหรับจำนวนเต็ม เมื่อเทนเซอร์ของเราเป็นประเภทข้อมูลของ int32 นี่เป็นวิธีตีความที่ใช้ และเมื่อเทนเซอร์ของเราเป็นประเภทข้อมูลของ float32 ค่าที่เกี่ยวข้องจะถือว่าอยู่ในช่วง 0-1 ดังนั้น จำนวนเต็ม [255,255,255] จะแทนสีขาวบริสุทธิ์ แต่ในทศนิยม จะแทนด้วย [1,1,1] สำหรับสีขาวล้วน

ซึ่งหมายความว่าต้องใช้เทนเซอร์ 3 มิติในการจัดเก็บรูปภาพ ต้องบันทึกพิกเซลสามค่าแต่ละพิกเซลด้วยความกว้างและความสูงที่ระบุ คุณจะต้องตัดสินใจว่าจะใช้รูปแบบใดดีที่สุด เช่นเดียวกับที่คุณทำกับปริศนาโอเอกซ์ เป็นขั้นตอนมาตรฐานใน TensorFlow และ TensorFlow.js เพื่อบันทึกค่า RGB ในมิติสุดท้ายของเทนเซอร์ นอกจากนี้ การจัดเก็บค่าสำหรับความสูง ความกว้าง และขนาดสีตามลำดับนั้นเป็นเรื่องปกติ แม้ว่าการระบุแถวและคอลัมน์จะเป็นลำดับการอ้างอิงองค์กรแบบดั้งเดิมสำหรับเมทริกซ์ แต่สิ่งนี้อาจดูแปลกสำหรับภาพถ่าย

ในทำนองเดียวกัน วิดีโอสามารถถูกมองว่าเป็นลำดับของภาพสีหรือกรอบของเวลา และวิดีโอสามารถสอนเป็นเทนเซอร์ 4 มิติ

กล่าวอีกนัยหนึ่ง เมตริกหลายมิติอาจแสดงข้อมูลประเภทต่างๆ จากโลกทางกายภาพได้อย่างง่ายดาย รวมถึงข้อมูลเซ็นเซอร์และเครื่องมือ ข้อมูลเชิงพาณิชย์และการเงิน และข้อมูลจากการทดลองทางวิทยาศาสตร์หรือทางสังคม ทำให้เหมาะสำหรับการประมวลผลโดยอัลกอริทึม ML/DL ภายใน คอมพิวเตอร์.

สรุป

Pytorch เป็นกรอบการเรียนรู้ของเครื่องที่เขียนด้วย Python ไลบรารี Python จำนวนมาก เช่น torch-vision และ Timm สำหรับการมองเห็นด้วยคอมพิวเตอร์ ถูกสร้างขึ้นบน PyTorch สามารถเข้าถึงโมเดลการเรียนรู้เชิงลึกที่สร้างไว้ล่วงหน้าจำนวนมาก Pytorch สามารถประมวลผลข้อมูลล่วงหน้า สร้างโมเดลข้อมูล และปรับใช้โมเดลในแอปพลิเคชัน/คลาวด์ของคุณ Tensor เป็นหน่วยการสร้างพื้นฐานของ Pytorch และโดยพื้นฐานแล้วจะเหมือนกับอาร์เรย์ Numpy ส่วนใหญ่ใช้สำหรับการแปลงรูปภาพ เสียง ให้เป็นรูปแบบทางคณิตศาสตร์ที่ใช้สำหรับการประมวลผลของคอมพิวเตอร์ ภาพสีหรือโทนสีเทาจะถือเป็นเทนเซอร์ 3 มิติ และวิดีโอจะถือเป็นเทนเซอร์ 4 มิติ

สื่อที่แสดงในบทความนี้ไม่ได้เป็นของ Analytics Vidhya และถูกใช้ตามดุลยพินิจของผู้เขียน 

ประทับเวลา:

เพิ่มเติมจาก การวิเคราะห์ วิทยา