కృత్రిమ న్యూరల్ నెట్‌వర్క్ (ANN): టెన్సర్‌ఫ్లో ఉదాహరణ ట్యుటోరియల్

ఆర్టిఫిషియల్ న్యూరల్ నెట్‌వర్క్ అంటే ఏమిటి?

ఒక కృత్రిమ న్యూరల్ నెట్‌వర్క్ (ANN) అనేది కృత్రిమ న్యూరాన్స్ అని పిలవబడే కనెక్ట్ చేయబడిన యూనిట్ల సేకరణ ఆధారంగా కృత్రిమ మెదడులను సృష్టించడానికి బయోలాజికల్ న్యూరల్ నెట్‌వర్క్‌ల ద్వారా ప్రేరణ పొందిన కంప్యూటర్ సిస్టమ్. ఇది సమాచారాన్ని మానవులుగా విశ్లేషించడానికి మరియు ప్రాసెస్ చేయడానికి రూపొందించబడింది. కృత్రిమ న్యూరల్ నెట్‌వర్క్ స్వీయ-అభ్యాస సామర్థ్యాలను కలిగి ఉంది, ఎక్కువ డేటా అందుబాటులో ఉన్నందున మెరుగైన ఫలితాలను అందిస్తుంది.

ఒక కృత్రిమ న్యూరల్ నెట్‌వర్క్ (ANN) నాలుగు ప్రధాన వస్తువులతో కూడి ఉంటుంది:

  • పొరలు: అన్ని అభ్యాసం పొరలలో జరుగుతుంది. 3 లేయర్‌లు ఉన్నాయి 1) ఇన్‌పుట్ 2) హిడెన్ మరియు 3) అవుట్‌పుట్
  • ఫీచర్ మరియు లేబుల్: నెట్‌వర్క్‌కు ఇన్‌పుట్ డేటా (ఫీచర్లు) మరియు నెట్‌వర్క్ నుండి అవుట్‌పుట్ (లేబుల్స్)
  • లాస్ ఫంక్షన్: మెట్రిక్ లెర్నింగ్ ఫేజ్ పనితీరును అంచనా వేయడానికి ఉపయోగిస్తారు
  • ఆప్టిమైజర్: నెట్‌వర్క్‌లో జ్ఞానాన్ని అప్‌డేట్ చేయడం ద్వారా అభ్యాసాన్ని మెరుగుపరచండి

ఒక న్యూరల్ నెట్‌వర్క్ ఇన్‌పుట్ డేటాను తీసుకుంటుంది మరియు వాటిని పొరల సమిష్టిలోకి నెట్టివేస్తుంది. నష్టం పనితీరుతో నెట్‌వర్క్ దాని పనితీరును అంచనా వేయాలి. లాస్ ఫంక్షన్ నెట్‌వర్క్‌కు జ్ఞానాన్ని స్వాధీనం చేసుకునే ముందు తీసుకోవలసిన మార్గం గురించి ఒక ఆలోచనను ఇస్తుంది. నెట్‌వర్క్ ఆప్టిమైజర్ సహాయంతో దాని పరిజ్ఞానాన్ని మెరుగుపరచాలి.

మీరు దిగువ బొమ్మను పరిశీలిస్తే, అంతర్లీన యంత్రాంగం మీకు అర్థమవుతుంది.

కృత్రిమ న్యూరల్ నెట్‌వర్క్

ప్రోగ్రామ్ కొన్ని ఇన్‌పుట్ విలువలను తీసుకుంటుంది మరియు వాటిని పూర్తిగా కనెక్ట్ చేసిన రెండు పొరలుగా నెడుతుంది. మీకు గణిత సమస్య ఉందని ఊహించండి, మీరు చేసే మొదటి పని సమస్యను పరిష్కరించడానికి సంబంధిత అధ్యాయాన్ని చదవడం. సమస్యను పరిష్కరించడానికి మీరు మీ కొత్త జ్ఞానాన్ని వర్తింపజేయండి. మీరు బాగా స్కోర్ చేయకుండా ఉండే అవకాశాలు ఎక్కువగా ఉన్నాయి. నెట్‌వర్క్ కోసం కూడా అదే. మొదటిసారి అది డేటాను చూసినప్పుడు మరియు ఒక అంచనా వేసినప్పుడు, అది వాస్తవ డేటాతో సరిగ్గా సరిపోలదు.

