PyTorch का उपयोग करके रैखिक प्रतिगमन

| | | | | | | | |

सबसे पहले, आपको अपने पायथन वातावरण में PyTorch को स्थापित करना होगा। ऐसा करने का सबसे आसान तरीका है — pip या conda टूल का उपयोग करें। pytorch.org पर जाएं और अपने पायथन इंटरप्रेटर और पैकेज मैनेजर का वह संस्करण इंस्टॉल करें जिसका आप उपयोग करना चाहते हैं।


# हम इस Python कोड को Jupyter नोटबुक पर चला सकते हैं
# सही वर्जन को अपने आप इंस्टॉल करने के लिए
<कोड वर्ग = "टिप्पणियां"> # PyTorch.


# http://pytorch.org / os आयात पथ से

< से कोड वर्ग = "सादा"> Wheel.pep425tags <कोड वर्ग = "कीवर्ड"> आयात <कोड वर्ग = "सादा"> get_abbr_impl, get_impl_ver, get_abi_tag

मंच <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "स्ट्रिंग"> `{} {} - {}` <कोड वर्ग = "सादा">। <कोड वर्ग = "कार्य आयन"> प्रारूप <कोड वर्ग = "सादा"> (get_abbr_impl (), get_impl_ver (), get_abi_tag ())

त्वरक = `cu80` if path.exists ( `/ ऑप्ट / बिन / एनवीडिया-एसएमआई` <कोड वर्ग = "सादा">) <कोड वर्ग = "कीवर्ड"> अन्य <कोड वर्ग = " string"> `cpu`


<कोड cla एसएस = "सादा">! पाइप स्थापित करें <कोड वर्ग = "कीवर्ड"> - <कोड वर्ग = "सादा"> क्यू http: <कोड वर्ग = "कीवर्ड"> / <कोड वर्ग = "कीवर्ड"> / <कोड वर्ग = "सादा"> download.pytorch.org <कोड वर्ग = "कीवर्ड"> / <कोड वर्ग = "सादा"> whl < /कोड> <कोड वर्ग = "कीवर्ड"> / <कोड वर्ग = "सादा"> {त्वरक} <कोड वर्ग = "कीवर्ड"> / <कोड वर्ग = "सादा" "> मशाल <कोड वर्ग =" कीवर्ड "> - <कोड वर्ग =" मान "> 0.3 <कोड वर्ग = "सादा">। 0.post4 - {platform} - <कोड क्लास = "प्लेन"> linux_x86_64.whl टॉर्चविजन

PyTorch इंस्टाल होने के साथ, चलिए अब कोड को देखें।
आवश्यक पुस्तकालय कार्यों और वस्तुओं को आयात करने के लिए नीचे दो पंक्तियाँ लिखें।


<तालिका सीमा = "0 "सेलपैडिंग =" 0 "सेलस्पेसिंग =" 0 " >

import टॉर्च

<कोड वर्ग = "कीवर्ड"> से <कोड वर्ग = "सादा"> टॉर्च। वेरिएबल

हम कुछ डेटा भी परिभाषित करते हैं और इसे वेरिएबल x_data और y_data, इस प्रकार है:


<कोड वर्ग = "सादा"> x_data <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = " सादा"> चर (मशाल। टेंसर ([[ 1.0 <कोड क्लास = "प्लेन">], [ <कोड क्लास = "वैल्यू"> 2.0 <कोड क्लास = "प्लेन">], [ 3.0 ]]))

y_data = Variable (torch.Tensor ([[ 2.0 ) <कोड वर्ग = "सादा">], [ <कोड वर्ग = "मान"> 4.0 <कोड वर्ग = "सादा">], [ <कोड वर्ग = "मान" > 6.0 <कोड वर्ग = "सादा">]]))

