ﻫﻮﺵ ﻣﺼﻨﻮﻋ ﺑﻬﺎﺭ ۱۴۰۰ ﺍﺳﺘﺎﺩ :ﻣﺤﻤﺪﺣﺴﯿﻦ ﺭﻫﺒﺎﻥ ﮔﺮﺩﺁﻭﺭﻧﺪﮔﺎﻥ :ﺍﺣﻤﺪ ﺳﻠﯿﻤ ﺩﺍﻧﺸ ﺎﻩ ﺻﻨﻌﺘ ﺷﺮﯾﻒ ﺩﺍﻧﺸ ﺪﻩﯼ ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ ﺗﻤﺮﯾﻦ ﻋﻤﻠ ﭼﻬﺎﺭﻡ ﺷﺒ ﻪﻫﺎﯼ ﻋﺼﺒﯽ ﻣﻬﻠﺖ ﺍﺭﺳﺎﻝ ۲۳ :ﺧﺮﺩﺍﺩ ۱۴۰۰ ﺗﺸﺨﯿﺺ ﺍﺭﻗﺎﻡ ﺩﺳﺖﻧﻮﯾﺲ ) ۳۰ + ۴۰ﻧﻤﺮﻩ( ﺩﺭ ﺍﯾﻦ ﺗﻤﺮﯾﻦ ،ﻣ ﺧﻮﺍﻫﯿﻢ ﺑﻪ ﮐﻤ ﺷﺒ ﻪﻫﺎﯼ ﻋﺼﺒﯽ ﻣﺴﺌﻠﮥ 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