దాని పరిజ్ఞానాన్ని మెరుగుపరచడానికి, నెట్‌వర్క్ ఆప్టిమైజర్‌ని ఉపయోగిస్తుంది. మా సారూప్యతలో, ఆప్టిమైజర్ అధ్యాయాన్ని మళ్లీ చదివినట్లుగా భావించవచ్చు. మీరు మళ్లీ చదవడం ద్వారా కొత్త అంతర్దృష్టులను/పాఠాన్ని పొందుతారు. అదేవిధంగా, నెట్‌వర్క్ ఆప్టిమైజర్‌ను ఉపయోగిస్తుంది, దాని పరిజ్ఞానాన్ని అప్‌డేట్ చేస్తుంది మరియు ఇంకా నేర్చుకోవాల్సిన అవసరం ఎంత ఉందో తనిఖీ చేయడానికి దాని కొత్త పరిజ్ఞానాన్ని పరీక్షిస్తుంది. అతి తక్కువ దోషాన్ని సాధ్యమయ్యే వరకు ప్రోగ్రామ్ ఈ దశను పునరావృతం చేస్తుంది.

మా గణిత సమస్య సారూప్యతలో, మీరు కోర్సు కంటెంట్‌ని పూర్తిగా అర్థం చేసుకునే వరకు మీరు పాఠ్యపుస్తక అధ్యాయాన్ని చాలాసార్లు చదివారని అర్థం. అనేకసార్లు చదివిన తర్వాత కూడా, మీరు పొరపాటు చేస్తుంటే, మీరు ప్రస్తుత విషయంతో జ్ఞాన సామర్థ్యాన్ని చేరుకున్నారని అర్థం. మీ స్కోర్ మెరుగుపరచడానికి మీరు విభిన్న పాఠ్యపుస్తకాన్ని ఉపయోగించాలి లేదా విభిన్న పద్ధతులను పరీక్షించాలి. న్యూరల్ నెట్‌వర్క్ కోసం, అదే ప్రక్రియ. లోపం 100%కి దూరంగా ఉంటే, కానీ వక్రత ఫ్లాట్‌గా ఉంటే, దీని అర్థం ప్రస్తుత నిర్మాణంతో; అది మరేమీ నేర్చుకోదు. జ్ఞానాన్ని మెరుగుపరచడానికి నెట్‌వర్క్‌ను మరింత ఆప్టిమైజ్ చేయాలి.

ఈ కృత్రిమ న్యూరల్ నెట్‌వర్క్ ట్యుటోరియల్‌లో, మీరు నేర్చుకుంటారు-

న్యూరల్ నెట్‌వర్క్ ఆర్కిటెక్చర్

పొరలు

అన్ని లెర్నింగ్ జరిగే ఒక పొర. ఒక పొర లోపల, అనంతమైన బరువులు (న్యూరాన్లు) ఉన్నాయి. సాధారణ నాడీ నెట్‌వర్క్ తరచుగా దట్టంగా కనెక్ట్ చేయబడిన పొరల ద్వారా ప్రాసెస్ చేయబడుతుంది (పూర్తిగా కనెక్ట్ చేయబడిన పొరలు అని కూడా పిలుస్తారు). దీని అర్థం అన్ని ఇన్‌పుట్‌లు అవుట్‌పుట్‌కు కనెక్ట్ చేయబడ్డాయి.

ఒక సాధారణ న్యూరల్ నెట్‌వర్క్ ఇన్‌పుట్ యొక్క వెక్టర్ మరియు లేబుల్‌లను కలిగి ఉన్న స్కేలార్‌ను తీసుకుంటుంది. అత్యంత సౌకర్యవంతమైన సెటప్ అనేది కేవలం రెండు తరగతులతో కూడిన బైనరీ వర్గీకరణ: 0 మరియు 1.

నెట్‌వర్క్ ఇన్‌పుట్ తీసుకుంటుంది, దానిని కనెక్ట్ చేయబడిన అన్ని నోడ్‌లకు పంపుతుంది మరియు సిగ్నల్‌ను ఒక దానితో లెక్కిస్తుంది క్రియాశీలత ఫంక్షన్

న్యూరల్ నెట్‌వర్క్ ఆర్కిటెక్చర్