यहां x_data & #8212; हमारा स्वतंत्र चर, और y_data — हमारे आश्रित चर। यह अभी के लिए हमारा डेटासेट होगा। अगला, हमें अपने मॉडल को परिभाषित करने की आवश्यकता है। हमारे मॉडल को परिभाषित करने में दो मुख्य चरण शामिल हैं। वे हैं:

  1. हमारे मॉडल को प्रारंभ करना।
  2. फॉरवर्ड पास घोषित करना।

हम निम्न वर्ग का उपयोग करते हैं:

class LinearRegressionModel (torch.nn.Module):


def __ init __ ( self ):

super <कोड वर्ग = "सादा"> (LinearRegressionModel, self ) .__ init __ ()

<कोड वर्ग ="अपरिभाषित रिक्त स्थान"> self . रैखिक <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> मशाल। एनएन। रैखिक ( <कोड वर्ग = "मान"> 1 < कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 1 <कोड वर्ग = "सादा">) <कोड वर्ग = "टिप्पणियां"> # एक इनपुट और एक निकास


def आगे ( स्वयं <कोड वर्ग = "सादा">, x):

कोड वर्ग = "सादा"> y_pred <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "रंग 1"> स्वयं <कोड वर्ग = "सादा">। रैखिक (x)

<कोड वर्ग = "कीवर्ड"> वापसी <कोड वर्ग = "सादा"> y_pred

जैसा कि आप देख सकते हैं, हमारा मॉडल वर्ग torch.nn.module का एक उपवर्ग है। इसके अलावा, चूंकि हमारे यहां केवल एक इनपुट और एक आउटपुट है, इसलिए हम 1 के इनपुट और आउटपुट आकार के साथ एक रैखिक मॉडल का उपयोग करते हैं। इसके बाद, हम इस मॉडल का एक ऑब्जेक्ट बनाते हैं।

# हमारा मॉडल

our_model = <कोड वर्ग = "सादा"> LinearRegressionModel ()

उसके बाद एक अनुकूलक चुनें और हानि मानदंड। यहाँ हम माध्य चुकता त्रुटि (MSE) को हमारे हानि फलन के रूप में और Stochastic Gradient Descent (SGD) को हमारे अनुकूलक के रूप में उपयोग करेंगे। हम सीखने की दर को भी मनमाने ढंग से 0.01 पर तय करते हैं।


<टेबल बॉर्डर = "0" सेलपैडिंग = "0" सेलस्पेसिंग = " 0 ">

<कोड वर्ग ="सादा"> मानदंड <कोड वर्ग ="कीवर्ड "> = <कोड वर्ग = "सादा"> टॉर्च.एनएन.MSELoss (आकार_औसत <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "रंग 1"> गलत <कोड वर्ग = "सादा">)

<कोड वर्ग = "सादा"> अनुकूलक <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> टॉर्च। ऑप्टिम। एसजीडी (our_model.parameters (), lr <कोड) क्लास = "कीवर्ड"> = <कोड क्लास = "वैल्यू"> 0.01 <कोड क्लास = "प्लेन">)

p>

अब हम अपने सीखने के चरण में आते हैं। हम प्रशिक्षण के दौरान 500 बार निम्नलिखित कार्य करते हैं:

  1. हमारे डेटा में पास करके और अनुमानित y मान का पता लगाकर लाइव स्थानांतरण करें।
  2. एमएसई का उपयोग करके नुकसान की गणना करें।
  3. सभी ग्रेडिएंट्स को 0 पर रीसेट करें, बैक प्रोपेगेट करें और फिर वेट अपडेट करें।

युग में <कोड वर्ग = "कार्य"> श्रेणी <कोड वर्ग = "सादा"> ( <कोड वर्ग = "मान"> 500 <कोड वर्ग = "सादा">):


# फॉरवर्ड पास:

मॉडल के लिए #x

<कोड वर्ग = "सादा"> pred_y <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> our_model (x_data)


