Uploaded by Ahmad Karimi

NeuralNetworks

advertisement
‫ﻫﻮﺵ ﻣﺼﻨﻮﻋ‬
‫ﺑﻬﺎﺭ ‪۱۴۰۰‬‬
‫ﺍﺳﺘﺎﺩ‪ :‬ﻣﺤﻤﺪﺣﺴﯿﻦ ﺭﻫﺒﺎﻥ‬
‫ﮔﺮﺩﺁﻭﺭﻧﺪﮔﺎﻥ‪ :‬ﺍﺣﻤﺪ ﺳﻠﯿﻤ‬
‫ﺩﺍﻧﺸ ﺎﻩ ﺻﻨﻌﺘ ﺷﺮﯾﻒ‬
‫ﺩﺍﻧﺸ ﺪﻩﯼ ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﺗﻤﺮﯾﻦ ﻋﻤﻠ ﭼﻬﺎﺭﻡ‬
‫ﺷﺒ ﻪﻫﺎﯼ ﻋﺼﺒﯽ‬
‫ﻣﻬﻠﺖ ﺍﺭﺳﺎﻝ‪ ۲۳ :‬ﺧﺮﺩﺍﺩ ‪۱۴۰۰‬‬
‫ﺗﺸﺨﯿﺺ ﺍﺭﻗﺎﻡ ﺩﺳﺖﻧﻮﯾﺲ )‪ ۳۰ + ۴۰‬ﻧﻤﺮﻩ(‬
‫ﺩﺭ ﺍﯾﻦ ﺗﻤﺮﯾﻦ‪ ،‬ﻣ ﺧﻮﺍﻫﯿﻢ ﺑﻪ ﮐﻤ ﺷﺒ ﻪﻫﺎﯼ ﻋﺼﺒﯽ ﻣﺴﺌﻠﮥ ‪ classification‬ﺗﺼﻮﯾﺮ ﺍﺭﻗﺎﻡ ﺩﺳﺖﻧﻮﯾﺲ ﺭﺍ ﺣﻞ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺠﻤﻮﻋﻪ ﺩﺍﺩﻩﻫﺎﯼ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﺩﺭ ﺍﯾﻦ ﻣﺴﺌﻠﻪ‪ ،‬ﺑﺮﮔﺮﻓﺘﻪ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﺩﺍﺩﻩﻫﺎﯼ ‪ MNIST‬ﺍﺳﺖ ﮐﻪ ﺑﺮﺍﯼ ﺍﯾﻦ ﺗﻤﺮﯾﻦ‪ ،‬ﺍﻧﺪﮐ‬
‫ﻣﻮﺭﺩ ﭘﺮﺩﺍﺯﺵ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻪ ﺍﺳﺖ‪ .‬ﭼﻨﺪ ﻧﻤﻮﻧﻪ ﺍﺯ ﺗﺼﺎﻭﯾﺮ ﺍﯾﻦ ﻣﺠﻤﻮﻋﻪ ﺩﺍﺩﻩ ﺩﺭ ﺷ ﻞ ‪ ۱‬ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺷﺪﻩﺍﺳﺖ‪ .‬ﺍﯾﻦ ﻣﺠﻤﻮﻋﻪ‬
‫ﺩﺍﺩﻩ ﺷﺎﻣﻞ ‪ ۹۸۰۰۰‬ﺗﺼﻮﯾﺮ ‪ ۲۸‬ﺩﺭ ‪ ۲۸‬ﺑﺮﺍﯼ ﺁﻣﻮﺯﺵ ﺷﺒ ﻪ )ﺑﺎ ﺑﺮﭼﺴﺐ( ﻭ ‪ ۲۱۰۰۰‬ﺗﺼﻮﯾﺮ )ﺑﺪﻭﻥ ﺑﺮﭼﺴﺐ( ﺑﺮﺍﯼ‬
‫ﺍﺭﺯﯾﺎﺑﯽ ﻣﺪﻝ ﻭ ﻧﻤﺮﻩﺩﻫ ﺍﺳﺖ‪.‬‬
‫ﺷ ﻞ ‪ :۱‬ﭼﻨﺪ ﻧﻤﻮﻧﻪ ﺍﺯ ﺗﺼﺎﻭﯾﺮ ﻣﺠﻤﻮﻋﻪ ﺩﺍﺩﮤ ﻣﺴﺌﻠﻪ‬
‫ﺑﻪ ﻫﻤﺮﺍﻩ ﺍﯾﻦ ﻓﺎﯾﻞ‪ ،‬ﯾ ﻓﺎﯾﻞ ﺟﻮﭘﯿﺘﺮ ﻧﻮﺕﺑﻮﮎ ﻧﯿﺰ ﺩﺭ ﺍﺧﺘﯿﺎﺭﺗﺎﻥ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻪ ﺍﺳﺖ ﮐﻪ ﺑﺎﯾﺴﺘ ﭘﯿﺎﺩﻩﺳﺎﺯﯼ ﻭ ﺁﻣﻮﺯﺵ ﺷﺒ ﻪ‬
‫ﻋﺼﺒﯽ ﺧﻮﺩ ﺭﺍ ﺩﺭ ﺁﻥ ﺍﻧﺠﺎﻡ ﺩﻫﯿﺪ‪ .‬ﺁﻥ ﭼﻪ ﺗﺤﻮﯾﻞ ﺧﻮﺍﻫﯿﺪ ﺩﺍﺩ‪ ،‬ﻓﺎﯾﻞ ﻧﻮﺕﺑﻮﮎ ﻣﺬﮐﻮﺭ ﻭ ﻓﺎﯾﻞ ‪ prediction‬ﺩﺍﺩﻩﻫﺎﯼ ﺍﺭﺯﯾﺎﺑﯽ‬
‫ﺍﺳﺖ‪ .‬ﻓﺎﯾﻞ ‪ hw4_helper.py‬ﻧﯿﺰ ﺣﺎﻭﯼ ﺗﻮﺍﺑﻊ ﮐﻤ ﺑﺮﺍﯼ ﺩﺭﯾﺎﻓﺖ ﺩﯾﺘﺎﺳﺖ ﻭ ﺫﺧﯿﺮﻩ ‪ prediction‬ﺍﺳﺖ ﮐﻪ ﺩﺭ ﺍﺩﺍﻣﻪ‬
‫ﻧﺤﻮﻩ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺁﻥ ﺷﺮﺡ ﺩﺍﺩﻩ ﺷﺪﻩﺍﺳﺖ‪.‬‬
‫‪ ۱۵ + ۱۰) .۱‬ﻧﻤﺮﻩ(‬
‫ﺩﺭﯾﺎﻓﺖ ﺩﺍﺩﻩﻫﺎ‬
‫ﺑﺮﺍﯼ ﺩﺭﯾﺎﻓﺖ ﺩﺍﺩﻩﻫﺎ ﻣ ﺗﻮﺍﻧﯿﺪ ﺍﺯ ﺗﻮﺍﺑﻊ ﺯﯾﺮ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﯿﺪ‪:‬‬
‫‪import hw4_helper‬‬
‫)( ‪x_train , y_train = hw4_helper . get_train_data‬‬
‫)( ‪x_test = hw4_helper . get_test_data‬‬
‫ﺍﯾﻦ ﺗﻮﺍﺑﻊ‪ ،‬ﺑﺮﺍﯼ ﺍﻭﻟﯿﻦ ﺑﺎﺭ ﻓﺎﯾﻞ ﺩﯾﺘﺎﺳﺖ ﺭﺍ ﺩﺍﻧﻠﻮﺩ ﮐﺮﺩﻩ ﻭ ﺩﺭ ﻓﻮﻟﺪﺭ ‪ data_cache‬ﺫﺧﯿﺮﻩ ﻣ ﮐﻨﻨﺪ‪ .‬ﺩﺭ ﺩﻓﻌﺎﺕ ﺑﻌﺪﯼ‬
‫ﭼﻮﻥ ﻓﺎﯾﻞﻫﺎ ﺩﺭ ﺁﻥ ﻣﺴﯿﺮ ﻣﻮﺟﻮﺩ ﺍﻧﺪ‪ ،‬ﺗﺼﺎﻭﯾﺮ ﺑﺪﻭﻥ ﺩﺍﻧﻠﻮﺩ ﻣﺠﺪﺩ ﺍﺯ ﻫﻤﺎﻥﺟﺎ ‪ load‬ﻣ ﺷﻮﻧﺪ‪ .‬ﺩﺭ ﺻﻮﺭﺕ ﺑﺮﻭﺯ‬
‫ﻫﺮﮔﻮﻧﻪ ﻣﺸ ﻞ ﺑﺎ ﺗﻮﺍﺑﻊ ﻣﺬﮐﻮﺭ‪ ،‬ﻣ ﺗﻮﺍﻧﯿﺪ ﻓﺎﯾﻞ ‪ y_train ،x_train‬ﻭ ‪ x_test‬ﺭﺍ ﺩﺍﻧﻠﻮﺩ ﮐﺮﺩﻩ ﻭ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﺎﺑﻊ‬
‫)’‪ np.load(’path/to/file‬ﺁﻥﻫﺎ ﺭﺍ ‪ load‬ﮐﻨﯿﺪ‪.‬‬
‫ﻧﮑﺘﻪ ﻣﻬﻢ‪ :‬ﺑﺮﺍﯼ ﺁﻣﻮﺯﺵ ﺷﺒ ﻪ ﺧﻮﺩ ﻓﻘﻂ ﻭ ﻓﻘﻂ ﺍﺯ ‪ x_train‬ﻭ ‪ y_train‬ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﯿﺪ‪) .‬ﺑﻪ ﻫﯿﭻ ﻭﺟﻪ‬
‫ﺍﺯ ﺧﻮﺩ ﺩﯾﺘﺎﺳﺖ ‪ MNIST‬ﺍﺳﺘﻔﺎﺩﻩ ﻧﮑﻨﯿﺪ‪(.‬‬
‫‪۱‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫ﻃﺮﺍﺣ ﻣﺪﻝ‬
‫ﭘﯿﺸﻨﻬﺎﺩ ﻣ ﺷﻮﺩ ﺑﺮﺍﯼ ﻃﺮﺍﺣ ﻣﺪﻝ ﺧﻮﺩ‪ ،‬ﺍﺯ ﯾ ﺍﺯ ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎﯼ ‪ Tensorflow ،PyTorch‬ﯾﺎ ‪ Keras‬ﺍﺳﺘﻔﺎﺩﻩ‬
‫ﮐﻨﯿﺪ‪ .‬ﻣﺪﻝ ﺷﻤﺎ ﺑﺎﯾﺪ ﯾ ‪ batch‬ﺍﺯ ﺗﺼﺎﻭﯾﺮ ﺭﺍ ﮐﻪ ﺍﺑﻌﺎﺩ ﺁﻥ ‪ B × ۲۸ × ۲۸‬ﺍﺳﺖ ﺭﺍ ﺩﺭﯾﺎﻓﺖ ﮐﺮﺩﻩ ﻭ ﺑﻪ ﺍﺯﺍﯼ ﻫﺮ‬
‫ﺗﺼﻮﯾﺮ‪ ،‬ﯾ ﺑﺮﺩﺍﺭ ‪ ۱۰‬ﺑﻌﺪﯼ ﺑﻌﻨﻮﺍﻥ ﺧﺮﻭﺟ ﺑﺮﮔﺮﺩﺍﻧﺪ ﮐﻪ ﻫﺮ ﻋﻨﺼﺮ ﺁﻥ‪ ،‬ﺍﺣﺘﻤﺎﻝ ﻫﺮﯾ ﺍﺯ ﺑﺮﭼﺴﺐﻫﺎ )ﺍﺭﻗﺎﻡ ‪ ۰‬ﺗﺎ‬
‫‪ (۹‬ﺑﺎﺷﺪ‪) .‬ﺍﺑﻌﺎﺩ ﺧﺮﻭﺟ ﺑﺎﯾﺪ ‪ B × ۱۰‬ﺑﺎﺷﺪ‪(.‬‬
‫ﺳﺎﺩﻩﺗﺮﯾﻦ ﻣﺪﻟ ﮐﻪ ﻣ ﺗﻮﺍﻧﯿﺪ ﻃﺮﺍﺣ ﮐﻨﯿﺪ‪ ،‬ﻓﻘﻂ ﺷﺎﻣﻞ ﻻﯾﻪﻫﺎﯼ ‪ Fully Connected‬ﺍﺳﺖ‪ .‬ﺩﺭ ﺍﯾﻦ ﺣﺎﻟﺖ‪ ،‬ﺑﺎﯾﺪ‬
‫ﺗﺼﺎﻭﯾﺮ ﺧﻮﺩ ﺭﺍ ﺑﺼﻮﺭﺕ ﯾ ﺁﺭﺍﯾﮥ ﯾ ﺑﻌﺪﯼ )ﺑﺎ ‪ ۲۸ × ۲۸ = ۷۸۴‬ﻋﻨﺼﺮ( ﺑﻪ ﻣﺪﻝ ﺑﺪﻫﯿﺪ‪ .‬ﺩﺭ ﻣﺪﻝ ﻧﯿﺰ ﮐﺎﻓﯿﺴﺖ‬
‫ﺑﺼﻮﺭﺕ ﭘﺸﺖ ﺳﺮ ﻫﻢ‪ ،‬ﻻﯾﻪﻫﺎﯼ ﺧﻄ ﺭﺍ ﺑﺎ ﺗﺎﺑﻊ ﻓﻌﺎﻝﺳﺎﺯﯼ ‪ ReLU‬ﻗﺮﺍﺭ ﺩﻫﯿﺪ‪ .‬ﺩﺭ ﺁﺧﺮﯾﻦ ﻻﯾﻪ )ﮐﻪ ﺷﺎﻣﻞ ‪۱۰‬‬
‫ﻧﻮﺭﻭﻥ ﺍﺳﺖ( ﻧﯿﺰ ﺑﺎﯾﺪ ﺍﺯ ﺗﺎﺑﻊ ﻓﻌﺎﻝﺳﺎﺯﯼ ‪ Softmax‬ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﯿﺪ‪ .‬ﺍﯾﻦ ﺗﺎﺑﻊ ﻣﺠﻤﻮﻉ ﺧﺮﻭﺟ ﻫﺎﯼ ﻫﺮ ﻧﻤﻮﻧﻪ ﺭﺍ ﺑﺮﺍﺑﺮ‬
‫‪ ۱‬ﻗﺮﺍﺭ ﻣ ﺩﻫﺪ ﺗﺎ ﺑﺘﻮﺍﻥ ﺑﻪ ﻫﺮ ﯾ ﺍﺯ ﻋﻨﺎﺻﺮ ﺁﻥ ﺑﻌﻨﻮﺍﻥ ﺍﺣﺘﻤﺎﻝ ﻧﮕﺎﻩ ﮐﺮﺩ‪.‬‬
‫ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺷﺒ ﻪﻫﺎﯼ ‪ Fully Connected‬ﻣ ﺗﻮﺍﻧﯿﺪ ﺑﻪ ﺩﻗﺖ ﻣﻮﺭﺩ ﺍﻧﺘﻈﺎﺭ ﺑﺮﺍﯼ ﺩﺭﯾﺎﻓﺖ ﻧﻤﺮﻩ ﮐﺎﻣﻞ ﺩﺭ ﺍﯾﻦ ﻣﺴﺌﻠﻪ‬
‫ﺑﺮﺳﯿﺪ‪ .‬ﺍﻣﺎ ﺑﺮﺍﯼ ﺩﻗﺖﻫﺎﯼ ﺑﺎﻻﺗﺮ ﻭ ﺩﺭﯾﺎﻓﺖ ﻧﻤﺮﻩ ﺍﻣﺘﯿﺎﺯﯼ‪ ،‬ﺑﻬﺘﺮ ﺍﺳﺖ ﺍﺯ ﺷﺒ ﻪﻫﺎﯼ ﻋﺼﺒﯽ ﮐﺎﻧﻮﻟﻮﺷﻨ ﺍﺳﺘﻔﺎﺩﻩ‬
‫ﮐﻨﯿﺪ‪ .‬ﺑﺮﺍﯼ ﺍﯾﻦ ﮐﺎﺭ‪ ،‬ﺍﺑﺘﺪﺍ ﺗﻮﺳﻂ ﻻﺑﻪﻫﺎﯼ ﮐﺎﻧﻮﻟﻮﺷﻨ ﺩﻭﺑﻌﺪﯼ ﻭ ﺗﺎﺑﻊ ﻓﻌﺎﻝﺳﺎﺯﯼ ‪ ،ReLU‬ﺍﺑﻌﺎﺩ ﺗﺼﻮﯾﺮ ﺭﺍ ﮐﺎﻫﺶ‪،‬‬
‫ﻭ ﺗﻌﺪﺍﺩ ﮐﺎﻧﺎﻝﻫﺎﯼ ﺁﻥ ﺭﺍ ﺍﻓﺰﺍﯾﺶ ﺩﻫﯿﺪ‪) .‬ﺑﺮﺍﯼ ﮐﺎﻫﺶ ﺍﺑﻌﺎﺩ ﺗﺼﺎﻭﯾﺮ‪ ،‬ﻫﻢ ﻣ ﺗﻮﺍﻧﯿﺪ ﺍﺯ ﻻﯾﻪﯼ ﮐﺎﻧﻮﻟﻮﺷﻨ ﺑﺎ ‪stride‬‬
‫ﺑﺮﺍﺑﺮ ‪ ۲‬ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﯿﺪ‪ ،‬ﻫﻢ ﻣ ﺗﻮﺍﻧﯿﺪ ﺍﺯ ﻻﯾﻪﻫﺎﯼ ‪ Pooling‬ﻣﺜﻞ ‪ Max Pooling‬ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﯿﺪ‪ (.‬ﭘﺲ ﺍﺯ ﮐﺎﻫﺶ‬
‫ﺍﺑﻌﺎﺩ ﺗﺼﺎﻭﯾﺮ ﻭ ﺍﻓﺰﺍﯾﺶ ﮐﺎﻧﺎﻝﻫﺎﯼ ﺁﻥ ﺑﻪ ﺍﻧﺪﺍﺯﻩ ﮐﺎﻓ ‪ ،‬ﺁﻥ ﺭﺍ ﺑﺼﻮﺭﺕ ﯾ ﺑﻌﺪﯼ ﺩﺭ ﺁﻭﺭﺩﻩ ﻭ ﺗﻮﺳﻂ ﯾ ﺷﺒ ﮥ‬
‫‪ ،Fully Connected‬ﻣﺸﺎﺑﻪ ﭼﯿﺰﯼ ﮐﻪ ﺑﺎﻻﺗﺮ ﺷﺮﺡ ﺩﺍﺩﻩ ﺷﺪ ﺧﺮﻭﺟ ﺭﺍ ﺗﻮﻟﯿﺪ ﮐﻨﯿﺪ‪.‬‬
‫ﻫﻤﭽﻨﯿﻦ ﺑﺮﺍﯼ ﺟﻠﻮﮔﯿﺮﯼ ﺍﺯ ‪ ،overfitting‬ﻣ ﺗﻮﺍﻧﯿﺪ ﺍﺯ ﻻﯾﻪﻫﺎﯼ ‪ Dropout‬ﻭ ‪ Batch Normalization‬ﺩﺭ ﻣﯿﺎﻥ‬
‫ﻻﯾﻪﻫﺎﯼ ﺷﺒ ﻪ ﺧﻮﺩ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﯿﺪ‪ .‬ﺩﺭ ﺍﯾﻦ ﻟﯿﻨﮏ‪ ،‬ﻣ ﺗﻮﺍﻧﯿﺪ ﯾ ﭘﯿﺎﺩﻩﺳﺎﺯﯼ ﺑﺴﯿﺎﺭ ﺳﺎﺩﻩ ﺍﺯ ﯾ ﺷﺒ ﻪ ﻋﺼﺒﯽ‬
‫ﮐﺎﻧﻮﻟﻮﺷﻨ ﺩﺭ ﮐﺘﺎﺑﺨﺎﻧﻪ ‪ PyTorch‬ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﮐﻨﯿﺪ‪ .‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻻﯾﻪﻫﺎﯼ ﮐﺎﻧﻮﻟﻮﺷﻨ ﻭ ‪Pooling‬‬
‫ﺩﺭ ﻣﺪﻝ‪ ،‬ﻧﻤﺮﻩ ﺍﻣﺘﯿﺎﺯﯼ ﺩﺍﺭﺩ‪.‬‬
‫‪ ۱۰) .۲‬ﻧﻤﺮﻩ(‬
‫ﺗﺎﺑﻊ ﻫﺰﯾﻨﻪ ﻭ ﺭﻭﺵ ﺑﻬﯿﻨﻪﺳﺎﺯﯼ‬
‫ﺑﺮﺍﯼ ﻣﺴﺌﻠﮥ ‪ classification‬ﭼﻨﺪ ﮐﻼﺳﻪ‪ ،‬ﻋﻤﻮﻣﺎﹰ ﺍﺯ ﺗﺎﺑﻊ ﻫﺰﯾﻨﮥ ‪ cross­entropy‬ﺍﺳﺘﻔﺎﺩﻩ ﻣ ﺷﻮﺩ‪ .‬ﺭﻭﺵﻫﺎﯼ‬
‫ﺑﻬﯿﻨﻪﺳﺎﺯﯼ ﻣﺘﻨﻮﻋ ﻧﯿﺰ ﻗﺎﺑﻞ ﺍﺳﺘﻔﺎﺩﻩ ﺍﻧﺪ‪ ،‬ﮐﻪ ﺍﺯ ﺟﻤﻠﻪ ﺁﻥﻫﺎ ﻣ ﺗﻮﺍﻥ ﺑﻪ ‪ Adam‬ﻭ ‪ SGD‬ﺍﺷﺎﺭﻩ ﮐﺮﺩ‪.‬‬
‫ﺁﻣﻮﺯﺵ ﺷﺒ ﻪ‬
‫ﺭﺍﯼ ﺁﻣﻮﺯﺵ ﺷﺒ ﻪ ﺧﻮﺩ‪ ،‬ﺑﺨﺶ ﮐﻮﭼ ﺍﺯ ﺩﺍﺩﻩﻫﺎﯼ ﺁﻣﻮﺯﺷ )ﻣﺜﻼ ‪ ۱۰‬ﺩﺭﺻﺪ( ﺭﺍ ﺑﺮﺍﯼ ﺍﻋﺘﺒﺎﺭﺳﻨﺠ )‪(validation‬‬
‫ﺩﺭ ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ‪) .‬ﻣ ﺗﻮﺍﻧﯿﺪ ﺍﺯ ﺍﯾﻦ ﺗﺎﺑﻊ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﯿﺪ‪ (.‬ﺳﭙﺲ ﺩﺭ ﻫﺮ ‪ ،epoch‬ﺩﺍﺩﻩﻫﺎﯼ ﺁﻣﻮﺯﺷ ﺭﺍ ﺑﻪ ﺗﻌﺪﺍﺩﯼ‬
‫‪ batch‬ﺗﻘﺴﯿﻢ ﮐﺮﺩﻩ‪ ،‬ﻭ ﻫﺮ ﯾ ﺭﺍ ﺑﻪ ﻣﺪﻝ ﺩﻫﯿﺪ‪ .‬ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﺎﺑﻊ ﻫﺰﯾﻨﻪ‪ ،‬ﻫﺰﯾﻨﮥ ﺧﺮﻭﺟ ﻣﺤﺎﺳﺒﻪ ﺷﺪﻩ ﺭﺍ ﺑﺪﺳﺖ‬
‫ﺁﻭﺭﯾﺪ ﻭ ﻣﯿﺎﻧﮕﯿﻦ ﺁﻥ ﺭﺍ ﺑﻌﻨﻮﺍﻥ ﻫﺰﯾﻨﮥ ﺁﻥ ‪ epoch‬ﺩﺭ ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ‪ .‬ﺳﭙﺲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺭﻭﺵ ﺑﻬﯿﻨﻪﺳﺎﺯﯼ‪ ،‬ﻭﺯﻥﻫﺎﯼ‬
‫ﻣﺪﻝ ﺧﻮﺩ ﺭﺍ ﺑﻪﺭﻭﺯﺭﺳﺎﻧ ﮐﻨﯿﺪ‪ .‬ﻋﻼﻭﻩ ﺑﺮ ﻣﺤﺎﺳﺒﮥ ﻫﺰﯾﻨﮥ ﻣﯿﺎﻧﮕﯿﻦ ﻫﺮ ‪ ،epoch‬ﺩﻗﺖ )ﻧﺴﺒﺖ ﺗﻌﺪﺍﺩ ﺗﺸﺨﯿﺺﻫﺎﯼ‬
‫ﺩﺭﺳﺖ ﺑﻪ ﮐﻞ ﺗﺼﺎﻭﯾﺮ( ﺭﺍ ﻧﯿﺰ ﻣﺤﺎﺳﺒﻪ ﮐﺮﺩﻩ ﻭ ﺩﺭ ﯾ ﻟﯿﺴﺖ ﺫﺧﯿﺮﻩ ﮐﻨﯿﺪ‪.‬‬
‫ﺩﺭ ﻫﺮ ‪ epoch‬ﭘﺲ ﺍﺯ ﺁﻣﻮﺯﺵ ﺷﺒ ﻪ‪ ،‬ﻫﺰﯾﻨﻪ ﻭ ﺩﻗﺖ ﺭﺍ ﺭﻭﯼ ﺩﺍﺩﻩﻫﺎﯼ ﺍﻋﺘﺒﺎﺭﺳﻨﺠ ﻧﯿﺰ ﺍﻧﺠﺎﻡ ﺩﻫﯿﺪ ﻭ ﻧﺘﺎﯾﺞ ﺭﺍ ﺫﺧﯿﺮﻩ‬
‫ﮐﻨﯿﺪ‪ .‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺩﺭ ﺍﻋﺘﺒﺎﺭﺳﻨﺠ ‪ ،‬ﺑﻪ ﻫﯿﭻ ﻭﺟﻪ ﺍﺯ ﺑﻬﯿﻨﻪﺳﺎﺯﯼ ﺍﺳﺘﻔﺎﺩﻩ ﻧﮑﻨﯿﺪ‪.‬‬
‫‪۲‬‬
‫‪ ۵) .۳‬ﻧﻤﺮﻩ(‬
‫ﺭﺳﻢ ﻧﻤﻮﺩﺍﺭ ﺁﻣﻮﺯﺵ ﺷﺒ ﻪ‬
‫ﻣﻄﺎﺑﻖ ﺷ ﻞ ‪ ،۲‬ﻧﻤﻮﺩﺍﺭﻫﺎﯼ ﺭﻭﻧﺪ ﭘﯿﺶﺭﻭﯼ ﻫﺰﯾﻨﻪ ﻭ ﺩﻗﺖ ﻣﺪﻝ ﺭﻭﯼ ﺩﺍﺩﻩﻫﺎﯼ ﺁﻣﻮﺯﺷ ﻭ ﺍﻋﺘﺒﺎﺭﺳﻨﺠ ﻣﺪﻝ ﺭﺍ ﺭﺳﻢ‬
‫ﮐﻨﯿﺪ‪.‬‬
‫ﺷ ﻞ ‪ :۲‬ﻧﻤﻮﺩﺍﺭ ﺁﻣﻮﺯﺵ ﺷﺒ ﻪ‬
‫‪ ۵) .۴‬ﻧﻤﺮﻩ(‬
‫ﻧﻤﺎﯾﺶ ﻧﻤﻮﻧﻪﻫﺎﯼ ﺍﺷﺘﺒﺎﻩ ﺗﺸﺨﯿﺺ ﺩﺍﺩﻩ ﺷﺪﻩ‬
‫ﻣﻄﺎﺑﻖ ﺷ ﻞ ‪ ۱۰ ،۳‬ﻧﻤﻮﻧﻪ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﺩﺍﺩﻩﻫﺎﯼ ﺍﻋﺘﺒﺎﺭﺳﻨﺠ ﺧﻮﺩ ﺭﺍ ﮐﻪ ﻣﺪﻟﺘﺎﻥ ﺑﻪ ﺍﺷﺘﺒﺎﻩ ﺁﻥﻫﺎ ﺭﺍ ﺗﺸﺨﯿﺺ ﻣ ﺩﻫﺪ‪،‬‬
‫ﺑﻪ ﻫﻤﺮﺍﻩ ﺑﺮﭼﺴﺐ ﻭﺍﻗﻌ ﻭ ﺑﺮﭼﺴﺒﯽ ﮐﻪ ﻣﺪﻝ ﺑﻪ ﺁﻥ ﻣ ﺯﻧﺪ‪ ،‬ﻧﻤﺎﯾﺶ ﺩﻫﯿﺪ‪.‬‬
‫ﺷ ﻞ ‪ :۳‬ﻧﻤﻮﻧﻪﻫﺎﯼ ﺍﺷﺘﺒﺎﻩ ﺗﺸﺨﯿﺺ ﺩﺍﺩﻩ ﺷﺪﻩ‬
‫‪۳‬‬
‫‪ ۱۵ + ۱۰) .۵‬ﻧﻤﺮﻩ(‬
‫ﺍﺟﺮﺍﯼ ﻣﺪﻝ ﺭﻭﯼ ﺩﺍﺩﻩﻫﺎﯼ ﺗﺴﺖ ﻭ ﺫﺧﯿﺮﻩ ﺧﺮﻭﺟ ﺁﻥ ﺩﺭ ﻓﺎﯾﻞ‬
‫ﺩﺭ ﻧﻬﺎﯾﺖ‪ ،‬ﻣﺪﻝ ﺑﺎ ﺑﯿﺸﺘﺮﯾﻦ ﺩﻗﺖ ﺭﻭﯼ ﺩﺍﺩﻩﻫﺎﯼ ﺍﻋﺘﺒﺎﺭﺳﻨﺠ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﺮﺩﻩ‪ ،‬ﻭ ﺧﺮﻭﺟ ﺁﻥ ﺑﻪ ﺍﺯﺍﯼ ﺩﺍﺩﻩﻫﺎﯼ‬
‫ﺗﺴﺖ ﺑﺪﺳﺖ ﺁﻭﺭﯾﺪ‪ .‬ﺧﺮﻭﺟ ﺍﺣﺘﻤﺎﻝ ﺭﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﺎﺑﻊ ‪ argmax‬ﺑﻪ ﺑﺮﭼﺴﺐ ﺗﺒﺪﯾﻞ ﮐﻨﯿﺪ‪) .‬ﺑﻪ ﺍﺯﺍﯼ ﻫﺮ ﻧﻤﻮﻧﻪ‪،‬‬
‫ﯾ ﻋﺪﺩ ﺑﯿﻦ ‪ ۰‬ﺗﺎ ‪ ۹‬ﺑﻪ ﺁﻥ ﻧﺴﺒﺖ ﺩﻫﯿﺪ‪ (.‬ﺳﭙﺲ ﺑﺮﺩﺍﺭ ﯾ ﺑﻌﺪﯼ ﺣﺎﺻﻞ ﺭﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﺎﺑﻊ ﺯﯾﺮ ﺫﺧﯿﺮﻩ ﮐﻨﯿﺪ‪.‬‬
‫) ‪hw4_helper . export_prediction ( prediction‬‬
‫‪1‬‬
‫ﺍﯾﻦ ﺗﺎﺑﻊ‪ ،‬ﻓﺎﯾﻞ ‪ prediction.npy‬ﺭﺍ ﺩﺭ ﮐﻨﺎﺭ ﻧﻮﺕﺑﻮﮎ ﻣ ﺳﺎﺯﺩ‪ .‬ﺍﯾﻦ ﻓﺎﯾﻞ ﺭﺍ ﺑﻪ ﻫﻤﺮﺍﻩ ﻧﻮﺕﺑﻮﮎ ﻧﻬﺎﯾﯽ ﺑﻪ ﻓﺮﻣﺖ‬
‫‪ zip‬ﺩﺭ ﺁﻭﺭﺩﻩ ﻭ ﺩﺭ ﮐﻮﺋﺮﺍ ﺑﺎﺭﮔﺬﺍﺭﯼ ﮐﻨﯿﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﺑﺎ ﺍﺟﺮﺍﯼ ﺗﺎﺑﻊ ﺯﯾﺮ‪ ،‬ﻣ ﺗﻮﺍﻧﯿﺪ ﺩﻗﺖ ﺗﺸﺨﯿﺺ ﻣﺪﻟﺘﺎﻥ ﺭﻭﯼ ﺩﺍﺩﮤ‬
‫ﺗﺴﺖ ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﮐﻨﯿﺪ‪) .‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ ﮐﻪ ﺍﯾﻦ ﺗﺎﺑﻊ‪ ،‬ﺑﺮﺩﺍﺭ ﺗﺸﺨﯿﺺ )‪ (prediction‬ﺷﻤﺎ ﺭﺍ ﺑﻪ ﯾ ‪ API‬ﺍﺭﺳﺎﻝ ﮐﺮﺩﻩ‬
‫ﻭ ﻧﺘﯿﺠﻪ ﺭﺍ ﻧﻤﺎﯾﺶ ﻣ ﺩﻫﺪ‪ .‬ﺑﺮﺍﯼ ﺟﻠﻮﮔﯿﺮﯼ ﺍﺯ ﺷﻠﻮﻏ ﺳﺮﻭﺭ‪ ،‬ﺩﺭ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﯾﻦ ‪ API‬ﺻﺮﻓﻪﺟﻮﯾﯽ ﻧﻤﺎﯾﯿﺪ‪(.‬‬
‫) ‪hw4_helper .test( prediction‬‬
‫ﻧﮑﺘﻪ ﻣﻬﻢ‪ :‬ﺑﺪﯾﻬ ﺍﺳﺖ ﮐﻪ ﺻﺮﻑ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﺎﺑﻊ ‪ test‬ﺑﻪ ﻣﻨﺰﻟﮥ ﻧﻤﺮﻩﺩﻫ ﺑﻪ ﺷﻤﺎ ﻧﯿﺴﺖ ﻭ ﺷﻤﺎ ﺣﺘﻤﺎ ﺑﺎﯾﺴﺘ‬
‫ﻓﺎﯾﻞ ‪ prediction.npy‬ﮐﻪ ﺗﻮﺳﻂ ﺗﺎﺑﻊ ‪ export_prediction‬ﺗﻮﻟﯿﺪ ﻣ ﺷﻮﺩ ﺭﺍ ﺩﺭ ﻓﺎﯾﻞ ﺯﯾﭗ ﻧﻬﺎﯾﯽ ﺧﻮﺩ ﺩﺭ ﮐﻮﺋﺮﺍ‬
‫ﺑﺎﺭﮔﺬﺍﺭﯼ ﻧﻤﺎﯾﯿﺪ‪ .‬ﻧﻤﺮﻩ ﺷﻤﺎ ﺍﺯ ﺍﯾﻦ ﺑﺨﺶ‪ ،‬ﻃﺒﻖ ﻓﺮﻣﻮﻝ ﺯﯾﺮ ﻣﺤﺎﺳﺒﻪ ﺧﻮﺍﻫﺪ ﺷﺪ‪ .‬ﯾﻌﻨ ﺑﺎ ﺩﻗﺖ ‪ ۸۵‬ﺩﺭﺻﺪ‪ ،‬ﮐﻞ ﻧﻤﺮﻩ‬
‫ﺍﺟﺒﺎﺭﯼ )‪ ۱۰‬ﻧﻤﺮﻩ( ﺍﯾﻦ ﺑﺨﺶ ﺭﺍ ﺧﻮﺍﻫﯿﺪ ﮔﺮﻓﺖ‪ ،‬ﻭ ﺑﺎ ﺍﻓﺰﺍﯾﺶ ﺩﻗﺖ ﺗﺎ ‪ ۱۰۰‬ﺩﺭﺻﺪ‪ ،‬ﻣ ﺗﻮﺍﻧﯿﺪ ﻧﻤﺮﻩ ﺍﯾﻦ ﺑﺨﺶ ﺭﺍ‬
‫ﺑﻪ ‪ ۲۵‬ﺑﺮﺳﺎﻧﯿﺪ‪.‬‬
‫‪۰٫۰۰۸۸x۲ − ۰٫۶۳x‬‬
‫‪۴‬‬
‫‪1‬‬
Download