పై చిత్రంలో ఈ ఆలోచన ఉంది. మొదటి పొర రెండవ పొర కోసం ఇన్‌పుట్ విలువలు, దాచిన పొర అని పిలుస్తారు, మునుపటి పొర నుండి వెయిటెడ్ ఇన్‌పుట్‌ను అందుకుంటుంది

  1. మొదటి నోడ్ ఇన్‌పుట్ విలువలు
  2. న్యూరాన్ ఇన్‌పుట్ పార్ట్ మరియు యాక్టివేషన్ ఫంక్షన్‌గా కుళ్ళిపోయింది. ఎడమ భాగం మునుపటి పొర నుండి అన్ని ఇన్‌పుట్‌లను అందుకుంటుంది. కుడి భాగం అనేది యాక్టివేషన్ ఫంక్షన్‌లోకి ఇన్‌పుట్ పాస్‌ల మొత్తం.
  3. అవుట్‌పుట్ విలువ దాచిన పొరల నుండి లెక్కించబడుతుంది మరియు అంచనా వేయడానికి ఉపయోగించబడుతుంది. వర్గీకరణ కోసం, ఇది తరగతి సంఖ్యకు సమానం. తిరోగమనం కోసం, ఒక విలువ మాత్రమే అంచనా వేయబడుతుంది.

యాక్టివేషన్ ఫంక్షన్

నోడ్ యొక్క యాక్టివేషన్ ఫంక్షన్ ఇన్‌పుట్‌ల సమితి ఇచ్చిన అవుట్‌పుట్‌ను నిర్వచిస్తుంది. నెట్‌వర్క్ నాన్-లీనియర్ ప్యాటర్న్ నేర్చుకోవడానికి మీకు యాక్టివేషన్ ఫంక్షన్ అవసరం. ఒక సాధారణ యాక్టివేషన్ ఫంక్షన్ a రేలు, సరిచేసిన లీనియర్ యూనిట్. ఫంక్షన్ అన్ని ప్రతికూల విలువలకు సున్నా ఇస్తుంది.

ఇతర యాక్టివేషన్ విధులు:

  • పీస్‌వైస్ లీనియర్
  • సిగ్మాయిడ్
  • తాన్
  • లీకైన రేలు

నాడీ నెట్‌వర్క్‌ను నిర్మించేటప్పుడు తీసుకోవలసిన కీలక నిర్ణయం:

  • న్యూరల్ నెట్‌వర్క్‌లో ఎన్ని పొరలు
  • ప్రతి పొర కోసం ఎన్ని దాచిన యూనిట్లు

చాలా పొరలు మరియు దాచిన యూనిట్‌లతో కూడిన న్యూరల్ నెట్‌వర్క్ డేటా యొక్క సంక్లిష్ట ప్రాతినిధ్యాన్ని నేర్చుకోవచ్చు, కానీ ఇది నెట్‌వర్క్ యొక్క గణనను చాలా ఖరీదైనదిగా చేస్తుంది.

లాస్ ఫంక్షన్

మీరు దాచిన పొరలు మరియు యాక్టివేషన్ ఫంక్షన్‌ను నిర్వచించిన తర్వాత, మీరు లాస్ ఫంక్షన్ మరియు ఆప్టిమైజర్‌ను పేర్కొనాలి.

బైనరీ వర్గీకరణ కోసం, బైనరీ క్రాస్ ఎంట్రోపీ లాస్ ఫంక్షన్‌ను ఉపయోగించడం సాధారణ పద్ధతి. లీనియర్ రిగ్రెషన్‌లో, మీరు సగటు స్క్వేర్ ఎర్రర్‌ని ఉపయోగిస్తారు.

ఆప్టిమైజర్ పనితీరును అంచనా వేయడానికి లాస్ ఫంక్షన్ ఒక ముఖ్యమైన మెట్రిక్. శిక్షణ సమయంలో, ఈ మెట్రిక్ తగ్గించబడుతుంది. మీరు వ్యవహరిస్తున్న సమస్య రకాన్ని బట్టి మీరు ఈ పరిమాణాన్ని జాగ్రత్తగా ఎంచుకోవాలి.

ఆప్టిమైజర్

నష్టం పనితీరు మోడల్ పనితీరు యొక్క కొలత. నష్టాన్ని తగ్గించడానికి ఆప్టిమైజర్ నెట్‌వర్క్ బరువులను మెరుగుపరచడంలో సహాయపడుతుంది. వివిధ ఆప్టిమైజర్లు అందుబాటులో ఉన్నాయి, కానీ అత్యంత సాధారణమైనది స్టోకాస్టిక్ గ్రేడియంట్ డీసెంట్.