< कोड वर्ग = "अपरिभाषित रिक्त स्थान"> <कोड वर्ग =" टिप्पणियाँ "> # गणना करें और प्रिंट खो दें

loss = मानदंड (pred_y, y_data)


# जीरो ग्रेडिएंट्स, बैकट्रैक

# और वेट अपडेट करें।

Optimizer.zero_grad ()

loss.backward ()

अनुकूलक.स्टेप ()

प्रिंट <कोड क्लास = "पीएलए इन "> ( <कोड क्लास = "स्ट्रिंग"> `एपोच {}, लॉस {} ` <कोड क्लास =" प्लेन ">। <कोड वर्ग = "कार्य"> प्रारूप <कोड वर्ग = "सादा"> (युग, हानि। डेटा [ <कोड वर्ग = "मान"> 0 ]))

प्रशिक्षण पूरा करने के बाद हम जांचते हैं कि हमें सही परिणाम मिल रहे हैं या नहीं मॉडल जिसे हमने परिभाषित किया है। इसलिए हम इसे एक अज्ञात x_data मान के लिए जाँचते हैं, इस मामले में 4.0।


new_var < कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> चर (मशाल। टेंसर ([[[ <कोड वर्ग = "मान"> 4.0 <कोड वर्ग = "सादा">]]))

<कोड वर्ग = "सादा"> pred_y <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = " प्लेन"> Our_model (new_var)

Print ( "पूर्वानुमान (प्रशिक्षण के बाद)" <कोड वर्ग =" सादा ">, <कोड वर्ग =" मान "> 4 <कोड वर्ग =" सादा ">, Our_model ( new_var) .data [ 0 ] [ 0 ])

यदि आपने सभी चरणों का सही ढंग से पालन किया है, तो आप देखेंगे कि प्रविष्टि 4.0 के लिए आपको एक मूल्य 8.0 के बहुत करीब है, जैसा कि नीचे दिखाया गया है। इस प्रकार, हमारा मॉडल अनिवार्य रूप से स्पष्ट प्रोग्रामिंग के बिना इनपुट और आउटपुट के बीच संबंध सीखता है।

पूर्वानुमान (प्रशिक्षण के बाद) 4 7.966438293457031

संदर्भ के लिए, आप इस लेख के लिए सभी कोड नीचे दिए गए हैं:


<कोड वर्ग = "कीवर्ड"> आयात <कोड वर्ग = "सादा"> मशाल p>

<कोड वर्ग = "कीवर्ड"> से "सादा"> चर

<कोड वर्ग =" अपरिभाषित रिक्त स्थान ">

< कोड वर्ग =" सादा "> x_data < कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> चर (मशाल। टेंसर ([[ <कोड वर्ग = "मान"> 1.0 <कोड वर्ग = " सादा">], [ <कोड वर्ग =" मान "> 2.0 <कोड वर्ग =" सादा ">], [ <कोड वर्ग = "मान"> 3.0 <कोड वर्ग = "सादा">]]))

<कोड वर्ग = "सादा"> y_data <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> वी ariable (मशाल। टेंसर ([[ 2.0 ], [ 4.0 ], [ 6.0 ]]))



class LinearRegressionModel (torch.nn.Module):


<कोड वर्ग = "कीवर्ड"> def <कोड वर्ग = "सादा"> __ init __ ( <कोड वर्ग = "रंग 1"> स्वयं <कोड वर्ग = "सादा">):

सुपर (LinearRegressionModel, स्वयं <कोड वर्ग = "सादा">) .__ init __ ()

<कोड वर्ग = "रंग 1"> स्वयं <कोड वर्ग = "सादा">। रैखिक <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> मशाल। एनएन। रैखिक ( <कोड वर्ग = "मान"> 1 < कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 1 <कोड वर्ग = "सादा">) <कोड वर्ग = "टिप्पणियां"> # एक इनपुट और एक आउटपुट


def आगे ( स्वयं <कोड वर्ग = "सादा">, x):

कोड वर्ग = "सादा"> y_pred <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "रंग 1"> स्वयं <कोड वर्ग = "सादा">। रैखिक (x)

<कोड वर्ग = "कीवर्ड"> वापसी <कोड वर्ग = "सादा"> y_pred


# हमारा मॉडल

our_model = LinearRegressionModel ()

मानदंड = <कोड वर्ग = "सादा"> टॉर्च.एनएन.एमएसईलॉस (आकार_औसत <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "रंग 1"> गलत < कोड वर्ग = "सादा">)

कोड वर्ग = "सादा"> अनुकूलक <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = " सादा"> मशाल। ऑप्टिम। SGD (our_model.parameters (), lr = 0.01 ) code>


<कोड वर्ग = "कीवर्ड"> के लिए <कोड वर्ग = "सादा"> युग <कोड वर्ग = "कीवर्ड"> <कोड वर्ग = "फ़ंक्शंस"> श्रेणी <कोड वर्ग = "सादा"> ( <कोड वर्ग = "मान"> 500 <कोड वर्ग = "सादा">):

# फॉरवर्ड पास: पासिंग द्वारा प्रेडिक्टेड y की गणना करें कोड>

<कोड वर्ग = "अपरिभाषित रिक्त स्थान"> <कोड वर्ग = "टिप्पणियां"> # —Ö मॉडल के लिए

कोड वर्ग = "सादा"> pred_y <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> our_model (x_data)


< कोड वर्ग = "टिप्पणियां"> # गणना करें और प्रिंट खो दें

<कोड वर्ग ="सादा "> हानि <कोड वर्ग ="कीवर्ड"> = < कोड वर्ग = "सादा"> मानदंड (pred_y, y_data)


<कोड वर्ग = "c omments"> # शून्य ग्रेडिएंट, बैक पास,

# और वज़न अपडेट करें।

अनुकूलक.zero_grad ()

<कोड वर्ग = "अपरिभाषित रिक्त स्थान" > <कोड वर्ग = "सादा"> loss.backward ()

<कोड वर्ग = "अपरिभाषित रिक्त स्थान" > <कोड वर्ग = "सादा"> अनुकूलक। चरण ()

कोड वर्ग = "कीवर्ड "> प्रिंट <कोड वर्ग = "सादा"> ( <कोड वर्ग = "स्ट्रिंग"> `युग {}, हानि {}` <कोड वर्ग = "सादा">। format (युग, loss.data [ 0 < कोड वर्ग = "सादा">]))


<कोड वर्ग = "सादा"> new_var <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> चर (मशाल। टेंसर ([[ <कोड वर्ग = "मान"> 4.0 <कोड वर्ग = "सादा">]])) /p>

pred_y = our_model (new_var)

<कोड वर्ग = "कीवर्ड"> प्रिंट <कोड वर्ग = "सादा"> ( <कोड वर्ग = "स्ट्रिंग"> "पूर्वानुमान (प्रशिक्षण के बाद)" <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 4 <कोड वर्ग = "सादा">, our_model (new_var) .डेटा [ <कोड वर्ग = "मान"> 0 <कोड वर्ग = "सादा">] [ <कोड वर्ग = "मान"> 0 <कोड वर्ग = "सादा">])

लिंक

हमें उम्मीद है कि इस लेख ने समस्या को हल करने में आपकी मदद की है। PyTorch का उपयोग करके रैखिक प्रतिगमन के अलावा, अन्य __del__-संबंधित विषयों की जाँच करें।

पायथन में उत्कृष्टता प्राप्त करना चाहते हैं? सर्वश्रेष्ठ पायथन ऑनलाइन पाठ्यक्रम 2022 की हमारी समीक्षा देखें। यदि आप डेटा विज्ञान में रुचि रखते हैं, तो यह भी देखें कि R में प्रोग्रामिंग कैसे सीखें

वैसे, यह सामग्री अन्य भाषाओं में भी उपलब्ध है:

<उल>
  • PyTorch का उपयोग करके रैखिक प्रतिगमन
  • Italiano PyTorch का उपयोग करके रैखिक प्रतिगमन
  • Deutsch PyTorch का उपयोग करके रैखिक प्रतिगमन
  • Français PyTorch का उपयोग करके रैखिक प्रतिगमन
  • Español PyTorch का उपयोग करके रैखिक प्रतिगमन
  • Türk PyTorch का उपयोग करके रैखिक प्रतिगमन
  • Русский PyTorch का उपयोग करके रैखिक प्रतिगमन
  • Português PyTorch का उपयोग करके रैखिक प्रतिगमन
  • Polski PyTorch का उपयोग करके रैखिक प्रतिगमन
  • Nederlandse PyTorch का उपयोग करके रैखिक प्रतिगमन
  • 中文 PyTorch का उपयोग करके रैखिक प्रतिगमन
  • 한국어 PyTorch का उपयोग करके रैखिक प्रतिगमन
  • 日本語 PyTorch का उपयोग करके रैखिक प्रतिगमन
  • हिन्दी PyTorch का उपयोग करके रैखिक प्रतिगमन


  • Oliver Krasiko

    Singapore | 2022-11-29

    समझाने के लिए धन्यवाद! मैं कुछ घंटों के लिए PyTorch का उपयोग करके रैखिक प्रतिगमन के साथ फंस गया था, आखिरकार इसे पूरा कर लिया. मुझे उम्मीद है कि यह अब और नहीं उभरेगा

    Schneider OConnell

    Moscow | 2022-11-29

    मैं अपने कोडिंग साक्षात्कार की तैयारी कर रहा था, इसे स्पष्ट करने के लिए धन्यवाद - पायथन में PyTorch का उपयोग करके रैखिक प्रतिगमन सबसे सरल नहीं है. मुझे उम्मीद है कि यह अब और नहीं उभरेगा

    Boris Danburry

    London | 2022-11-29

    सीधे शब्दों में कहें और साफ़ करें। साझा करने के लिए धन्यवाद। PyTorch का उपयोग करके रैखिक प्रतिगमन और square के साथ अन्य समस्याएं हमेशा मेरी कमजोर बिंदु थीं. मुझे उम्मीद है कि यह अब और नहीं उभरेगा

    Shop

    Learn programming in R: courses

    $

    Best Python online courses for 2022

    $

    Best laptop for Fortnite

    $

    Best laptop for Excel

    $

    Best laptop for Solidworks

    $

    Best laptop for Roblox

    $

    Best computer for crypto mining

    $

    Best laptop for Sims 4

    $

    Latest questions

    NUMPYNUMPY

    Common xlabel/ylabel for matplotlib subplots

    12 answers

    NUMPYNUMPY

    How to specify multiple return types using type-hints

    12 answers

    NUMPYNUMPY

    Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

    12 answers

    NUMPYNUMPY

    Flake8: Ignore specific warning for entire file

    12 answers

    NUMPYNUMPY

    glob exclude pattern

    12 answers

    NUMPYNUMPY

    How to avoid HTTP error 429 (Too Many Requests) python

    12 answers

    NUMPYNUMPY

    Python CSV error: line contains NULL byte

    12 answers

    NUMPYNUMPY

    csv.Error: iterator should return strings, not bytes

    12 answers


    Wiki

    Python | How to copy data from one Excel sheet to another

    Common xlabel/ylabel for matplotlib subplots

    Check if one list is a subset of another in Python

    sin

    How to specify multiple return types using type-hints

    exp

    Printing words vertically in Python

    exp

    Python Extract words from a given string

    Cyclic redundancy check in Python

    Finding mean, median, mode in Python without libraries

    cos

    Python add suffix / add prefix to strings in a list

    Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

    Python - Move item to the end of the list

    Python - Print list vertically