సంప్రదాయ ఆప్టిమైజర్లు:

  • మొమెంటం ఆప్టిమైజేషన్,
  • నెస్టెరోవ్ వేగవంతమైన ప్రవణత,
  • అడాగ్రాడ్,
  • ఆడమ్ ఆప్టిమైజేషన్

న్యూరల్ నెట్‌వర్క్ పరిమితులు

ఓవర్ ఫిట్టింగ్

సంక్లిష్టమైన న్యూరల్ నెట్‌తో ఒక సాధారణ సమస్య కనిపించని డేటాను సాధారణీకరించడంలో ఇబ్బందులు. చాలా బరువులు కలిగిన న్యూరల్ నెట్‌వర్క్ రైలు సెట్‌లోని నిర్దిష్ట వివరాలను చాలా బాగా గుర్తించగలదు కానీ తరచుగా అతిగా అమర్చడానికి దారితీస్తుంది. సమూహాలలో డేటా అసమతుల్యంగా ఉంటే (అనగా, కొన్ని సమూహాలలో తగినంత డేటా అందుబాటులో లేదు), శిక్షణ సమయంలో నెట్‌వర్క్ బాగా నేర్చుకుంటుంది, కానీ మునుపెన్నడూ చూడని డేటాకు అలాంటి నమూనాను సాధారణీకరించే సామర్థ్యం ఉండదు.

మెషిన్ లెర్నింగ్‌లో ఆప్టిమైజేషన్ మరియు సాధారణీకరణ మధ్య ట్రేడ్-ఆఫ్ ఉంది.

ఒక మోడల్‌ను ఆప్టిమైజ్ చేయడానికి శిక్షణ సమితి నష్టాన్ని తగ్గించే ఉత్తమ పారామితులను కనుగొనడం అవసరం.

సాధారణీకరణ, అయితే, కనిపించని డేటా కోసం మోడల్ ఎలా ప్రవర్తిస్తుందో తెలియజేస్తుంది.

మోడల్ నిర్దిష్ట వివరాలను లేదా శిక్షణ డేటా యొక్క అవాంఛిత నమూనాలను సంగ్రహించకుండా నిరోధించడానికి, మీరు వివిధ పద్ధతులను ఉపయోగించవచ్చు. తగినంత మొత్తంలో డేటాతో సమతుల్య డేటాసెట్ కలిగి ఉండటం ఉత్తమ పద్ధతి. ఓవర్ ఫిటింగ్ తగ్గించే కళ అంటారు క్రమబద్ధీకరణ . కొన్ని సంప్రదాయ పద్ధతులను సమీక్షిద్దాం.

నెట్‌వర్క్ పరిమాణం

చాలా పొరలు మరియు దాచిన యూనిట్‌లతో కూడిన న్యూరల్ నెట్‌వర్క్ అత్యంత అధునాతనమైనదిగా పిలువబడుతుంది. మోడల్ యొక్క సంక్లిష్టతను తగ్గించడానికి ఒక సరళమైన మార్గం దాని పరిమాణాన్ని తగ్గించడం. పొరల సంఖ్యను నిర్వచించడానికి ఉత్తమమైన పద్ధతి లేదు. మీరు చిన్న మొత్తంలో పొరతో ప్రారంభించాలి మరియు మోడల్ ఓవర్‌ఫిట్‌ను కనుగొనే వరకు దాని పరిమాణాన్ని పెంచుతుంది.

బరువు క్రమబద్ధీకరణ

నెట్‌వర్క్ బరువులకు అడ్డంకులను జోడించడం అనేది అతిగా అమర్చడాన్ని నిరోధించడానికి ఒక ప్రామాణిక టెక్నిక్. పరిమితి నెట్‌వర్క్ పరిమాణాన్ని చిన్న విలువలను మాత్రమే తీసుకునేలా చేస్తుంది. లోపం యొక్క నష్టం ఫంక్షన్‌కు అడ్డంకి జోడించబడింది. క్రమబద్ధీకరణలో రెండు రకాలు ఉన్నాయి:

L1: లాస్సో: ఖర్చు బరువు గుణకాల యొక్క సంపూర్ణ విలువకు అనులోమానుపాతంలో ఉంటుంది

L2: రిడ్జ్: వ్యయం బరువు గుణకాల విలువ యొక్క చతురస్రానికి అనులోమానుపాతంలో ఉంటుంది

వదిలివేయడం

డ్రాపౌట్ అనేది ఒక విచిత్రమైన కానీ ఉపయోగకరమైన టెక్నిక్. డ్రాపౌట్‌తో ఉన్న నెట్‌వర్క్ అంటే కొన్ని బరువులు యాదృచ్ఛికంగా సున్నాకి సెట్ చేయబడతాయి. మీరు బరువులు [0.1, 1.7, 0.7, -0.9] కలిగి ఉన్నారని ఊహించండి. న్యూరల్ నెట్‌వర్క్ డ్రాపౌట్ కలిగి ఉంటే, యాదృచ్ఛికంగా పంపిణీ చేయబడిన 0. [0, 0, 0, -0.9] అవుతుంది. డ్రాపౌట్‌ను నియంత్రించే పరామితి డ్రాపౌట్ రేటు. సున్నాలకు ఎన్ని బరువులు సెట్ చేయాలో రేట్ నిర్వచిస్తుంది. 0.2 మరియు 0.5 మధ్య రేటు ఉండటం సాధారణం.

TensorFlow లో న్యూరల్ నెట్‌వర్క్ ఉదాహరణ

ఒక సాధారణ వర్గీకరణ సమస్య కోసం న్యూరల్ నెట్‌వర్క్ ఎలా పనిచేస్తుందనే దానిపై కృత్రిమ న్యూరల్ నెట్‌వర్క్ ఉదాహరణను చూద్దాం. యాదృచ్ఛిక విలువతో x1 మరియు x2 అనే రెండు ఇన్‌పుట్‌లు ఉన్నాయి. అవుట్‌పుట్ బైనరీ క్లాస్. రెండు లక్షణాల ఆధారంగా లేబుల్‌ని వర్గీకరించడమే లక్ష్యం. ఈ పనిని నిర్వహించడానికి, నాడీ నెట్‌వర్క్ నిర్మాణం క్రింది విధంగా నిర్వచించబడింది:

  • రెండు దాచిన పొరలు
    • మొదటి పొర నాలుగు పూర్తిగా కనెక్ట్ చేయబడిన న్యూరాన్‌లను కలిగి ఉంటుంది
    • రెండవ పొరలో పూర్తిగా కనెక్ట్ చేయబడిన రెండు న్యూరాన్లు ఉన్నాయి
  • యాక్టివేషన్ ఫంక్షన్ ఒక రిలు
  • 0.003 లెర్నింగ్ రేట్‌తో L2 రెగ్యులరైజేషన్‌ని జోడించండి

నెట్‌వర్క్ 180 యుగాల సమయంలో బ్యాచ్ సైజు 10. బరువును ఆప్టిమైజ్ చేస్తుంది. క్రింద ఉన్న ANN ఉదాహరణ వీడియోలో, బరువులు ఎలా అభివృద్ధి చెందుతాయో మరియు నెట్‌వర్క్ వర్గీకరణ మ్యాపింగ్‌ను ఎలా మెరుగుపరుస్తుందో మీరు చూడవచ్చు.

అన్నింటిలో మొదటిది, నెట్‌వర్క్ అన్ని బరువులకు యాదృచ్ఛిక విలువలను కేటాయిస్తుంది.

  • యాదృచ్ఛిక బరువులతో, అనగా, ఆప్టిమైజేషన్ లేకుండా, అవుట్‌పుట్ నష్టం 0.453. దిగువ చిత్రం వివిధ రంగులతో నెట్‌వర్క్‌ను సూచిస్తుంది.
  • సాధారణంగా, నారింజ రంగు ప్రతికూల విలువలను సూచిస్తుంది, అయితే నీలం రంగులు సానుకూల విలువలను చూపుతాయి.
  • డేటా పాయింట్లు ఒకే ప్రాతినిధ్యం కలిగి ఉంటాయి; నీలం రంగులో ఉండేవి పాజిటివ్ లేబుల్‌లు మరియు ఆరెంజ్ ఒకటి నెగెటివ్ లేబుల్‌లు.

రెండవ దాచిన పొర లోపల, బరువులు గుర్తును అనుసరించి పంక్తులు రంగులో ఉంటాయి. నారింజ రేఖలు ప్రతికూల బరువులు మరియు నీలం రంగు సానుకూల బరువులను కేటాయిస్తాయి

మీరు గమనిస్తే, అవుట్‌పుట్ మ్యాపింగ్‌లో, నెట్‌వర్క్ చాలా తప్పులు చేస్తోంది. ఆప్టిమైజేషన్ తర్వాత నెట్‌వర్క్ ఎలా ప్రవర్తిస్తుందో చూద్దాం.

క్రింద ఉన్న ANN ఉదాహరణ యొక్క చిత్రం ఆప్టిమైజ్ చేయబడిన నెట్‌వర్క్ ఫలితాలను వర్ణిస్తుంది. ముందుగా, డేటా పాయింట్‌ని ఎలా వర్గీకరించాలో నెట్‌వర్క్ విజయవంతంగా నేర్చుకున్నట్లు మీరు గమనించవచ్చు. మీరు ముందు చిత్రం నుండి చూడవచ్చు; ప్రారంభ బరువు -0.43 కాగా, ఆప్టిమైజేషన్ తర్వాత -0.95 బరువు ఉంటుంది.

మరింత దాచిన పొరలు మరియు న్యూరాన్‌లతో నెట్‌వర్క్‌ల కోసం ఈ ఆలోచనను సాధారణీకరించవచ్చు. మీరు చుట్టూ ఆడవచ్చు లింక్ .

టెన్సర్‌ఫ్లోతో న్యూరల్ నెట్‌వర్క్‌కు శిక్షణ ఇవ్వండి

TensorFlow న్యూరల్ నెట్‌వర్క్ ట్యుటోరియల్ యొక్క ఈ భాగంలో, API యొక్క ఎస్టిమేటర్ DNNClassifier ని ఉపయోగించి TensorFlow ANN తో ఒక న్యూరల్ నెట్‌వర్క్‌కు ఎలా శిక్షణ ఇవ్వాలో మీరు నేర్చుకుంటారు.

మీ మొదటి న్యూరల్ నెట్‌వర్క్‌కు శిక్షణ ఇవ్వడానికి మేము MNIST డేటాసెట్‌ను ఉపయోగిస్తాము. టెన్సర్‌ఫ్లోతో న్యూరల్ నెట్‌వర్క్ శిక్షణ చాలా క్లిష్టంగా లేదు. మునుపటి ట్యుటోరియల్‌ల మాదిరిగానే ప్రిప్రాసెసింగ్ దశ కనిపిస్తుంది. మీరు ఈ క్రింది విధంగా కొనసాగుతారు:

  • దశ 1: డేటాను దిగుమతి చేయండి
  • దశ 2: డేటాను మార్చండి
  • దశ 3: టెన్సర్‌ని నిర్మించండి
  • దశ 4: మోడల్‌ను రూపొందించండి
  • దశ 5: మోడల్‌కు శిక్షణ ఇవ్వండి మరియు విశ్లేషించండి
  • దశ 6: మోడల్‌ను మెరుగుపరచండి

దశ 1) డేటాను దిగుమతి చేయండి

ముందుగా, మీరు అవసరమైన లైబ్రరీని దిగుమతి చేసుకోవాలి. క్రింద ఉన్న టెన్సర్‌ఫ్లో న్యూరల్ నెట్‌వర్క్ ఉదాహరణలో చూపిన విధంగా మీరు సైకిట్ లెర్న్ ఉపయోగించి MNIST డేటాసెట్‌ను దిగుమతి చేసుకోవచ్చు.

MNIST డేటాసెట్ అనేది కొత్త టెక్నిక్‌లను లేదా అల్గారిథమ్‌లను పరీక్షించడానికి సాధారణంగా ఉపయోగించే డేటాసెట్. ఈ డేటాసెట్ 28x28 పిక్సెల్ ఇమేజ్ యొక్క సేకరణ, ఇది చేతితో రాసిన అంకె 0 నుండి 9 వరకు ఉంటుంది, ప్రస్తుతం, పరీక్షలో అతి తక్కువ లోపం 0.27 శాతం 7 కన్వ్యూషనల్ న్యూరల్ నెట్‌వర్క్‌ల కమిటీ. | _+_ |

మీరు ఈ చిరునామాలో తాత్కాలికంగా సైన్‌కిట్ లెర్న్‌ని డౌన్‌లోడ్ చేసుకోవచ్చు. అనుకూలమైన ఫోల్డర్‌లో డేటాసెట్‌ను కాపీ చేసి పేస్ట్ చేయండి. పైథాన్‌కి డేటాను దిగుమతి చేయడానికి, మీరు Scikit లెర్న్ నుండి getch_mldata ని ఉపయోగించవచ్చు. డేటాను పొందడానికి fetch_mldata లోపల ఫైల్ మార్గాన్ని అతికించండి. | _+_ |

ఆ తర్వాత, మీరు డేటాను దిగుమతి చేసుకోండి మరియు రెండు డేటాసెట్‌ల ఆకారాన్ని పొందండి. | _+_ |

దశ 2) డేటాను మార్చండి

మునుపటి ట్యుటోరియల్‌లో, అవుట్‌లైయర్‌ల ప్రభావాన్ని పరిమితం చేయడానికి మీరు డేటాను మార్చాల్సిన అవసరం ఉందని మీరు తెలుసుకున్నారు. ఈ న్యూరల్ నెట్‌వర్క్స్ ట్యుటోరియల్‌లో, మీరు min-max స్కేలర్‌ని ఉపయోగించి డేటాను మారుస్తారు. ఫార్ములా: | _+_ |

Scikit ఇప్పటికే దాని కోసం ఒక ఫంక్షన్‌ను కలిగి ఉంది: MinMaxScaler () | _+_ |

దశ 3) టెన్సర్‌ని నిర్మించండి

టెన్సర్‌ఫ్లో టెన్సర్‌ని సృష్టించే మార్గం మీకు ఇప్పుడు సుపరిచితం. మీరు రైలు సెట్‌ను సంఖ్యా కాలమ్‌గా మార్చవచ్చు. | _+_ |

దశ 4) మోడల్‌ను రూపొందించండి

న్యూరల్ నెట్‌వర్క్ యొక్క ఆర్కిటెక్చర్‌లో మొదటి లేయర్‌కు 300 యూనిట్లు మరియు రెండవదానికి 100 యూనిట్‌లతో 2 హిడెన్ లేయర్‌లు ఉంటాయి. మేము మా స్వంత అనుభవం ఆధారంగా ఈ విలువను ఉపయోగిస్తాము. మీరు థీసెస్ విలువలను ట్యూన్ చేయవచ్చు మరియు అది నెట్‌వర్క్ యొక్క ఖచ్చితత్వాన్ని ఎలా ప్రభావితం చేస్తుందో చూడవచ్చు.

మోడల్‌ని రూపొందించడానికి, మీరు ఎస్టిమేటర్ DNNClassifier ని ఉపయోగించండి. ఫీచర్_కాలమ్స్ ఆర్గ్యుమెంట్‌లకు మీరు లేయర్‌ల సంఖ్యను జోడించవచ్చు. శిక్షణ సమితిలో పది తరగతులు ఉన్నందున మీరు తరగతుల సంఖ్యను 10 కి సెట్ చేయాలి. ఎస్టిమేటర్ ఆబ్జెక్ట్ యొక్క వాక్యనిర్మాణం మీకు ఇప్పటికే తెలిసినది. వాదనలు నిలువు వరుసలు, తరగతుల సంఖ్య మరియు model_dir ఫీచర్లను ఖచ్చితంగా మునుపటి ట్యుటోరియల్‌తో సమానంగా ఉంటాయి. కొత్త వాదన దాచిన_యూనిట్ పొరల సంఖ్యను నియంత్రిస్తుంది మరియు న్యూరల్ నెట్‌వర్క్‌కు ఎన్ని నోడ్‌లను కనెక్ట్ చేయాలి. దిగువ కోడ్‌లో, మొదటిది 300 నోడ్‌లను కలుపుతూ, రెండవది 100 నోడ్‌లతో రెండు దాచిన పొరలు ఉన్నాయి.

అంచనాను రూపొందించడానికి, కింది పారామితులతో tf.estimator.DNN క్లాసిఫైయర్‌ని ఉపయోగించండి:

  • ఫీచర్_కాలమ్స్: నెట్‌వర్క్‌లో ఉపయోగించడానికి నిలువు వరుసలను నిర్వచించండి
  • hide_units: దాచిన న్యూరాన్‌ల సంఖ్యను నిర్వచించండి
  • n_classes: అంచనా వేయడానికి తరగతుల సంఖ్యను నిర్వచించండి
  • model_dir: టెన్సర్‌బోర్డ్ మార్గాన్ని నిర్వచించండి
 import numpy as np import tensorflow as tf np.random.seed(1337) 

దశ 5) మోడల్‌కు శిక్షణ ఇవ్వండి మరియు మూల్యాంకనం చేయండి

మోడల్ శిక్షణ మరియు మూల్యాంకనం చేయడానికి మీరు నంపి పద్ధతిని ఉపయోగించవచ్చు | _+_ |

అవుట్‌పుట్: | _+_ |

ప్రస్తుత ఆర్కిటెక్చర్ 96 శాతం మూల్యాంకనం సెట్‌పై ఖచ్చితత్వానికి దారితీస్తుంది.

దశ 6) మోడల్‌ను మెరుగుపరచండి

మీరు క్రమబద్ధీకరణ పారామితులను జోడించడం ద్వారా మోడల్‌ను మెరుగుపరచడానికి ప్రయత్నించవచ్చు.

మేము ఆడమ్ ఆప్టిమైజర్‌ను 0.3 డ్రాప్‌అవుట్ రేట్‌తో ఉపయోగిస్తాము, X యొక్క L1 మరియు Y యొక్క L2. టెన్సర్‌ఫ్లో న్యూరల్ నెట్‌వర్క్‌లో, మీరు ఆప్టిమైజర్ పేరు ద్వారా ఆబ్జెక్ట్ రైలును ఉపయోగించి ఆప్టిమైజర్‌ను నియంత్రించవచ్చు. టెన్సర్‌ఫ్లో అనేది ప్రాక్సిమల్ అడాగ్రాడ్ ఆప్టిమైజర్ కోసం అంతర్నిర్మిత API.

డీప్ న్యూరల్ నెట్‌వర్క్‌కు రెగ్యులరైజేషన్‌ను జోడించడానికి, మీరు కింది పారామీటర్‌తో tf.train.ProximalAdagradOptimizer ని ఉపయోగించవచ్చు.

  • అభ్యాస రేటు: లెర్నింగ్_రేట్
  • L1 క్రమబద్ధీకరణ: l1_regularization_stngth
  • L2 క్రమబద్ధీకరణ: l2_regularization_strength
 from sklearn.datasets import fetch_mldata mnist = fetch_mldata(' /Users/Thomas/Dropbox/Learning/Upwork/tuto_TF/data/mldata/MNIST original') print(mnist.data.shape) print(mnist.target.shape) 

అవుట్‌పుట్: | _+_ |

ఓవర్ ఫిట్టింగ్ తగ్గించడానికి ఎంచుకున్న విలువలు మోడల్ ఖచ్చితత్వాన్ని మెరుగుపరచలేదు. మీ మొదటి మోడల్ 96% ఖచ్చితత్వాన్ని కలిగి ఉండగా, L2 రెగ్యులరైజర్ ఉన్న మోడల్ 95% ఖచ్చితత్వాన్ని కలిగి ఉంది. మీరు విభిన్న విలువలతో ప్రయత్నించవచ్చు మరియు అది ఖచ్చితత్వాన్ని ఎలా ప్రభావితం చేస్తుందో చూడవచ్చు.

సారాంశం

ఈ ట్యుటోరియల్‌లో, మీరు న్యూరల్ నెట్‌వర్క్‌ను ఎలా నిర్మించాలో నేర్చుకుంటారు. న్యూరల్ నెట్‌వర్క్ అవసరం:

  • దాచిన పొరల సంఖ్య
  • పూర్తిగా కనెక్ట్ చేయబడిన నోడ్ సంఖ్య
  • యాక్టివేషన్ ఫంక్షన్
  • ఆప్టిమైజర్
  • తరగతుల సంఖ్య

TensorFlow ANN లో, మీరు దీనితో వర్గీకరణ సమస్య కోసం న్యూరల్ నెట్‌వర్క్‌కు శిక్షణ ఇవ్వవచ్చు:

  • tf.estimator.DNN క్లాసిఫైయర్

ఎస్టిమేటర్ పేర్కొనడం అవసరం:

  • ఫీచర్_కాలమ్స్ = ఫీచర్_కాలమ్స్,
  • hide_units = [300, 100]
  • n_క్లాసెస్ = 10
  • మోడల్_దిర్

విభిన్న ఆప్టిమైజర్‌లను ఉపయోగించడం ద్వారా మీరు మోడల్‌ను మెరుగుపరచవచ్చు. ఈ ట్యుటోరియల్‌లో, ఆడమ్ గ్రాడ్ ఆప్టిమైజర్‌ని లెర్నింగ్ రేట్‌తో ఎలా ఉపయోగించాలో నేర్చుకున్నాము మరియు ఓవర్‌ఫిట్‌ని నిరోధించడానికి నియంత్రణను జోడించవచ్చు.